type
Tmapinfo=record
info1:string[255];
info2:string[255];
end;
var hMap: THandle;
pInfo: Pointer;
begin
hMap := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT,
0, MapSize, 'abc');
pinfo:=mapviewoffile(hMap,FILE_MAP_ALL_ACCESS,0,0,MapSize);end;1.请问如何在映射文件的最后插入一个Tmapinfo类型的数据(如何判断文件已经到了末尾?)
2.如何在映射文件的任意位置插入一个Tmapinfo类型的数据
3.怎样知道映射文件的长度,(相当于对文件操作时的filesize函数)
谢谢!
Tmapinfo=record
info1:string[255];
info2:string[255];
end;
var hMap: THandle;
pInfo: Pointer;
begin
hMap := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT,
0, MapSize, 'abc');
pinfo:=mapviewoffile(hMap,FILE_MAP_ALL_ACCESS,0,0,MapSize);end;1.请问如何在映射文件的最后插入一个Tmapinfo类型的数据(如何判断文件已经到了末尾?)
2.如何在映射文件的任意位置插入一个Tmapinfo类型的数据
3.怎样知道映射文件的长度,(相当于对文件操作时的filesize函数)
谢谢!
PMyTest=^TMyTest;
TMyTest=record
Int:integer;
DateTime:TDateTime
Str:String[10];
end;只要内存中有一块区域保存的数据结构是这样:前四个字节为数字,后面8个字节数据符合日期类型的要求,在后面的10个字节是字符,就可以将这个认为是TMyTest所以:要想插入一个结构,只要在想要的位置=PMyTest ,然后直接写入.当然自己要清楚在这块区域各个部分到底保存了什么内容.
function CreateFileMapping(hFile: THandle; lpFileMappingAttributes: PSecurityAttributes;
flProtect, dwMaximumSizeHigh, dwMaximumSizeLow: DWORD; lpName: PChar): THandle;
dwMaximumSizeHigh和dwMaximumSizeLow确定文件的最大字节数,
function MapViewOfFile(hFileMappingObject: THandle; dwDesiredAccess: DWORD;
dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap: DWORD): Pointer; stdcall;
dwFileOffsetHigh和 dwFileOffsetLow确定数据文件中哪个字节做为视图的第一个字节,dwNumberOfBytesToMap确定要映射多少字节的地址空间.对于你上面写的代码MapSize就是文件总大小.