dfm格式轉換 將二進位制格式轉為文字格式

2021-09-30 03:03:11 字數 1465 閱讀 2973

在:dfm檔案與xml檔案互轉

中,用到的dfm檔案必須為文字格式, 如果是二進位制格式, 處理就會出錯.

但是在處理中如何判斷dfm是二進位制檔案, 而且再將二進位制檔案轉為文字格式呢. ---

dfm檔案二進位制格式時, 其檔案會加乙個檔案頭, 其中前3個位元組來標識其為二進位制, 這三個位元組分別為:$ff, $0a, $00. 因為這三個位元組在文字型別的檔案中是不可能存在的,所以可以判斷這3個位元組就可以了.

function isbindfm(const adfmfilename: string): boolean;

var mbinstream:tmemorystream;

mbuff : array [0..2] of byte;

begin

mbinstream := tmemorystream.create;

trymbinstream.loadfromfile(adfmfilename);

mbinstream.read(mbuff, 3);

//前三位元組: $ff, $0a, $00

if (mbuff[0] = $ff) and (mbuff[1] = $0a) and (mbuff[2]= $00) then

result := true

else

result := false;

finally

mbinstream.free;

end;

end;

判斷出來後, 再將二進位制轉為文字格式就容易了.delphi提供了objectresourcetotext函式.寫法如下:

procedure dfmbin2txt(adfmfilename: string);

var infilestream: tmemorystream;

outfilestream: tfilestream;

begin

infilestream := tmemorystream.create;

infilestream.loadfromfile(adfmfilename);

tryoutfilestream := tfilestream.create(adfmfilename, fmcreate);

trytry

infilestream.seek(0, sofrombeginning);

objectresourcetotext(infilestream, outfilestream);

except

raise exception.create('this dfm is bin, error on trans bin to txt.');

end;

finally

outfilestream.free;

end;

finally

infilestream.free;

end;

end;

至此,大功告成!

安裝mysql 二進位制格式

說明 安裝位置 usr local mysql 資料位置 data mysql mysql3306 data 臨時檔案位置 data mysql mysql3306 tmp 日誌檔案位置 data mysql mysql3306 logs mysql bin socket檔案位置 tmp mysql...

進製轉換(十進位制轉二進位制)

問題及 輸入乙個非負整數 十進位制 輸出此整數對應的二進位制數 正整數 十進位制 對應的二進位制數 6110 煙台大學計算機與控制工程學院 馮琬淇問題 輸入乙個非負整數 十進位制 輸出此整數對應的二進位制數 include include int main if i 0 i for j i j 0 ...

十二進位制轉二進位制 2018

1 逐個輸出對應的十進位制,用空格隔開 高位到地位 10 2 輸出對應的十進位制數 10 3 轉為二進位制,用4個位元組表示 10 例如 輸入a2 輸出 10 2 12200000000 00000000 00000000 01111010 思路 1 利用transfer char ch 將單個字元...