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

TStringList 刪除Memo 的問題

答題得分者是:st33chen
sssp116
一般會員


發表:23
回覆:27
積分:10
註冊:2008-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-04-30 05:42:35 IP:118.232.xxx.xxx 訂閱
小弟做一個從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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-04-30 08:56:14 IP:60.248.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-04-30 08:56:59 IP:59.112.xxx.xxx 訂閱
你可以改一下下面這行,用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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-04-30 08:59:51 IP:122.116.xxx.xxx 未訂閱
您好,

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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-04-30 09:20:57 IP:60.248.xxx.xxx 訂閱
st33chen 大大:

感謝您的作法~我做出來了。
prdro,小傑克 大大

你們的作法我也試過了可行,因為st33chen較為我修改方便所以我給了他最佳答案,謝謝各位前輩們的指導^^
系統時間:2024-04-20 16:47:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!