关于在两个程序之间传递数据,请帮忙看看,谢谢!(56分)

  • 主题发起人 主题发起人 kittycat
  • 开始时间 开始时间
K

kittycat

Unregistered / Unconfirmed
GUEST, unregistred user!
现在有两个程序A和B,以前的模式是:程序A接收网上传来的资料然后把它整理成文件保存在硬盘上,然后程序B读取刚刚的文件并进行压缩最后上传到FTP空间。现在我要改动的是两个程序的通讯问题,不要通过保存文件的方式,而是程序A收集到的资料放入内存里,程序B直接从内存中读取数据,最后打包上传!换句话说:程序A和B的通讯直接来自内存。请问我要如何实现,应该用到哪方面的知识。谢谢!
 
使用共享内存
 
以前是程序A保存文件之后,程序B将此文件打包上传,但现在我只是从内存中取数据,该如何打包上传呢,谢谢
 
使用共享内存
 
请您说清楚一点,谢谢。有实例么,谢谢了:)
 
最简单的办法, 合并成同一个程序。

第二简单的办法,两个程序用SOCKET通信。

还有其它的办法, 但是我还是觉得用SOCKET通信好[:D]
 
不好意思,我想用内存直接读取得方式,请赐教
 
谢大家帮忙
 
delphi深度编程里有合适你的例子.
内存共享一下就可以.
建立MAP
 
谢谢,我是否应该先在硬盘上建立文件,然后再设为内存共享呢,因为现在的逻辑是程序A先生成许多文件,然后程序B在读取它,整个架构是以文件为中心,那现在的要使用内存共享机制,改动是不是太大了?谢谢
 
请帮忙解决,谢谢
 
发送wm_copydata消息或者用内存映射文件
 
如果文件太大。内存共享不理想
干嘛非得分开两个程序
 
一个程序最好,要么用管道
 
请问我是否应该先在硬盘上建立文件,然后再设为内存共享呢,还是直接可以将原来内存中的数据直接做成“内存映射文件”?谢谢
 
原来在硬盘上的文件,我都是采用AssignFile rewrite Seek read write等函数来进行操作。现在用内存映射,CreateFileMapping,mapviewoffile之后得到的不是指针么,我如何象操作文件那样,任意的删除,添加,查找数据呢,请帮忙!
 
直接用指针操作啊
 
如何在这个映射文件的中查找要插入的数据?能举个例子么。这不是“映射文件”么,怎么成了指针了?
 
type
Tmapinfo=record
info1:integer;
info2:string[255];
end;
var mapinfo:Tmapinfo

hMap := CreateFileMapping($FFFFFFFF, nil, PAGE_READWRITE or SEC_COMMIT,
0, MapSize, 'filename');
pinfo:=mapviewoffile(hMap,FILE_MAP_ALL_ACCESS,0,0,MapSize);
我要在“映像文件”里面插入一个mapinfo,但之前应先检验是否已经存在同样的一个mapinfo元素,请问如何实现,如何让他真正象“操作文件”那样方便?
 
后退
顶部