Saya mempunyai program-program lama yang mempunyai library jaman old juga. Waktu itu saya masih memakai delphi 7. Ketika mengganti ke Delphi 2009, masalah timbul. Salah satunya seperti ini:
function Oem2Ansi(const aStr: string): string;
var
P: pChar;
begin
if (Length(aStr) > 0) then begin
P := AllocMem(Length(aStr) + 1);
try
if OemToChar(pChar(aStr), P) then Result := P;
finally
ReallocMem(P, 0);
end;
end
else Result := '';
end;
Saat saya menjalankan program dengan library diatas, terdapat pesan kesalahan:
Incompatible type: 'Char' and 'AnsiChar'
Permasalahan ini akibat Delphi tidak sopan karena tidak memberitahu saya bahwa Delphi 2009 sistemnya berubah ke Unicode. (Padahal apa repotnya sih cuma sekedar SMS atau WA?)
Jika Anda mempunyai masalah seperti diatas, gampang saja. Ubah program diatas menjadi seperti ini:
function Oem2Ansi(const aStr: Ansistring): Ansistring;
var
P: pAnsiChar;
begin
if (Length(aStr) > 0) then begin
P := AllocMem(Length(aStr) + 1);
try
if OemToCharA(pAnsiChar(aStr), P) then Result := P;
finally
ReallocMem(P, 0);
end;
end
else Result := '';
end;
Intinya, ubah String menjadi AnsiString. pChar menjadi pAnsiChar. Dan ubah OemToChar menjad OemToCharA.
0 comments:
Posting Komentar