Mengatasi Masalah Oem2Ansi di Program Lama


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.

Mengatasi Masalah Oem2Ansi di Program Lama Rating: 4.5 Diposkan Oleh: Good Dreamer

0 comments:

Posting Komentar

Diberdayakan oleh Blogger.