Delphi讀寫二進制文件

http://www.cnblogs.com/hnxxcxg/p/3691742.html

?

二進制文件(也叫類型文件),二進制文件是由一批同一類型的數據組成的一個數據序列,就是說一個具體的二進制文件只能存放同一種類型的數據。
type?
TMember = record?
Name : string[10];?
eMail : string[20];?
Posts : LongInt;?
end;?

var Members : array[1..50] of TMember;?
向磁盤存儲信息之前我們需要定義一個二進制類型文件的變量名,下面的代碼聲明一個名為F的類型文件變量。?
var F : file of TMember;?
在Delphi中,為了建立一個二進制文件,需要使用這樣的語法:var SomeTypedFile : file of SomeType ;?
這個文件的基類型(SomeType)可以是標準類型(比如整型),也可以是數組或記錄類型,但是不能為長字符串、動態數組、類、對象或者是一個指針。?

var F : file of TMember;?
i : integer ;?
begin?
AssignFile(F,'Members.dat');?
Rewrite(F);?
try?
for i:= 1 to 50 do Write (F, Members[ i ]);?
finally?
CloseFile(F);?
end;?
end;

為了處理“Members.dat”文件記錄的所有數據,必須使用如下形式的代碼:

var Member: TMember?
F : file of TMember;?
begin?
AssignFile(F,'Members.dat');?
Reset(F);?
try?
while not Eof(F) do begin Read (F, Member);?
{這里可以對論壇成員信息進行相關處理}?
end;?
finally?
CloseFile(F);?
end;?
end;

二進制文件還可以使用標準的Seek過程實現隨機訪問,Seek過程可以指定文件當前位置的跳轉。利用FilePos函數和FileSize函數可以返回文件的當前位置以及當前文件的大小(就是記錄的條數)。

{返回到文件開頭也就是第一條記錄開始處}?
Seek(F, 0);?
{直接到第五條記錄處}?
Seek(F, 5);?
{到文件結尾處也就是最后一條記錄結束的地方}?
Seek(F, FileSize(F));

var
Myrec:TMyrec;
Rec:TPersonRec;
Reccount:integer;
begin
Myrec := TMyrec.Create(Apppath+'History.dat',fmOpenRead or fmShareDenyWrite);
Myrec.first;
Reccount:=Myrec.GetNumRecs;
for i:=1 to Reccount do
begin
Myrec.ReadRec(Rec);
Rec.xxxx;
//Myrec.AppandRec(Rec);?
Myrec.nextRec;
end;?
end;

?

var
Myrec:TMyrec;
Rec:TPersonRec;
Reccount:integer;
begin
Myrec := TMyrec.Create(Apppath+'History.dat',fmOpenRead or fmShareDenyWrite);
Myrec.first;
Reccount:=Myrec.GetNumRecs;
for i:=1 to Reccount do
begin
Myrec.ReadRec(Rec);
Rec.xxxx;
//Myrec.AppandRec(Rec);?
Myrec.nextRec;
end;?
end;

轉載于:https://www.cnblogs.com/tc310/p/5260607.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/396672.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/396672.shtml
英文地址,請注明出處:http://en.pswp.cn/news/396672.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[No0000178]改善C#程序的建議1:非用ICloneable不可的理由

好吧,我承認,這是一個反標題,實際的情況是:我找不到一個非用ICloneable不可的理由。事實上,接口ICloneable還會帶來誤解,因為它只有一個Clone方法。 我們都知道,對象的拷貝分為:淺拷…

uniapp網絡請求獲取數據_2.uni-app 發起網絡請求

## uni.request(OBJECT)發起網絡請求。**OBJECT 參數說明**![](https://box.kancloud.cn/a90bf284df069eddde4019c04db7d627_861x475.png)**success 返回參數說明**![](https://box.kancloud.cn/10d44a6d100bb3833b22f2d41e85d8eb_861x165.png)**data 數據說明**最終發送給服務…

SOM 的兩種算法

我參考了這篇文章http://www.scholarpedia.org/article/Kohonen_network另一個很好的演示在這里http://www.math.le.ac.uk/people/ag153/homepage/PCA_SOM/PCA_SOM.htmlSOMt是訓練步一個輸入數據是n維向量待訓練的是一堆節點,這堆節點之間有邊連著,通常是…

python集合的兩種類型_python 入門之 – 集合類型(十九)

在python中,集合是一個無序的,不重復的數據組合,他的主要工作如下:1、去重,把一個列表變成集合,就自動去重了2、關系測試,測試兩組數據之間的交集、差集、并集等關系我來舉個例子,前…

計算機數值計算的相關文章,數值計算論文.doc

數值計算論文PAGE \* MERGEFORMAT 13高斯消去法在電路分析中的應用—利用計算機求解一些復雜電路的參數雷嘉豪電子信息工程學院自動化一班100401102摘 要求解線性代數方程組的數值方法有很多,但歸納起來,可分為兩類:一種是直接法,…

bzoj 2756奇怪的游戲

2756: [SCOI2012]奇怪的游戲 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2571 Solved: 685[Submit][Status][Discuss]Description Blinker最近喜歡上一個奇怪的游戲。 這個游戲在一個 N*M 的棋盤上玩,每個格子有一個數。每次 Blinker 會選擇兩個相鄰的格子&…

秒懂,Java 注解 (Annotation)你可以這樣學

轉自: https://blog.csdn.net/briblue/article/details/73824058 文章開頭先引入一處圖片。 這處圖片引自老羅的博客。為了避免不必要的麻煩,首先聲明我個人比較尊敬老羅的。至于為什么放這張圖,自然是為本篇博文服務,接下來我自會說明。好了…

Java技術中的三大特性

為什么80%的碼農都做不了架構師?>>> 1.虛擬機 Java虛擬機JVM(Java Virtual Machine)在Java編程里面具有非常重要的地位,約相當…

matlab圖像增強分段線性函數_圖像增強、銳化,利用 PythonOpenCV 來實現 4 種方法!...

圖像增強目的使得模糊圖片變得更加清晰、圖片模糊的原因是因為像素灰度差值變化不大,圖片各區域產生視覺效果似乎都是一樣的, 沒有較為突出的地方,看起來不清晰的感覺解決這個問題的最直接簡單辦法,放大像素灰度值差值、使圖像中的…

python多人聊天室_Python基于Socket實現簡易多人聊天室

前言套接字(Sockets)是雙向通信信道的端點。 套接字可以在一個進程內,在同一機器上的進程之間,或者在不同主機的進程之間進行通信,主機可以是任何一臺有連接互聯網的機器。套接字可以通過多種不同的通道類型實現:Unix域套接字&…

計算機考研保護一志愿,考研良心大學,保護一志愿的考研名校!

大家好,我是,今天胖胖要跟大家送一些重要的干貨,就是對于選學校的小伙伴來說也好,或者是即將要參加研究生復試的小伙伴們來好胖胖在這里要跟大家說一個關于考研白名單的事情,因為大家都知道考研是會分黑名單和白名單&a…

python變量輸出到文件_使用函數將多個變量寫入文件

首先,要獲得當前正在執行的腳本名,或者更確切地說是調用函數的模塊,必須從堆棧跟蹤中獲取它。globals()-它將在writeToValues()函數的相同上下文中執行,因此它不會從“調用者”接收globals()。要糾正這種情況,您可以使…

嵌入式linux系統移植的四大步驟_嵌入式系統移植步驟

在嵌入式系統移植中重要的一部分是操作系統的移植,與其它操作系統相比,Linux大的特點:它是一款遵循GPL的操作系統,我們可以自由地使用、修改、和擴展它。正是由于這一特色,嵌入式系統移植過程中Linux系統受到越來越多人…

sdn框架的計算機網絡管理,清華SDN實踐--SDN 系統架構與數據中心應用

清華大學在SDN 的系統架構以及其在數據中心網絡中的應用方面展開了深入研究,主要研究成果包括:1. 以數據為中心的軟件定義網絡架構 SODA(Software Defined Data Centric Networking)。與 OpenFlow 相比,SODA 大大增強了數據層面的處理能力&am…

《軟件工程》課之-調查問卷的心得體會

1.這次調查是艱辛的。 2.很多人都誤以為我在發小廣告。。 3.很多人都不認識俄羅斯方塊1010這個游戲。 4.大家對于游戲的見解千奇百怪。 5.題目出的不是很完美,下次改進。。 6.簡單分析下結果,男孩子都喜歡多人的游戲,女孩的喜歡的多種多樣&am…

python循環語句for求和_for循環簡介

## for循環簡介for循環可以用來遍歷某一對象(遍歷:通俗點說,就是把這個循環中的第一個元素到最后一個元素依次訪問一次)。for循環的基本結構如下:![](https://img.kancloud.cn/75/33/753371a9536ed9eeb159074482ec85f0_558x174.png)說明&…

華為備份歷史版本_華為手機NAS備份時提示“需處于同一局域網”的解決方法

本內容來源于什么值得買APP,觀點僅代表作者本人 |作者:噩夢飄雷創作立場聲明:在使用華為手機向群暉NAS中備份時發現一直無法成功,經過一番研究找到了解決方案,希望能幫到大家~前言最近看了一位老哥的帖子&a…

計算機系統集成難點,企業MES實施中存在的難點及建議

MES是企業生產管理服務的核心信息化系統。實施MES是為了將現代企業生產管理思想、理念引入企業生產管理,對企業生產管理流程進行重組和優化,促進企業生產管理水平的提高。可是作用如此大的MES系統在實施過程中能一路無阻嗎?MES系統的作用1.車…

【原創】自己編寫的JavaGUI一鍵生成(hibernate/spring/mvc/maven)工具(附帶視頻教程源碼)...

為什么80%的碼農都做不了架構師?>>> 帶項目源碼(https://git.oschina.net/qsyan/GeneratorFx) app下載地址(附帶視頻教程):http://download.csdn.net/detail/juyan2008/9769406 注明:此應用采用javafx編寫…

2018-2019 20165203 《信息安全系統設計基礎》第一周學習總結

2018-2019-1 20165203 《信息安全系統設計基礎》第一周學習總結 教材學習內容總結 編譯:gcc [選項] [文件名]選項參數表 參數對應功能-E僅執行編譯預處理-S將.c代碼轉換為匯編語言代碼-c僅執行編譯操作,不進行連接操作-o指定生成的輸出文件-I (大寫)指定…