Перейти к содержимому

Фотография

Вопрос по dll


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 RussianTM

RussianTM

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 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))
  • 0

#2 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 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
  • 0

#3 RussianTM

RussianTM

    Новый участник

  • Members
  • Pip
  • 3 сообщений

Отправлено 28 июля 2010 - 11:36

SergeyP - пробовал - то же самое выдает, в чем может быть причина ?
  • 0

#4 SergeyP

SergeyP

    Специалист

  • Members
  • PipPipPipPipPip
  • 651 сообщений
  • Город:Москва

Отправлено 28 июля 2010 - 12:01

SergeyP - пробовал - то же самое выдает, в чем может быть причина ?


К сожалению, я не смогу проверить Ваш код..
Но, скорее всего, я накосячил в коде : надо было все строковые константы поместить в двойные кавычки.

Попробуйте сделать это и снова проверить код..
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных