請問如何存取binary檔 |
尚未結案
|
brianwung
一般會員 發表:18 回覆:22 積分:8 註冊:2002-06-12 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
你可以使用 TStream 的子類別(下列出)作為 txt <-> binary 的存取。 TFileStream (for working with files)
TStringStream (for manipulating in-memory strings)
TMemoryStream (for working with a memory buffer)
TBlobStream (for working with BLOB fields)
TWinSocketStream (for reading and writing over a socket connection)
TOleStream (for using a COM interface to read and write)
|
conchih
一般會員 發表:41 回覆:33 積分:14 註冊:2003-06-07 發送簡訊給我 |
提供binary -> text(對於text -> binary就反推即可)
(這也是感謝多位前輩(dllee.william等)幫忙小弟) 以下是小弟使用的程式片斷,可選擇想要的 方法一:使用tfilestream
Var
F1: TFileStream;
Filename,StringTemp:String;
Stock_Data:array[1..300,1..6] of longint;
Actual_read,OneLong: longint;
index_r,index_c,counter:integer;
Begin
Filename := 'E:\binary.dat';
F1 := TFileStream.Create(Filename,fmOpenRead);
index_r:=1;
index_c:=1;
counter:=1;
try
repeat
Actual_Read:=F1.Read(OneLong,Sizeof(OneLong));
if Actual_Read>0 then
begin
Stringtemp:=Stringtemp IntToStr(OneLong) ' ';
Stock_Data[index_r,index_c]:=OneLong;
end;
counter:=counter 1;
index_c:=index_c 1;
if (index_c=7) then
begin
index_r:=index_r 1;
index_c:=1;
end;
until (Actual_Read<=0);
finally
F1.Free;
end; 方法二:使用blockread
Var
F1:File;
Filename,StringTemp:String;
OneByte:Byte;
i:integer;
Begin
Filename:='E:\binary.dat';
AssignFile(F1,FILENAME);
Reset(F1);
StringTemp:='';
for i:=1 to 10 do
begin
Blockread(F1,OneByte,SizeOf(OneByte));
StringTemp:=StringTemp IntToStr(OneByte) ' ';
if (i mod 8=0) then
StringTemp:=Stringtemp #10;
end;
Showmessage(StringTemp);
CloseFile(F1);
end; 方法三:
若你的資料有逗號隔開
可用 TStringList 的 CommaText 來讀 希望對你有所幫助 _______________
做任何事就要找對師父
KTop網友就是我的師父
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |