怎样实现就读取其中得整数部分? |
尚未結案
|
小丫123
初階會員 發表:85 回覆:62 積分:29 註冊:2004-08-31 發送簡訊給我 |
在我得test.txt中有两行这样的数据,我想只读取其中的整数类似的数值,不要NULL,而且希望还是保存成矩阵形式
NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 5 1 0 371 159 522 283 NULL NULL 0 255 NULL True NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 5 1 0 639 164 689 278 NULL NULL 0 255 NULL True NULL NULL NULL
不知道应用对以下的程序做这样的修改
var i:integer; FileStr:TStringList; begin FileStr:=TStringList.Create ; try FileStr.LoadFromFile('test2.txt'); if FileStr.Count >0 then for I:=1 to FileStr.Count-1 do memo1.Lines.Add(FileStr[i]); finally fileStr.Free; end; end; |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
小丫123 您好: 修改如下,不是否符合所需?
procedure TForm1.Button1Click(Sender: TObject); var i, k :integer; FileStr :TStringList; msg : string; begin FileStr := TStringList.Create ; try FileStr.LoadFromFile('test2.txt'); if FileStr.Count >0 then for I:=0 to FileStr.Count-1 do memo1.Lines.Add(FileStr[i]); for I:=0 to Memo1.Lines.Count-1 do begin msg := Memo1.Lines.Strings[I]; for k:=1 to Length(msg)-1 do if ( msg[k]=' ' ) then msg[k] := #10; FileStr.Text := msg; for k:=0 to FileStr.Count-1 do begin if ( (UpperCase(FileStr.Strings[k])='NULL') or (UpperCase(FileStr.Strings[k])='TRUE') ) then FileStr.Strings[k] := '-1'; end; msg := FileStr.Text; for k:=1 to Length(msg) do if ( msg[k]=#10 ) then msg[k] := ' '; Memo1.Lines.Strings[I] := msg; end; finally fileStr.Free; end; end;RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====##### |
小丫123
初階會員 發表:85 回覆:62 積分:29 註冊:2004-08-31 發送簡訊給我 |
程序运行出来的结果如下:
0 5 1 0 371 159 522 283 NULL NULL 0 255 NULL True NULL NULL NULL
0 5 1 0 639 164 689 278 NULL NULL 0 255 NULL True NULL NULL NULL
0 跟后面的空格没有去掉,后面的NULL True还是读取进来了。 發表人 - 小丫123 於 2004/12/09 21:29:54 發表人 - 小丫123 於 2004/12/09 21:32:41
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
|
小丫123
初階會員 發表:85 回覆:62 積分:29 註冊:2004-08-31 發送簡訊給我 |
|
小丫123
初階會員 發表:85 回覆:62 積分:29 註冊:2004-08-31 發送簡訊給我 |
richtop 您好:
不好意思我忘记说了,我将程序中 FileStr.Strings[k] := '-1';改成 FileStr.Strings[k] := ' ';
运行出来的结果是
0(有几个空格)5 1 0 371 159 522 283 NULL NULL 0 255 NULL True NULL NULL NULL
0(有几个空格)5 1 0 639 164 689 278 NULL NULL 0 255 NULL True NULL NULL NULL
不知道程序哪里有问题 發表人 - 小丫123 於 2004/12/10 09:27:12
|
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
小丫 您好: 不好意思!叫小丫好像比較親切! 我不太明白您所謂的:
<>我想只读取其中的整数类似的数值,不要>
所謂的"保存成矩阵形式",是啥意思?我的認知是:如果原先有十個資料,取出數值的部分,其他的資料位置仍予保留,形成矩陣的型式。
還是您根本只要把同列( class="code">
|
小丫123
初階會員 發表:85 回覆:62 積分:29 註冊:2004-08-31 發送簡訊給我 |
richtop您好:
谢谢你叫我小丫,我喜欢别人这样称呼我。
我想表达的意思是
NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 5 1 0 371 159 522 283 NULL NULL 0 255 NULL True NULL NULL NULL NULL 0 NULL NULL NULL NULL NULL NULL NULL NULL NULL 5 1 0 639 164 689 278 NULL NULL 0 255 NULL True NULL NULL NULL
我只想得到其中的整数部分,并且能按它们原来所在的行进行排列如:
0 5 1 0 371 159 522 283 0 255
0 5 1 0 639 164 689 278 0 255
并将他们保存到另外一个append.txt 等一会用到时读取
不知道该怎样修改
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
小丫﹕您好﹗ 另一種方法﹐供您參考﹕
procedure TForm1.Button1Click(Sender: TObject); Var F1, F2 : TextFile; Str : String; begin AssignFile(F1, 'F:\Test.txt'); AssignFile(F2, 'F:\Append.txt'); Reset(F1); ReWrite(F2); While Not Eof(F1) do begin ReadLn(F1, Str); Str := StringReplace(Str, 'Null', '', [rfReplaceAll, rfIgnoreCase]); Str := StringReplace(Str, 'True', '', [rfReplaceAll, rfIgnoreCase]); WriteLn(F2, Str); end; CloseFile(F1); CloseFile(F2); end;========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟 |
richtop
資深會員 發表:122 回覆:646 積分:468 註冊:2003-06-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |