Вопрос по dll
#1
Отправлено 28 июля 2010 - 11:12
function main(){
def_dll = DLL.DefineDLL('kernel32.dll');
lib_kernel32 = DLL.Load("kernel32.dll");
def_dll.DefineProc("GetPrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4, vt_lpstr, vt_i4);
def_dll.DefineProc("WritePrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4);
lp_ReturnedString = DLL.New("LPSTR", 255);
res = lib_kernel32.GetPrivateProfileStringA('General', 'CompanyName', 'Не найден', lp_ReturnedString, 255, 'c:\\test.ini');
Log["Message"](lp_ReturnedString.text, "Extended Подключение DLL");
Log["Message"](res, "Extended Подключение DLL");
}
содержание test.ini
[General]
CompanyName=Test
LogMode=1
Логи:
Message
ð%¸ðH·
4
Вопрос - почему кодировка получилась кривая ? (windows7 (64))
#2
Отправлено 28 июля 2010 - 11:27
написал тестовую функцию на с++
function main(){
def_dll = DLL.DefineDLL('kernel32.dll');
lib_kernel32 = DLL.Load("kernel32.dll");
def_dll.DefineProc("GetPrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4, vt_lpstr, vt_i4);
def_dll.DefineProc("WritePrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4);
lp_ReturnedString = DLL.New("LPSTR", 255);
res = lib_kernel32.GetPrivateProfileStringA('General', 'CompanyName', 'Не найден', lp_ReturnedString, 255, 'c:\\test.ini');
Log["Message"](lp_ReturnedString.text, "Extended Подключение DLL");
Log["Message"](res, "Extended Подключение DLL");
}
содержание test.ini
[General]
CompanyName=Test
LogMode=1
Логи:
Message
ð%¸ðH·
4
Вопрос - почему кодировка получилась кривая ? (windows7 (64))
Попробуйте так
function main(){ def_dll = DLL.DefineDLL('kernel32.dll'); lib_kernel32 = DLL.Load("kernel32.dll"); def_dll.DefineProc("GetPrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4, vt_lpstr, vt_i4); def_dll.DefineProc("WritePrivateProfileStringA", vt_lpstr, vt_lpstr, vt_lpstr, vt_lpstr, vt_i4); lp_ReturnedString = DLL.New("LPSTR", 255); lp_Section = DLL.New("LPSTR", 255); lp_Section.Text = 'General' lp_Parameter = DLL.New("LPSTR", 255); lp_Parameter.Text = 'CompanyName' lp_Default = DLL.New("LPSTR", 255); lp_Default.Text = 'Не найден' res = lib_kernel32.GetPrivateProfileStringA(lp_Section, lp_Parameter, lp_Default, lp_ReturnedString, 255, 'c:\\test.ini'); Log["Message"](lp_ReturnedString.text, "Extended Подключение DLL"); Log["Message"](res, "Extended Подключение DLL"); }
PS
Я уже приводил аналогичный код здесь для VB
#3
Отправлено 28 июля 2010 - 11:36
#4
Отправлено 28 июля 2010 - 12:01
SergeyP - пробовал - то же самое выдает, в чем может быть причина ?
К сожалению, я не смогу проверить Ваш код..
Но, скорее всего, я накосячил в коде : надо было все строковые константы поместить в двойные кавычки.
Попробуйте сделать это и снова проверить код..
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных