社区
C++ Builder
帖子详情
我要嗝屁了,TMemo控件保存问题,100分献上
caomeng2002
2002-06-12 02:20:52
我动态生成一些TMEMO控件,并在上面可以输入一些文字,因为在下次打开时要原样打开所以我用流TFileStream保存和打开(用WriteComponentRes和ReadComponentRes),类以注册 (
TMetaClass *cl[1]={__classid(TMemo)}
RegisterClasses(cl,0);
)
为什么当控件上没有文字时保存的可以打开,而有文字的就报错呢?是不是还有什么类没注册呀?
...全文
106
19
打赏
收藏
我要嗝屁了,TMemo控件保存问题,100分献上
我动态生成一些TMEMO控件,并在上面可以输入一些文字,因为在下次打开时要原样打开所以我用流TFileStream保存和打开(用WriteComponentRes和ReadComponentRes),类以注册 ( TMetaClass *cl[1]={__classid(TMemo)} RegisterClasses(cl,0); ) 为什么当控件上没有文字时保存的可以打开,而有文字的就报错呢?是不是还有什么类没注册呀?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
烟波三千里人鬼五百年
2002-08-14
打赏
举报
回复
嗬嗬,有用就好,一起进步!多多支持BCB论坛!
caomeng2002
2002-08-14
打赏
举报
回复
今天试了一下(〖烟波浩淼三千里、人鬼殊途五百年〗) 的方法,感觉比我原来的方法好!
钛哥
2002-08-14
打赏
举报
回复
mark
caomeng2002
2002-08-13
打赏
举报
回复
谢谢大家!
贴了这么长时间,我其实早就解决了!不过和(〖烟波浩淼三千里、人鬼殊途五百年〗) 有一些不同。当然大部分还是一样的。关键是我把“Lines.Strings = (“”)”分开处理了。这样可以生成“后”在添加,就是这样。非常感谢[烟波浩淼三千里、人鬼殊途五百年〗等高手,我的好好研究研究你的代码,给分了。再次感谢各位帮忙!
烟波三千里人鬼五百年
2002-08-05
打赏
举报
回复
已解决....
AnsiString ComponentToString(TComponent* Component)
{
TMemoryStream* ms;
TStringStream* ss;
ss = new TStringStream(" ");
ms = new TMemoryStream;
try{
ms->WriteComponent(Component);
ms->Position = 0;
ObjectBinaryToText(ms, ss);
ss->Position = 0;
return ss->DataString;
}
__finally
{
delete ms;
delete ss;
}
return ss->DataString;
}
void StringToComponent(TComponent* Component,const AnsiString& Value)
{
TStringStream* ss;
TMemoryStream* ms;
ss = new TStringStream(Value);
try
{
ms = new TMemoryStream;
try
{
ObjectTextToBinary(ss, ms);
ms->Position = 0;
ms->ReadComponent(Component);
}
__finally
{
delete ms;
}
}
__finally
{
delete ss;
}
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TMemo* M = new TMemo(this);
M->Parent = this; //Must Have
M->Top = 12;
M->Left =24;
M->Lines->Add(Now());
M->Lines->Add(Now());
M->Lines->Add(Now());
Memo1->Text = ComponentToString(M);
delete M;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TMemo *M = new TMemo(this);
M->Parent = this; //Must Have
StringToComponent(M,Memo1->Text);
}
烟波三千里人鬼五百年
2002-08-05
打赏
举报
回复
贴主不见了...:(
shally5
2002-08-04
打赏
举报
回复
是不是有0啊!Memo是不能重读char为0的字符的也就是说字符的十六进制等于0的字符是读不出来的。
烟波三千里人鬼五百年
2002-08-04
打赏
举报
回复
mark
creativitysoft
2002-08-03
打赏
举报
回复
你的文件保存成功没!
kingcaiyao
2002-08-03
打赏
举报
回复
你不如这样:
用Ini文件保存它的文本和控件在窗体上的位置
用.dat保存控件资源。
Sephil
2002-08-03
打赏
举报
回复
试试 TReader 和 TWriter
具体看帮助,我自己也不是很熟悉的
caomeng2002
2002-06-12
打赏
举报
回复
是动态生成的TMemO控件
请看原码:
....................
.................
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
TMetaClass *cl[5]={__classid(TCustomMemo),__classid(TEdit),__classid(TMemo),__classid(TButton),__classid(TWaibuyu)};
RegisterClasses(cl,4);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::abc(int x,int y,int n)
{
if(n==0)
{ TMemo *memo=new TMemo(this);
memo->Parent=Form1;
memo->Left=x;
memo->Top=y;
memo->Text=""; }
else if(n==1){ TWaibuyu *memoA=new TWaibuyu(this);
memoA->Parent=Form1;
memoA->Left=x;
memoA->Top=y;
memoA->Caption="DDDDDDDDD";
} else {
TEdit *memoAq=new TEdit(this);
memoAq->Parent=Form1;
memoAq->Left=x;
memoAq->Top=y;
}
}
//------------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
if(RadioButton1->Checked==true)
abc(X,Y,0);
else if(RadioButton2->Checked==true)
abc(X,Y,1);
else if(RadioButton4->Checked==true)
abc(X,Y,2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::save1Click(TObject *Sender)
{
TFileStream *com;
if(SaveDialog1->Execute())
com=new TFileStream(SaveDialog1->FileName,
fmCreate );
try {
for(int i=0;i<ControlCount;i++)
{
if(Controls[i]!=Panel1)
com->WriteComponentRes(SaveDialog1->FileName,Controls[i]);
}
}catch(...)
{ com->Free(); }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::open1Click(TObject *Sender)
{
TFileStream *com;
TComponent *newcom;
if(OpenDialog1->Execute())
com=new TFileStream(OpenDialog1->FileName,
fmOpenRead);
try {
while(com->Position< com->Size)
{
newcom=com->ReadComponentRes(NULL);
InsertControl((TControl*)newcom);
//Counter++ ;
}
}catch(...)
{ com->Free(); }
}
...................................
我不懂电脑
2002-06-12
打赏
举报
回复
TMemo1->Lines->SaveToStream(abc);
caomeng2002
2002-06-12
打赏
举报
回复
别拉着我,,别拉着我,别拉着我 ---------让我跳下去,~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~(嘿嘿,没人拉着你)
caomeng2002
2002-06-12
打赏
举报
回复
没有一个人和我说话,活者真没意思死了算了:~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~死了。
caomeng2002
2002-06-12
打赏
举报
回复
因为我的TMEMO是动态生成的有很多,在生成流时(MEMO上有文字)已经把文字保存了,只是读回来时出错,没有文字时就可以。
ai0ai
2002-06-12
打赏
举报
回复
对啊,保存到文件里,再运行的时候读出来就可以了。
jerry921
2002-06-12
打赏
举报
回复
为什么不把你的文字存到文件里去呢?
可以这样:
TMemo1->Lines->SaveToFile("abc.txt");
TMemo1->Lines->LoadFromFile("abc.txt");
caomeng2002
2002-06-12
打赏
举报
回复
连个人影都没有。看来这还成了难题了。
TMemo
逐行读取数据Demo
Delphi开发过程中,往往需要在
TMemo
中逐行读取数据,本实例是回答网友
问题
的源码。上传方便实施
TMemo
逐行读取数据的同行下载参考。
Delphi
TMemo
字符串的查找完全实现
这是早上传的发现有
问题
不能在Delphi Xe5中运行 但能在Delphi7中运行 我想删除它也没权限 http://download.csdn.net/detail/teststudio/6404077 所以重传下 Delphi
TMemo
字符串的查找完全实现 已经完全的解决...
Delphi专业 界面
控件
Skin++ For Delphi (一)
值得一提的是,Skin++对Label的支持是彻底,并且不像其他的换肤软件需要在窗体上放置一个他们提供的特有的
控件
。因为在已经成型的软件中, 如果让用户来一个一个替换原有的Label
控件
,将是非常痛苦的事情。 对...
Source Editor Component (代码编辑器
控件
)
TSourceEdit是一个代码编辑器
控件
,支持DELPHI语法高亮,基于
TMemo
组件。 Delphi7编译通过。
Delphi 7.0 得到Memo中的可见行数.rar
Delphi 7.0 获取Memo
控件
中字符的可见行数,没讲 时在Memo
控件
中随便粘贴入一些字符,单击窗口中的“检测可见行数”按钮,即可得到该文本框
控件
中字符的行数,将这一系列执行命令集成在delphi的按钮监听事件中,编写...
C++ Builder
13,826
社区成员
102,678
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章