中国开发网: 论坛: 超级垃圾站: 贴子 571847
leejd
DFM文件的加载和保存
使用这种方式可以不用对DFM进行文字替换,而是先转为对象,遍历后来进行繁简的转换,比目前的直接识别DFM中的#再进行繁简转换要强一些。不过需要预先设置对哪些属性进行转换,而不像直接替换方式通过判断#来识别。

AnsiString ComponentToString(TComponent c)

{
AnsiString as;
TMemoryStream* pms = new TMemoryStream();
TStringStream* pss = new TStringStream(as);

try
{
pms->WriteComponent(&c);
pms->Seek(0, soFromBeginning);
ObjectBinaryToText(pms, pss);
pss->Seek(0, soFromBeginning);
as = pss->DataString;
}
catch(...)
{
ShowMessage("Streaming error.");
}

delete pms;
delete pss;
return as;
}

TComponent StringToComponent(AnsiString as)

{
TMemoryStream* pms = new TMemoryStream();
TStringStream* pss = new TStringStream(as);
TComponent *pc;

try
{
ObjectTextToBinary(pss, pms);
pms->Seek(0, soFromBeginning);
}
catch(...)
{
ShowMessage("Streaming error.");
}

pc = pms->ReadComponent(NULL);
delete pms;
delete pss;
return *pc;
}

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录