TStringList 刪除Memo 的問題 |
答題得分者是:st33chen
|
sssp116
一般會員 發表:23 回覆:27 積分:10 註冊:2008-12-05 發送簡訊給我 |
小弟做一個從DOS系統轉文字檔再從文字檔轉入到資料庫的程式~這一小段文字檔
~X1L3D1; xxxx股份有限公司 採購資料明細表 ~X12L6D0 製表編號: 6160 印製日期: 980415-09:01 製表單位: 頁 次: 第( 0001 )頁 -------------------------------------------------------------------------------- 採購單號: P9701001 供 應 商: 4110 ================================================================================ 項 物料代號 品名規格 單位 數 量 單 價 金 額 預交日 == ========== ==================== ==== ======== ========= ============ ======== 01 E10-1651-0 AS27.5溫度開關KA-313 個 100.0 385.0 38,500.0 97/01/25 == ========== ==================== ==== ======== ========= ============ ======== 小計: 38,500.0 小弟利用一個TStringList載入此文字檔並在迴圈做判斷有符合條件則刪除此行並回存 之後再Memo上出來,現在問題是我的判斷式我確定沒有寫錯~可是他就一直不執行 是有回存,但是就是if 裡面都沒有做!又或者不符合條件?小弟疑問在這~希望前輩們解答 小弟想要得到的結果是: 採購單號: P9701001 供 應 商: 4110 01 E10-1651-0 AS27.5溫度開關KA-313 個 100.0 385.0 38,500.0 97/01/25 [code delphi] procedure TForm1.FLBox1DblClick(Sender: TObject); var TF2:textfile; str:string; i,j,n,k:integer; s1:tstringlist; begin bit_t.Enabled := true; s1:=tstringlist.Create(); s1.LoadFromFile(flbox1.FileName); for n:= s1.Count-1 downto 0 do begin if (trim(s1.Strings[n]) = '~') or (trim(s1.Strings[n]) = '採購資料明細表') or (trim(s1.Strings[n]) = '製表編號') or (trim(s1.Strings[n]) = '製表單位') or (trim(s1.Strings[n]) = '-') or (trim(s1.Strings[n]) = '=') or (trim(s1.Strings[n]) = '項') or (trim(s1.Strings[n]) = '小計') then s1.Delete(n); end; s1.SaveToFile(flbox1.FileName); for i:=0 to FLBox1.items.count-1 do begin if FLBox1.selected[i] then begin Memo1.Lines.LoadFromFile(FLBox1.Items.Strings[i]); form1.Caption := '採購資料轉檔系統 檔名:' ExtractFileName(FLBox1.FileName); end; end; j:=filecreate('C:\TF2.txt'); fileclose(j); assignfile(TF2,'C:\TF2.txt'); rewrite(TF2); for k:=0 to memo1.Lines.Count do begin begin writeln(TF2,memo1.Lines.Strings[k]); end; end; closefile(TF2); [/code] 編輯記錄
sssp116 重新編輯於 2009-04-30 08:27:49, 註解 無‧
|
pedro
尊榮會員 發表:152 回覆:1187 積分:892 註冊:2002-06-12 發送簡訊給我 |
trim是截斷左右空白,由您的需求,改用pos(xx,xx)>0
判斷式才會成立 ===================引 用 sssp116 文 章=================== [code cpp] if (trim(s1.Strings[n]) = '~') or (trim(s1.Strings[n]) = '採購資料明細表') or (trim(s1.Strings[n]) = '製表編號') or (trim(s1.Strings[n]) = '製表單位') or (trim(s1.Strings[n]) = '-') or (trim(s1.Strings[n]) = '=') or (trim(s1.Strings[n]) = '項') or (trim(s1.Strings[n]) = '小計') then s1.Delete(n); [/code] |
小傑克
資深會員 發表:5 回覆:209 積分:357 註冊:2009-02-16 發送簡訊給我 |
你可以改一下下面這行,用Debug 模式看看stmp 資料是否正確
===================引 用 sssp116 文 章=================== procedure TForm1.FLBox1DblClick(Sender: TObject); var TF2:textfile; str , stmp:string; i,j,n,k:integer; s1:tstringlist; begin bit_t.Enabled := true; s1:=tstringlist.Create(); s1.LoadFromFile(flbox1.FileName); for n:= s1.Count-1 downto 0 do begin stmp := trim(s1.Strings[n]) ; if (stmp = '~') or (stmp = '採購資料明細表') or (stmp = '製表編號') or (stmp = '製表單位') or (stmp = '-') or (stmp = '=') or (stmp = '項') or (stmp = '小計') then s1.Delete(n); end; s1.SaveToFile(flbox1.FileName);
------
額有朝天骨,眼中有靈光 |
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
if 這一段 if (copy(trim(s1.Strings[n]),1,1) = '~') or (copy(trim(s1.Strings[n]),1,14) = '採購資料明細表') ... 以下類似改法 or (trim(s1.Strings[n]) = '製表編號') or (trim(s1.Strings[n]) = '製表單位') or (trim(s1.Strings[n]) = '-') or (trim(s1.Strings[n]) = '=') or (trim(s1.Strings[n]) = '項') or (trim(s1.Strings[n]) = '小計') then s1.Delete(n); end;
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
sssp116
一般會員 發表:23 回覆:27 積分:10 註冊:2008-12-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |