Convert.exe Like ?
Pada artikel sebelumnya, dibahas tentang bagaimana memanfaatkan tool convert.exe untuk mengubah format file DFM, baik dari text ke binary maupun sebaliknya. Nah pada artikel ini akan dibahas bagaimana melakukan konversi tersebut dengan menggunakan Delphi, tentu saja masih dengan fasilitas yang sederhana dan minim.
Deteksi Jenis Format
Nah karena format file DFM ada 2 (dua), yaitu text dan binary, maka tool harus mampu melakukan pendeteksian jenis format file yang diberikan dan kemudian melakukan konversi ke format yang sesuai, apakah text->binary atau binary-text.
Format binary ditandai dengan 3 byte $FF $0A $00 pada awal file, sedangkan format text ditandai dengan 6 karakter ‘object’ pada awal file.
Fungsi Konversi
Untuk melakukan konversi text->binary, Delphi sudah menyediakan fungsi ObjectTextToBinary dan ObjectTextToResource, dan fungsi ObjectBinaryToText dan ObjectResourceToText untuk konversi binary->text.
Selengkapnya dapat disimak pada kode berikut:
program MyConvert; {$APPTYPE CONSOLE} uses SysUtils, Classes; var FileName : string; ObjDFM : TMemoryStream; ObjOut : TMemoryStream; IsBinary : Boolean; Header: array[0..2] of Byte; begin FileName := ParamStr(1); ObjDFM := TMemoryStream.Create; ObjDFM.LoadFromFile(FileName); ObjDFM.Position := 0; ObjDFM.Read(Header, SizeOf(Header)); IsBinary := (Header[0] = $FF) and (Header[1] = $0A) and (Header[2] = $00); ObjDFM.Seek(0, soFromBeginning); ObjOut := TMemoryStream.Create; if IsBinary then ObjectResourceToText(ObjDFM, ObjOut) else ObjectTextToResource(ObjDFM, ObjOut); ObjOut.Position := 0; ObjOut.SaveToFile(FileName); ObjOut.Free; ObjDFM.Free; end.
Catatan: kode diatas masih sederhana, bersifat ‘proof of concept’ aja, belum ada error / exception handling. Hal ini untuk mempermudah pemahaman dan mempersingkat kode. 🙂
Convert.exe Like ?
Nah, tool yang sudah kita buat ini apakah secara ‘fungsi’ sama dengan Convert.exe atau bukan, Anda sendiri lah yang memutuskan. Yang jelas saya hanya ingin menunjukkan saja bahwa pembuatan tool tersebut relatif cukup mudah.
Salam.