中国Delphi真的没高手了么?不,我期待着中国的强大!!高手问题,不胜感激!!(200分)

A

archy

Unregistered / Unconfirmed
GUEST, unregistred user!
将一个包含回车(#13)和换行(#10)及其它ascii字符的加密文本
memoMiWen.lines.savetofile(a.txt)之后
(#13和#10就是#13和#10,在memoMiWen中表现为|符号,不换行),
若再打开(memoMiWen.lines.loadfromfile(a.txt)),则会因读到#13或#10而自动回车
换行,而我就是要让它是#13就读字符#13,不要自动换行,不然解密就不好解了。
恳请各位高手赐教,不胜感激。
怎样让它读到回车或换行时在memo中表现为字符呢?
参考:(仍无法完成要求)
procedure TfrmMain.btnOpen2Click(Sender: TObject);
Var str : string;s:Tstringlist;
i,n:integer ;
begin
if opendialog1.Execute then
begin
memo2.Lines.Clear;
filename:=opendialog1.FileName;
//memo2.Lines.LoadFromFile (filename);
s:=Tstringlist.Create;
s.LoadFromFile(filename);
n:=length(s.text) ;
for i:=1 to ndo
begin
if s.text=#13 then
str:=str+#$D // or#$D
else
if s.text=#10 then
str:=str+#$A
else
str:=str+s.text;
end;

memo2.Lines.Append (str);
s.free;
end;
end;
 
果然豪爽——一个问题开两个贴子!
把代码给你贴上吧:
procedure TForm1.Button2Click(Sender: TObject);
var
i,n:Integer;
str:string;
Buf:array[0..1024] of Char;
//预先设定的缓冲区,也可以使用动态数组
Fs:TFileStream;
begin
if OpenDialog1.Execute=false then
exit;
Fs:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
n:=Fs.Size;
if n>1024 then
n:=1024;
Fs.Seek(0,soFrombegin
ning);
Fs.Read(Buf,n);
//它可以读出带有char(0)的数据,而TStringList的loadfromfile就不行
Caption:=IntToStr(n);
SetLength(str,n);
Fs.Free;
for i:=1 to ndo
begin
if Buf[i-1]>=' ' then
str:=Buf[i-1]
else
str:='.';
//将不可显示字符转化为"."
end;
Memo1.Text:=str;
end;

加、解密操作都针对Buf进行。 OK?
 
解决的方法很多
你也可以在SaveToFile之前把#13#10使用其它特殊可打印字符替换
Load回来后在替换回来不就得了

 
太简单了
为什么不用TFileStream呢?
 
再补充一句,要成delphi高手,不深入vcl代码能行吗?不会写控件能行码?
 
会用别人的控件也行.我觉得
 
thanks very much to all ,
especiall for :creation-zy and Tintin
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
748
import
I
I
回复
0
查看
706
import
I
顶部