請問如何將RECORD的資料存入檔案並且取出? |
尚未結案
|
nicolas
一般會員 發表:39 回覆:40 積分:15 註冊:2004-05-05 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
試試看如下的方法成不成?
procedure SaveRecord; var fs: TFileStream; i: Integer; sl: TStringList; begin fs := TFileStream.Create('c:\xx.rec', fmCreate or fmOpenWrite); sl := TStringList.Create; try fs.WriteBuffer(AAA, SizeOf(AAA)); for i := 1 to 100 do begin sl.Add(AAA[i].BBB); sl.Add(IntToStr(AAA[i].CCC)); end; sl.SaveToStream(fs); finally sl.Free; fs.Free; end; end; procedure ReadRecord; var fs: TStream; i: Integer; sl: TStringList; begin if FileExists('c:\xx.rec') then begin fs := TFileStream.Create('c:\xx.rec', fmOpenRead); sl := TStringList.Create; try fs.ReadBuffer(AAA, SizeOf(AAA)); sl.LoadFromStream(fs); for i := 1 to 100 do begin AAA[i].BBB := sl.Strings[(i-1)*2]; AAA[i].CCC := StrToInt(sl.Strings[(i-1)*2 1]); end; finally sl.Free; fs.Free end; end; end;-- 向 KTop 的弟兄們致敬! |
nicolas
一般會員 發表:39 回覆:40 積分:15 註冊:2004-05-05 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
nicolas
一般會員 發表:39 回覆:40 積分:15 註冊:2004-05-05 發送簡訊給我 |
|
nicolas
一般會員 發表:39 回覆:40 積分:15 註冊:2004-05-05 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言: 只有一筆資料, 很難比較省不省時吧? 如果有一萬筆資料 只有一筆有改變 只存那一筆不是較省時嗎? >>< face="Verdana, Arial, Helvetica">1.只有一筆資料, 很難比較省不省時吧? 給了頭,應該好處理了... var fsFile:TFileStream; begin fsFile:=TFileStrea.Create('filename',fmOpenReadWrite); //判斷要儲存哪筆資料將位置移動 fsFile.Position:=TypeSize * N; fsFile.Write(TypeData,Sizeof(TypeData)); fsFile.Free; end; 2.資料如果有錯如何檢查 可在檔頭或檔案大小等等地方,於開啟檔案時做檢查咩. 有錯誤發生時,總不能開啟吧!! 3.不小心關機 會不會造成資料只在buffer而沒存入hard disk呢 fsFile:=TFileStream.Create ... fsFile.Free 只要不在這中間關機就不會發生沒存入. 如果在這中間關機,任何的程序也無法補救吧? 如word在存檔中關機了,你能確保word的檔案正確嗎!?... word做法是定時備份存檔唄. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |