![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите с конвертацией, пожалуйста.
Starkom © (2002-09-09 16:02:00)есть такой код на дельфи 5:
var libHnd, i:integer;
proc:proctype;
p:APars;
begin
libHnd := LoadLibrary("lala.dll");
proc := procType(GetProcAddress (libHnd, PChar("InitLala")));
GetMem(p,10*sizeof(Pointer));
for i:=0 to 9 do
begin
GetMem(p^[i],10);
StrPCopy(p^[i],IntToStr(i));
end;
proc(p);
end;
переписал его под билдер:
HINSTANCE libHnd = LoadLibrary("lala.dll");
procType proc = procType(GetProcAddress (libHnd, PChar("InitLala")));
void** p = new void* [10];
for (int i = 0; i < 10 ; i++)
{
p[i] = new char* [10];
strcpy((char*)p[i],IntToStr(i).c_str());
}
proc(p);
Код на билдере валится при вызове proc(). Я чего-то не понимаю. Подскажите, чего?
Starkom (2002-09-09 16:16:00) [1]ужассссс
2 Alx2: great 10x!!! А я все в коде ошибку искал. Мда, конец рабочего дня...
Alx2 (2002-09-09 16:12:00) [2]> __fastcall
Вот-вот :)) а надо, получается cdecl. Или вместо cdecl __fastcall
Starkom (2002-09-09 16:09:00) [3]функция InitLala отписана на дельфи 5:
function InitDebug(pars:Apars):pchar;cdecl;
кстати,
params = array[0..10]of pointer;
Apars = ^params;
Starkom (2002-09-09 16:09:00) [4]так еще:
typedef PChar __fastcall(*procType)(void** par);
Alx2 (2002-09-09 16:08:00) [5]if proc<>nil - проверка.
Также проверить соглашение о вызовах (спецификатор stdcall, например)
MBo (2002-09-09 16:06:00) [6]stdcall или другой модификатор указан правильно?