В общем сложности... Все прекрасно работает если не пихать в функцию. Щас поясню...
Есть файл
config.ini на диске
C:\ (
С:\config.ini) со следующим листингом:
Если использовать такой код:
CODE:char str[255];
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
GetPrivateProfileString ("Default", "Name", 0, address (#str[0]), 255, "C:\config.ini");
string name = format (#str[0]);
messagebox (name);
то в переменной
name получается верное значение - "
Bot". Оно и выводится сообщением
messagebox.
Но если запихнуть все это в функцию и вызвать ее:
CODE:function iniread (string ini_key, string ini_section, string ini_filename)
{
char str[255];
if (ini_section == "") ini_section = "Default";
if (ini_filename == "") ini_filename = "C:\config.ini";
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
GetPrivateProfileString (ini_section, ini_key, 0, address (#str[0]), 255, ini_filename);
return (format (#str[0]));
}
string name = iniread ("Name");
messagebox (name);
то в результате
name имеет пустое знеачение. Где я ошибся?
(Добавление)
Блин я как всегда!
Надо выводить
return'ом переменную. Отбой паники! Простите, был напуган =D
Вот верный код:
CODE:function iniread (string ini_key, string ini_section, string ini_filename)
{
char str[255];
if (ini_section == "") ini_section = "Default";
if (ini_filename == "") ini_filename = "C:\config.ini";
external (INT, "GetPrivateProfileString", "GetPrivateProfileStringA", "kernel32.dll");
GetPrivateProfileString (ini_section, ini_key, 0, address (#str[0]), 255, ini_filename);
string str_return = format (#str[0]);
return str_return;
}
string name = iniread ("Name");
messagebox (name);