檔案packed record的寫入 |
尚未結案
|
spencerkuo
一般會員 發表:21 回覆:34 積分:11 註冊:2003-08-15 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
packed record用意在於你自訂的Record它的Size不會因為程式最佳化的影響而被調整成4的倍數. type TRec = packed record I: Word; A: Integer; B: Byte; C: Word; D: Char; end; implementation procedure TForm1.Button2Click(Sender: TObject); var I, ByteRead, Count: Integer; R: TRec; P: array of TRec; F: TFileStream; begin F := TFileStream.Create('C:\TEST.DAT', fmCreate); try for I := 0 to 99 do begin R.I := I; R.A := Random(MaxInt); R.B := Random(MaxByte); R.C := Random(MaxWord); R.D := Char(Random(MaxByte)); F.Write(R, SizeOf(R)); end; finally F.Free; end; if FileExists('C:\TEST.DAT') then begin F := TFileStream.Create('C:\TEST.DAT', fmOpenRead); try SetLength(P, 100); //配置 100 筆資料所需記憶體 try ByteRead := SizeOf(TRec) * Length(P); ByteRead := F.Read(Pointer(P)^, ByteRead); Count := ByteRead div SizeOf(TRec); ListBox1.Clear; for I := 0 to Count-1 do ListBox1.Items.Add(IntToStr(P[I].I)); finally P := nil; end; finally F.Free; end; end; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |