全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:936
推到 Plurk!
推到 Facebook!

如何显示#00后的字符串?请各位帮帮小弟!

答題得分者是:christie
jim19
一般會員


發表:1
回覆:1
積分:0
註冊:2009-02-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-02-08 22:57:44 IP:221.223.xxx.xxx 訂閱

[code delphi]
var
vstream:tfilestream;
c:array[1..100] of char;
s:string;
begin
vstream:=tfilestream.Create('c:\1.txt',fmopenread);
setlength(s,100);
vstream.Read(c,100);
move(c,s[1],100);
showmessage(inttostr(pos(#00,s)));
showmessage(s);
vstream.Free;
end;
[/code]

本程序读取1.txt中的100个字节,在100个字节中有#00,而win32程序中#00是作为字符串结尾的,所以用showmessage(s)无法显示100字节中#00以后的字符,但是pos能够在程序中找到#00的位置,而且在调试的时候,变量s中也显示的完整的100个字符串。

请各位帮帮忙,看看如何才能showmessage字符串中所有的字符。

chenyk
高階會員


發表:14
回覆:95
積分:171
註冊:2002-07-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-02-16 10:23:34 IP:125.230.xxx.xxx 訂閱
從程式來看
你會做一個 inttostr()的動作,既然showmessage()無法處理#0
那麼不如直接用一個迴圈做數值轉字串的處理
for i:=1 to 100
begin
s[i] := chr(s[i] 48);
end;
christie
資深會員


發表:30
回覆:299
積分:475
註冊:2005-03-25

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-02-18 16:08:14 IP:59.125.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var
vstream:tfilestream;
c:array[1..100] of char;
s:string;
i:integer;
begin
vstream:=tfilestream.Create('d:\1.txt',fmopenread);
setlength(s,100);
vstream.Read(c,100);
move(c,s[1],100);
i:=pos(#0, s);
while i>0 do
begin
s:=copy(s,1,i-1) ' ' copy(s,i 1,100);
i:=pos(#0, s);
end;
showmessage(s);
vstream.Free;
end;
------
What do we live for if not to make life less difficult for each other?
jim19
一般會員


發表:1
回覆:1
積分:0
註冊:2009-02-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-28 17:32:15 IP:221.223.xxx.xxx 訂閱
非常感谢楼上大侠。!!!
系統時間:2024-05-15 23:40:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!