如何将数据库作为资源添加到可执行文件我想把数据库和可执行文件整合在一个文件里
解决方案 »
- 如何实现从windows资源管理器拖放文件到shelllistview特定目录下
- 向各位高手求解一个关于用indy中的tcp组建构建聊天程序的问题,急!急!急!
- 特急文档需要!!!!!!!!!!!!!!!
- 请教大家如何控制StringGrid一个列中只输入数字型字符和小数点?
- excel在delphi中如何转换为html
- fastreport和分页相关的问题
- 改版后丢失的未解之迷:FastReport中对话框的ModalResult问题
- 关于注册表操作的几个问题。。。。。。。。。〉〉〉〉〉〉〉〉〉〉〉〉
- 请问类似性格测试的程序怎么做?
- 哪里有kylix的下載啊﹐免費的哦﹗
- 请问DELPHI如何与SQL数据库连接的问题
- 如何在程序中显示、并刷新图片
下面我给你一个放入Exe文件的例子,任意都是一样的
RC文件中是
nestexe exefile "c:\nestexe.exe"
程序里面是
{$R nestexe.res}
procedure TForm1.btnStartClick(Sender: TObject);
var
ResHandle : THandle;
MemHandle : THandle;
MemStream : TMemoryStream;
ResPtr : PByte;
ResSize : Longint;
F: TFileStream;
begin
F := TFileStream.Create('d:\aa.exe',fmCreate);
ResHandle := FindResource(hInstance, PChar('nestexe'), 'exefile');
MemHandle := LoadResource(hInstance, ResHandle);
ResPtr := LockResource(MemHandle);
MemStream := TMemoryStream.Create;
ResSize := SizeOfResource(hInstance, ResHandle);
MemStream.SetSize(ResSize);
MemStream.Write(ResPtr^, ResSize);
FreeResource(MemHandle);
MemStream.Seek(0, 0);
F.CopyFrom(MemStream,MemStream.Size);
F.Free;
//
MemStream.Free;
end;
给你两个函数:
合并函数:
Function Cjt_AddtoFile(SourceFile,TargetFile:string):Boolean;
var
Target,Source:TFileStream;
MyFileSize:integer;
begin
try
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareExclusive);
Target:=TFileStream.Create(TargetFile,fmOpenWrite or fmShareExclusive);
try
Target.Seek(0,soFromEnd);//往尾部添加资源
Target.CopyFrom(Source,0);
MyFileSize:=Source.Size+Sizeof(MyFileSize);//计算资源大小,并写入辅程尾部
Target.WriteBuffer(MyFileSize,sizeof(MyFileSize));
finally
Target.Free;
Source.Free;
end;
except
Result:=False;
Exit;
end;
Result:=True;
end;释放函数:
Function Cjt_LoadFromFile(SourceFile,TargetFile :string):Boolean;
var
Source:TFileStream;
Target:TMemoryStream;
MyFileSize:integer;
begin
try
Target:=TMemoryStream.Create;
Source:=TFileStream.Create(SourceFile,fmOpenRead or fmShareDenyNone);
try
Source.Seek(-sizeof(MyFileSize),soFromEnd);
Source.ReadBuffer(MyFileSize,sizeof(MyFileSize));//读出资源大小
Source.Seek(-MyFileSize,soFromEnd);//定位到资源位置
Target.CopyFrom(Source,MyFileSize-sizeof(MyFileSize));//取出资源
Target.SaveToFile(TargetFile);//存放到文件
finally
Target.Free;
Source.Free;
end;
except
Result:=false;
Exit;
end;
Result:=true;
end;