Delphi 7 ile geliştirilmiş bir uygulamayı delphi 2010 ile derlediğimde program eğer dışarıdan bir dll kullanıyor ve dll dönüş değeri PChar ise data bozuk geliyor
Eğer dönüş değeri int yada longint olursa sorun olmuyor
Bozuk gelen karakterler ise çince gibi tuhaf karakterler içeriyor.
Dll tanımlama şeklim
Kod: Tümünü seç
unit X_Dll;
interface
const
XDLL_TANIM = 'XXXX.dll';
function Fnc1 (prm1:LongInt):LongInt; cdecl; External XDLL_TANIM name 'Fnc1'; // Dll içerisindeki orjinal hali
function Fnc2 (Prm1:LongInt;Prm2:LongInt):PChar; cdecl; External XDLL_TANIM name 'Fnc2'; // Dll içerisindeki orjinal hali
Farklı şekilde deneme örneklerim
// function Fnc1 (prm1:LongInt):LongInt; stdcall; External XDLL_TANIM name 'Fnc1';
// function Fnc2 (Prm1:LongInt;Prm2:LongInt):PChar; stdcall; External XDLL_TANIM name 'Fnc2';
// function Fnc2 (Prm1:LongInt;Prm2:LongInt):String; cdecl; External XDLL_TANIM name 'Fnc2';
// function Fnc2 (Prm1:LongInt;Prm2:LongInt):String; stdcall; External XDLL_TANIM name 'Fnc2';
..
..
Kod: Tümünü seç
..
..
implementation
uses
X_Dll,
Procedure....
..
..
Kod: Tümünü seç
Procedure...
var
iResult : LongInt;
sResult : String;
pResult := PChar;
begin
...
iResult := Fnc1(1); // Sonuç Doğru çalışıyor
sResult := Fnc2(1,2); // Sonuç Hatalı geliyor
sResult := PChar(Fnc2(1,2)); // Sonuç Hatalı geliyor
pResult := PChar(Fnc2(1,2)); // Sonuç Hatalı geliyor
Teşekkürler