请教: 有关DFM文件格式转化为TEXT格式问题(50分)

U

userlxl

Unregistered / Unconfirmed
GUEST, unregistred user!
使用了一个DFM文件转化到TEXT格式的函数,但运行时却报错:
"invalid stream format"
久闻大富翁盛名,特来向各位高手请教,问题出在那里?
我使用的代码如下:
function tform1.dfmFileLoad(const aFile: String): String;
var
aInput : TStream;
aOutput : TStream;
aStr : TStrings;
begin
Result := '';
aInput := TFileStream.Create(aFile, fmOpenRead);
try
aOutput := TMemoryStream.Create;
try
ObjectResourceToText(aInput,aOutput);
aOutput.Position:=0;
aStr:=TStringList.Create;
try
aStr.LoadFromStream(aOutput);
// aStr.LoadFromStream(ainput);
Result:=aStr.Text;
finally
aStr.Free;
end;

finally
aOutput.Free;
end;
finally
aInput.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines.add(dfmfileload(extractfilepath(application.ExeName )+'unit1.dfm'));
end;
 
用Delphi自带的工具Convert.exe
 
多谢XIAJUN关注,但是还是没有解决我的问题,我一定要在程序中使用转化
 
没有人知道吗?
 
大富翁的高手们在哪里?
 
aStr : TStrings; 》》aStr : TStringList;

//不要动不动“大富翁的高手们在哪里?”
 
其实你上面的代码并没有问题
但如果你用Delphi5来编译的话,碰到Delphi6的二进制DFM文件可能就会报错了,因为它
并不识别其格式。最好的办法还是直接调用Delphi6提供的convert.exe,直接在程序里
ShellExecute就好了。
 
to tulipfan:
strings/stringlist是我程序中的疏忽,但是报错问题绝不是出
在上面,不知道你编译过没有?
//我说的高手在不在云云,不过是为了让大家多关注我的帖子,
希望大家可以帮助我,绝对别无它意,如果令你不快的话,我很抱
:)
to xianjun :
多谢你多次关注我的问题,我全部用的是D6编译的,不会有不识别的格式。
我在多类DFM主题上都看到过使用resourcetotext(),但是为何没有人遇到我
的问题?
如果实在没有办法的话,使用convert,意味着我的程序里还要内嵌一个。EXE
文件,而且还要使用一个TXT文件来中转,其实我只需要把文件转出来在MEMO中修
改一下再保存回去,
 
用ObjectBinaryToText这个函数即可。
 
顶部