首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi 記錄型檔案操作完全指南:File of Record 型別與二進位讀寫實戰

     編輯:Delphi

記錄型檔案 (Record-based File) 是 Delphi 傳統的二進位資料儲存方式,結構類似「單表資料庫」,適用於簡單資料持久化場景。

核心概念對比

特性記錄型檔案資料庫
本質二進位檔案,類似記事本存結構體專用儲存引擎,支援索引、查詢、事務
增刪改查手動管理檔案指標,較麻煩SQL 語句,功能豐富
適用場景單一結構、資料量小、無複雜查詢多表關聯、大量資料、複雜查詢
部署單一檔案,無引擎相依需資料庫引擎或 DLL

完整實作步驟

1. 定義記錄結構 (Record)

type 
  MyFile = record 
    name: string[20]; { 必須指定固定長度 }
    sex: string[10];  { 必須指定固定長度 }
    age: Integer; 
  end;

2. 宣告檔案變數與記錄變數

var 
  myselfFile: file of MyFile; { 記錄型檔案變數 }
  mySelfInfo: MyFile; { 單筆記錄緩衝 }

3. 寫入資料流程

{ 對記錄緩衝賦值 }
mySelfInfo.name := Edit1.Text; 
mySelfInfo.sex := Edit2.Text; 
mySelfInfo.age := StrToInt(Edit3.Text); 

{ 對檔案操作 }
if SaveDialog1.Execute then 
begin 
  AssignFile(myselfFile, SaveDialog1.FileName); { 檔案變數與磁碟檔案關聯 }
  
  if FileExists(SaveDialog1.FileName) then 
    Reset(myselfFile) { 存在 → 唯讀開啟,指標在開頭 }
  else 
    Rewrite(myselfFile); { 不存在 → 建立新檔,指標在開頭 }
  
  Seek(myselfFile, FileSize(myselfFile)); { 移動指標到檔案末尾 (附加模式) }
  Write(myselfFile, mySelfInfo); { 寫入記錄 }
  CloseFile(myselfFile); { 關閉關聯,對應 AssignFile }
end;

4. 讀取資料

Reset(myselfFile); { 唯讀開啟 }
while not Eof(myselfFile) do 
begin 
  Read(myselfFile, mySelfInfo); { 讀取一筆記錄到緩衝 }
  { 顯示 mySelfInfo.name, sex, age }
end; 
CloseFile(myselfFile);

實際檔案內容 (十六進位視圖)

輸入資料:
張某某 男 21
周某某 女 21
項某某 男 21
...

以文字編輯器開啟 (亂碼,因為是二進位):
張某某 男 & 周某某 女 & 項某某 男 & ...

關鍵:唯有使用 Read(myselfFile, mySelfInfo) 才能正確解析回結構體,文字編輯器無法直接閱讀。

關鍵函式速查

函式用途關鍵行為
AssignFile關聯檔案變數與磁碟路徑不建立檔案,僅建立關聯
Rewrite建立新檔/覆寫現有檔指標在 0,檔案長度歸零
Reset唯讀開啟現有檔指標在 0
Seek移動檔案指標Seek(f, FileSize(f)) 移到末尾
Write寫入記錄依記錄大小寫入,指標後移
Read讀取記錄依記錄大小讀取,指標後移
CloseFile關閉關聯釋放檔案鎖定,配對 AssignFile

原文出處

https://7071976.blog.51cto.com/7061976/1208387

記錄型檔案是理解「結構體序列化」與「檔案指標操作」的最佳入門教材,雖然實務上多為 SQLite/JSON 取代,但其核心概念在嵌入式、遊戲存檔、高效能日誌等領域仍具價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved