Jos nigde nisam video kako exportujes funkciju iz Cbuildera,
i najverovatnije to je exportuje kao cdecl a ne stdcall,
kao sto si rekao prvi put se funkcija izvrsi a drugi put nece.
to je zato sto ti je pozivas kao stdcall, a funkcija je najverovatnije exportirana
nesto slicno ovome:
Code:
extern "C" AnsiString __declspec (dllexport) ChooseName();
kod stdcall rutina sama skida parametre sa steka, a kod cdecl proces koji poziva funkciju mora iscistiti stek. bas zbog toga prvi put sve prodje a drug put popuca.
Umesto ansistring declariraj funkcije kao char*, a kad iz zoves pozovi ih ovako:
Code:
Function ChooseName():Pchar;cdecl;external 'cdll.dll' name 'ChooseName';
Ali ako si vec promenio export da bude stdcall onda si zavrsio pola posla,
samo ti jos treba da parametri koje vracaju ili primaju budu char* a iz delphija da ih zoves kao PChar :) To sto sam pomenu o pozivanju destruktora ne treba ti,
posto kad obrises pointer C++ sam pozove destruktor, ali ako toliko hoces mozes i to da probas ovako:
.....
DLLForm->Free(); // pozovi destruktor objekta
delete DLLForm; // pa onda obrisi pointer
...
Ali naci ces puno textova gde pise da to NE VALJA ! da kad pozoves delete na pointer, on sam izvrsi destruktor objekta
pozdrav
People who think they know everything tend to irritate those of us who do.