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

怎样实现就读取其中得整数部分?

尚未結案
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-09 20:08:02 IP:218.65.xxx.xxx 未訂閱
在我得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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-09 21:14:23 IP:211.76.xxx.xxx 未訂閱
小丫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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-09 21:22:45 IP:218.65.xxx.xxx 未訂閱
程序运行出来的结果如下: 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-09 23:26:03 IP:211.76.xxx.xxx 未訂閱
小丫123 您好:    我執行的結果是: NULL True 都換成是-1,而不是您貼上來的結果。 不知出了啥問題了?
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-10 08:47:01 IP:218.65.xxx.xxx 未訂閱
为什么后面的Null true还是能读进来呢? 發表人 - 小丫123 於 2004/12/10 09:25:18
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-10 08:50:31 IP:218.65.xxx.xxx 未訂閱
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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-10 16:51:58 IP:140.129.xxx.xxx 未訂閱
小丫 您好:    不好意思!叫小丫好像比較親切! 我不太明白您所謂的: <>我想只读取其中的整数类似的数值,不要> 所謂的"保存成矩阵形式",是啥意思?我的認知是:如果原先有十個資料,取出數值的部分,其他的資料位置仍予保留,形成矩陣的型式。 還是您根本只要把同列( class="code"> { 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; } index := 0; while( index RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
小丫123
初階會員


發表:85
回覆:62
積分:29
註冊:2004-08-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-11 13:34:06 IP:218.65.xxx.xxx 未訂閱
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-11 14:24:05 IP:202.62.xxx.xxx 未訂閱
小丫﹕您好﹗    另一種方法﹐供您參考﹕
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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-11 14:46:57 IP:211.76.xxx.xxx 未訂閱
小丫 您好:    在上一篇的回答中,已經完成您想要的功能了!
系統時間:2024-05-22 1:43:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!