主题:请教,帮帮忙!!!!!!!
yzw11
[专家分:0] 发布于 2007-10-08 16:41:00
我想用文本文件记录数(0-255),也就是用符号表示数据,我遇到的问题是1-255个数据都有符号,虽然某些数据在文本里显示的是空符号,但读取的时候还是可以辨认,可数字'0'
什么符号也没有,请教一下如何用符号记录数字0.
var
s:string;
i,i1:integer;
for i:=1 to 255 do
begin
s:=s+chr(i);
end;
memo.Lines.Add(s);//s的值为: .......
上例中如果改为" for i:=0 to 255 do" 后
s 中什么也没有
回复列表 (共6个回复)
沙发
punkrocker [专家分:720] 发布于 2007-10-08 19:52:00
你可以试试256
一个问题发4遍,浪费论坛资源了。。。
板凳
长尾兔 [专家分:3630] 发布于 2007-10-08 23:53:00
哈哈... 该同志用的是String.....
不说了不说了,上面这句话值5分了
3 楼
yzw11 [专家分:0] 发布于 2007-10-09 09:41:00
不回贴等飞机撞,你也太不公平了.
type 型数据的范围是 1-255 . 256=1+255
2楼要我试试256你说有意思吗?那样的回答给5分,我学 delphi才3个月你该给我50分.
4 楼
长尾兔 [专家分:3630] 发布于 2007-10-09 11:37:00
哈哈,注意,1楼和2楼不是同一个人......我只是说我说的“该同志用的是String.....”这句话值5分.....没评论别人的256。。。。。。哈哈
即使你Delphi一天也没有学,但你在另一个贴子里说过你学过C语言,那么,你应该知道String类型(C里虽然没有明确的string类型,但是它的字符数组其实就是字符串,回忆一下,字符数组的最后一个元素是什么?NULL!)是以NULL也就是#0结束的,所以......一个字符序列,如果遇到一个#0就表示这个字符串到此为止...........
因此,你用文本文件存取#0可以,完全可以,但你不能用传统的方法,也就是说不能用string类型来存取,可以考虑一下用TStream......具体自己发挥吧我只是给你提示
还有,我们一直在说“存取”,但存取归存取,可见不可见是另一回事,我没有说存储了就是可见的。呵呵
5 楼
长尾兔 [专家分:3630] 发布于 2007-10-09 12:00:00
TStream是我的一个提示,这个你可以发挥一下,写出成功的代码后可以贴上来大家共享。这个我就不写了。
给你用另一种思路写了一段代码,你试一下,看一看能不能实现“存取”:
type
TMyRcd = Array[0..5] of char;
const
MyRcd1 : TMyRcd = (#2, #1, #0, #9, #8, #10);//假设存取这六个字符
var
MyRcd2 : TMyRcd;//目前MyRcd2的六个元素全部是#0
procedure TForm1.Button1Click(Sender: TObject);//存入c:\test.txt
var
F : File of TMyRcd;
begin
AssignFile(F, 'c:\test.txt');
ReWrite(F);
Write(F, MyRcd1);
CloseFile(F);
end;
procedure TForm1.Button2Click(Sender: TObject);//从c:\test.txt读出
var
F : File of TMyRcd;
I : integer;
begin
AssignFile(F, 'c:\test.txt');
ReSet(F);
Read(F, MyRcd2);//此时已读入MyRcd2,也就是说其内容已经与MyRcd1相同
CloseFile(F);
for I := Low(MyRcd2) to High(MyRcd2) do//因为是不可见字符,所以我显示的是其ASCII码
Showmessage(InttoStr(Ord(MyRcd2[I])));
end;
!!!!最后要特别强调,“存取”与“可见不可见”是两码事!
6 楼
punkrocker [专家分:720] 发布于 2007-10-09 13:47:00
1楼在这里,2楼在上面
我理解能力较差,看不懂问题,从你给出的代码上给的建议
顺便问下,type是什么类型?
我来回复