类型文件做成内存映射文件,怎么读写? ( 积分: 100 )

  • 主题发起人 主题发起人 wsg1100
  • 开始时间 开始时间
W

wsg1100

Unregistered / Unconfirmed
GUEST, unregistred user!
count fname= 'xhcl.jg';<br>type <br>txhjg = packed record<br>l1s1:integer;<br>l1s2:double;<br>l1s3:string[30];<br>end;<br>.<br>.<br>.<br>var<br>f:file of txhjg;<br>xh:txhjg;<br>.<br>.<br>我把 f做成内存映射文件后 返回一个Pointer 参数 我不知道怎么利用则个参数去修改我的<br>f 文件 比如 我要把f 文件第三个记录 xh.l1s1设置为12 怎么做? 因为这个文件比较大,读写很有规律,做成数据库读写太慢了,谁能帮帮我,有例子请发到: wsg1100@sina.com<br>我是一菜鸟,求大家多多帮忙!
 
count fname= 'xhcl.jg';<br>type <br>txhjg = packed record<br>l1s1:integer;<br>l1s2:double;<br>l1s3:string[30];<br>end;<br>.<br>.<br>.<br>var<br>f:file of txhjg;<br>xh:txhjg;<br>.<br>.<br>我把 f做成内存映射文件后 返回一个Pointer 参数 我不知道怎么利用则个参数去修改我的<br>f 文件 比如 我要把f 文件第三个记录 xh.l1s1设置为12 怎么做? 因为这个文件比较大,读写很有规律,做成数据库读写太慢了,谁能帮帮我,有例子请发到: wsg1100@sina.com<br>我是一菜鸟,求大家多多帮忙!
 
使用指针.<br>type Ptxhjg = txhjg ^;<br>var pRec : Ptxhjg;<br><br>pRec = GetTheFileMapPtr();<br>pRec[3].l1s1 = 12;
 
正需要这方面的资料,帮你顶
 
type <br> &nbsp;txhjg = packed record<br> &nbsp; &nbsp;l1s1:integer;<br> &nbsp; &nbsp;l1s2:double;<br> &nbsp; &nbsp;l1s3:string[30];<br> &nbsp;end;<br> &nbsp;txhjgs = array [0..MaxInt-1] of txhjg;<br> &nbsp;pxhjgs = ^txhjgs;<br><br>var<br> &nbsp;FileHandle, MapHandle: THandle;<br> &nbsp;p: pxhjgs;<br>begin<br> &nbsp;FileHandle := fileOpen('xhcl.jg', fmOpenReadWrite);<br> &nbsp;if FileHandle &lt;&gt; INVALID_HANDLE_VALUE then<br> &nbsp;try<br> &nbsp; &nbsp;maphandle := CreateFileMapping(FileHandle, nil, PAGE_READWRITE, 0, 0, 0);<br> &nbsp; &nbsp;if maphandle &lt;&gt; INVALID_HANDLE_VALUE then<br> &nbsp; &nbsp;try<br> &nbsp; &nbsp; &nbsp;p := MapViewOfFile(maphandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);<br> &nbsp; &nbsp; &nbsp;if p &lt;&gt; nil then<br> &nbsp; &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp; &nbsp;p[2].l1s1 := 12;<br> &nbsp; &nbsp; &nbsp; &nbsp;UnmapViewOfFile(p);<br> &nbsp; &nbsp; &nbsp;end;<br> &nbsp; &nbsp;finally<br> &nbsp; &nbsp; &nbsp;closehandle(maphandle);<br> &nbsp; &nbsp;end;<br> &nbsp;finally<br> &nbsp; &nbsp;fileclose(filehandle);<br> &nbsp;end;<br>end;
 
小弟有几點不明白﹐向大蝦們請教﹐希望能指點我﹕<br>1.請問一下﹐类型文件做成内存映射文件,怎么做啊﹖內存映射文件是什么意思呢﹖<br>2.&quot;把f 文件第三个记录 xh.l1s1设置为12&quot;這句話是什么意思呀﹖f文件是什么文件啊﹖怎么文件可以用記錄來表示呢﹖
 
推荐你去看一下《Delphi Win32 核心API参考》这本书。里面又详细的介绍,而且还有例子!我看过的,写的很详细
 

Similar threads

回复
0
查看
1K
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部