Membuat fungsi string Inno Setup dll dengan Delphi

Mulai versi 5.3.0 Inno Setup membuat versi yang berbeda yaitu Unicode dan non Unicode.  Karena perbedaan itulah untuk membuat file Dynamic Linking Library(dll) di Delphi juga harus menyesuaikan.
Untuk non unicode anda harus menggunakan PAnsiChar agar tipe data string bisa terbaca dengan baik di Inno Setup.

Berikut contoh membaca nilai Tstrings dari delphi ke Inno Setup:
Contoh untuk Non Unicode


function nonunicodeinnotstrings(buffer:PAnsiChar;MAXLEN:DWORD):DWORD;stdcall;
var ls:TStrings;
begin
ls:=TStringList.Create;
ls.Add('cah nggilani');
ls.Add('ngombe congyang tekan sampangan');
System.AnsiStrings.StrLCopy(buffer,PAnsiChar(AnsiString(ls.Text)),MAXLEN-1);
Result:=System.AnsiStrings.StrLen(buffer);
end;

Untuk unicode karena setiap karakter mengalokasikan 4 bytes memori anda bisa menggunakan Pchar:


function unicodeinnotstrings(buffer:PChar;MAXLEN:DWORD):DWORD;stdcall;
var ls:TStrings;
begin
ls:=TStringList.Create;
ls.Add('cah nggilani');
ls.Add('ngombe congyang tekan sampangan');
System.SysUtils.StrLCopy(buffer,PChar(ls.Text),MAXLEN-1);
Result:=System.SysUtils.StrLen(buffer);
end;

Tambahkan unit System.AnsiStrings dan WinApi.Windows di uses delphi anda.

Cara memanggil fungsi tersebut di Inno Setup:


[Code]

function nonunicodeinnotstrings(buf:string;Maxlen:integer):integer;
external 'nonunicodeinnotstrings@files:Innosetuplib.dll stdcall delayload setuponly';
function InitializeSetup: Boolean;
var
  S: TStringList;
  sbuf:string;

 i,lenstr,maxlen:integer;
begin
maxlen:=255;
SetLength(sbuf,maxlen);
     lenstr:=unicodeinnotstrings(sbuf,maxlen);
Setlength(sbuf,lenstr);
     S:=Tstringlist.create;
     S.text:=sbuf;
     for I:=0 to s.count-1 do
     begin
    MsgBox(S[I], mbInformation, MB_OK);
     end;
end;

Catatan:
Variabel maxlen tersebut menyesuaikan jumlah karakter yang akan dibaca. Jika sekiranya teks yang dibaca cukup banyak anda juga harus mengalokasikan ukuran buffer dalam jumlah besar juga.

anasmbahdien

Seorang programmer yang menguasai bahasa pemograman Delphi, VB.NET, PHP dan Android. Untuk hasil karya kunjungi mogotekno.com

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *