type
  Tmapinfo=record
      info1:integer;
      info2:string[255];
  end;
var mapinfo:Tmapinfoprocedure TForm1.Button1Click(Sender: TObject);
var
hmap:=Thandle;
pinfo:point;
begin
  mapinfo.info1:=1;
  mapinfo.info2:='abc';
  hMap := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT,
    0, MapSize, 'mapfilename');
  pinfo:=mapviewoffile(hMap,FILE_MAP_ALL_ACCESS,0,0,MapSize);end;建立“映射文件”之后,如何在另外一个程序中写入mapinfo(若写入的数据已经在文件中,则提示错误!)
,如何取得“映射文件”里面的最后一笔数据?谢谢大家!

解决方案 »

  1.   

    我现在遇到的问题是这样的:原来程序A在内存中读出数据后在硬盘上面保存文件,程序B从硬盘文件中读数据之后再进行其他操作!
        我想把他们之间的通讯方式改成“内存共享”,那我该如何做呢?
    1.程序A在内存读出数据保存为硬盘文件之后再做“映射文件”,程序B读取“映射文件”中的内容
    2.程序A在内存读出数据之后并不在硬盘生成文件,而是直接做“映射文件”,程序B读取“映射文件”中的内容
        请问,我应采取哪个方案,谢谢!
      

  2.   

    建立映射文件之后,如何判断已经到了文件末尾。我要依次读取文件中的每一个“单元”,但我又不能用filesize来取文件的大小,怎样循环呢,谢谢
      

  3.   

    如果仅是做为两个程序共享不需要创建实际的文件,只要两个程序引用用唯一的名称就可以了。
    先启动的程序创建,后启动的程序发现如果存在了则直接映射就可以了。两个程序就象使用自己内存一样使用映射,只是在做完操作后通知另一个程序就可以了。建议看一下《WINDOWS核心编程》一书。