RichEdit保存数据后再重新加载,所有数据变成了乱码,如何解决?(100分)

  • 主题发起人 netfun2000
  • 开始时间
N

netfun2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我用Delphi自己的RichEdit控件和LMD7的RichEdit控件做的。等我保存数据后再重新加载,数据就成乱码了。数据少的时候没有这个现象,多了就不行了。
我的riched20.dll和Riched32.dll应该是最新的,我是从QQ2000最新版中找的。
请问如何解决?

 
riched20.dll的版本是:
Rich Text Edit Control, v3.1
文件版本:5.31.23.1218

 
Riched32.dll的版本:
Wrapper Dll for Richedit 1.0
文件版本:5.0.2134.1

 
是一些什么样的乱码
是乱到认不出是什么,还是是一些数字了
 
变成这个样子了:
{/rtf1/ansi/ansicpg936/deff0/deflang1033/deflangfe2052{/fonttbl{/f0/fnil/fcharset134 /'cb/'ce/'cc/'e5;}}
{/colortbl ;/red255/green0/blue0;/red0/green0/blue0;}
/viewkind4/uc1/pard/fi-60/li60/cf1/lang2052/f0/fs18 04-4-26 11:40:34 /'b7/'a2/'cb/'cd/'c8/'cb/'a3/'ba/'ca/'af/'bc/'d2/'d7/'af/'d0/'c5/'cf/'a2/'d4/'b4/par
/cf2/'b1/'e0/'c2/'eb:183 /'bb/'f5 /'ba/'ee/'c2/'ed/'d0/'e89.6/'c3/'d7/'b5/'a5/'c7/'c5/'b3/'b51/'b2/'bf /'d3/'dc/'c9/'e760/'b6/'d6/'b8/'d6/'b2/'c4 /'d0/'e8/'b0/'eb/'b9/'d2 /'cc/'ab/'d4/'ad10-50/'b6/'d6 /'ba/'e2/'cb/'ae/'d0/'e810/'c3/'d7/'d2/'d4/'c9/'cf/'b3/'b5 /'cc/'ec/'bd/'f2/'d0/'e814/'c3/'d7/'b3/'b5 /'d7/'cd/'b2/'a910-100/'b6/'d6 /'c6/'bd/'d2/'f5/'bb/'d8/'ca/'af/'bc/'d2/'d7/'af30/'b6/'d6/'b8/'d6/'b2/'c4 0311 3601594/par
}

控制字符,汉字,数字。
怎么解决啊。
 
我保存的时候用:RichEdit1.Lines.SavetoFile(Filename);
加载的时候用:RichEdit1.Lines.LoadFromFile(Filename);
 
可能是兼容問題,你為什麼不統一用richedit?
 
To kouchun:
当然是统一用了。最初我用Delphi的RichEdit出现了乱码,后来我试着用LMD7的RichEdit,但问题依旧。
to wqhatnet:
请问有什么解决办法吗?
 
首先建议将你的那些乱七八糟的东西,去掉先
就是'bd/'a8/'b5/'c2/'d3/'d035/'b6/'d6/'bb/'af/'b9
两种方法
1:plainText := True [没有试过]
2:我的笨方法,在保存的时候……
var
i:integer;
list:TStrings;
begin
list:=TStringlist.create;
for i:=0 to richedit1.lines.count-1 do
list.add(richedit1.lines.strings;
list.saveToFile('f:/abc.txt');
list.destroy;
 
To wqhatnet:
您的方法2会将一些控制符去掉。我里面有一些颜色控制符。重新LOAD的时候还需要颜色啊。另外,这些颜色是用户自己控制的。
 
好像不是乱码,而是按rtf格式文件的字符存储和读取了吧
 
第一个方法行不?我没有试过,别人那里抄的
要保存颜色的话
delphi自带了一个例子,是保存为rtf的
C:/Program Files/Borland/Delphi5/Demos/Richedit
 
纯文本文件被保存为RTF格式了.
 
To wqhatnet:
咱们用RichEdit保存后不是RTF格式吗?
To wenjunwu430:
我用RichEdit1.Lines.SaveToFile();
和 RichEdit1.Lines.LoadFromFile();
不是用RTF格式保存和读取吗?


 
C:/Program Files/Borland/Delphi5/Demos/Richedit
我刚才看了一下这个例子,读取很正常的
 
To 刀剑如梦:
能不能说明白点。我用RichEdit控件做的东西不是RFT格式吗?
 
Delphi自己带的C:/Program Files/Borland/Delphi5/Demos/Richedit 例子中,保存数据和重新加载数据,我的和他的一样啊。
都是:
Editor.Lines.LoadFromFile(AFileName);
Editor.Lines.SaveToFile(FFileName);
//我的
RichEdit1.Lines.LoadFromFile();
RichEdit1.Lines.SaveToFile();
不是一个样子吗?我的怎么有问题?



 
应该有什么地方不同的
 
我用Word2000打开也是这个样子啊。
很郁闷啊。
是不是我保存数据的时候出现了错误?我的RichEdit中的数据是动态添加的,是不是保存的时候,刚好来了一条数据,因而导致这个问题?
 
肯定是保存数据的时候出现了问题。有什么建议改吗?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
958
SUNSTONE的Delphi笔记
S
S
回复
0
查看
779
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
顶部