不同目录下两个程序A和B,在这两个程序目录下都有mingzi.txt文件(文件名相同,文件内容不同),用内存映像的方法如何实现把A目录下的mingzi.txt文件复制给B目录下的mingzi.txt文件?
我在网上查找了内存映像的方法,但都是对 Edit控件里字串进行传递的!想直接传递.txt文件内容应该写?
下面是对Edit控件里字串进行传递的例子!
private
hMapFile: THandle;
MapFilePointer: Pointer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);
begin
hMapFile := CreateFileMapping ( $FFFFFFFF, // 特殊内存映射句柄 nil, page_ReadWrite, 0,10000, 'DdhDemoMappedFile '); // 文件名 if hMapFile <> 0 then MapFilePointer := MapViewOfFile ( hMapFile, // 上面映象文件的句柄 File_Map_All_Access, 0, 0, 0) // 访问整个映象文件
else
ShowMessage ( 'hMapFile = 0 ');
if MapFilePointer = nil then
ShowMessage ( 'MapFilePointer = nil ');
end; procedure TForm1.BtnWriteClick(Sender: TObject);
begin
StrCopy (PChar (MapFilePointer),
PChar (EditWrite.Text));//把内容写入共享内存
end; procedure TForm1.BtnReadClick(Sender: TObject);
var
S: string;
begin
S := PChar (MapFilePointer);//从共享内存读出内容
EditRead.Text := S;
end;
我在网上查找了内存映像的方法,但都是对 Edit控件里字串进行传递的!想直接传递.txt文件内容应该写?
下面是对Edit控件里字串进行传递的例子!
private
hMapFile: THandle;
MapFilePointer: Pointer;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject);
begin
hMapFile := CreateFileMapping ( $FFFFFFFF, // 特殊内存映射句柄 nil, page_ReadWrite, 0,10000, 'DdhDemoMappedFile '); // 文件名 if hMapFile <> 0 then MapFilePointer := MapViewOfFile ( hMapFile, // 上面映象文件的句柄 File_Map_All_Access, 0, 0, 0) // 访问整个映象文件
else
ShowMessage ( 'hMapFile = 0 ');
if MapFilePointer = nil then
ShowMessage ( 'MapFilePointer = nil ');
end; procedure TForm1.BtnWriteClick(Sender: TObject);
begin
StrCopy (PChar (MapFilePointer),
PChar (EditWrite.Text));//把内容写入共享内存
end; procedure TForm1.BtnReadClick(Sender: TObject);
var
S: string;
begin
S := PChar (MapFilePointer);//从共享内存读出内容
EditRead.Text := S;
end;
解决方案 »
- delphi画图程序出错,未定义 DrawingTool: TDrawingTool;
- QuickReport的問題,急,高手快來!!!!
- 那里有Delphi 7 的补丁包下载?
- 关于DBLookupComboBox,我没有加任何代码,是用Delphi组件直接向导生成的???
- 谁知道:在delphi5中如何制作16位样式窗体(没有3D边框那种),谢绝用CreateWindow(内无)
- 马上要毕业了,做毕业设计,各位大虾帮帮忙,万份感激
- 我该学习delphi的那些东西?
- 请问,钩子可以不放DLL中而放在程序的EXE中吗?(200分求解)
- 三层结构中,两个不明白的问题,请帮忙。谢谢。
- 有人说VB比Delphi实用,同意吗?
- 怎么根据edit中的值加载image
- 关于内存文件映射与流的读写
http://poorboy030103.blog.163.com/blog/static/54635147200711894519129/
CreateFileMapping第一个参数可以是文件句柄
你的是一个发送程序,一个接收程序!我上面是发送接受写在一起了,复制成两个程序就可以传送接收了!
StrCopy (PChar (MapFilePointer),PChar (EditWrite.Text));//把内容写入共享内存
S := PChar (MapFilePointer);//从共享内存读出内容
EditRead.Text := S;
我的问题是?如何把A程序目录下一个txt文件映像, B程序接收txt文件内容并保存到B的当前目录下?语句怎么写?
StrCopy(PChar(MapFilePointer),PChar('shiwu.txt'));//把内容写入共享内存
是这样写吗????????????????????????
CreateFileMapping可以接收一个文件句柄,也就是fileopen打开的文件,a程序负责向文件里写入,之后你在b程序里读取就可以了,可以另声明一个filewriter把读取的内容写到B程序接收的txt文件内
function FileCreate(const FileName:String):Integer; //创建由FileName指定文件名的文件,并返回文件句柄。
function FileOpen(const FileName:String;Mode:Word):Integer; //以Mode指定的文件访问模式打开由FileName指定文件名的文件,并返回文件句柄。
FileOpen()的Mode参数值如下:
fmOpenRead 只读模式
fmOpenWrite 只写模式
fmOpenReadWrite 可读写模式function CreateFileMapping(hFile:THandle; //要映射到内存中的文件的文件句柄,就是调用FileCreate()或FileOpen()函数
我的问题是怎么把
StrCopy (PChar (MapFilePointer),PChar (EditWrite.Text));//把内容写入共享内存
S := PChar (MapFilePointer);//从共享内存读出内容
EditRead.Text := S;
替换成
如何把A程序目录下一个txt文件映像, B程序接收txt文件内容并保存到B的当前目录下?语句怎么写?
StrCopy(PChar(MapFilePointer),PChar('shiwu.txt'));//把内容写入共享内存
是这样写吗????????????????????????