線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1209
推到 Plurk!
推到 Facebook!

請問如何刪除文字檔某一段內容?

答題得分者是:timhuang
wwwbbs
初階會員


發表:41
回覆:59
積分:25
註冊:2003-05-23

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-18 22:45:07 IP:220.229.xxx.xxx 未訂閱
有一文字檔內容有3000多行,開頭前4碼為行號,長度不一定,若要刪除第200行到2000行必須用滑鼠拖曳,請問可以用程式解決嗎?因為常需要刪除中間某一大段,所以想用程式代勞。謝謝
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-19 00:05:14 IP:61.62.xxx.xxx 未訂閱
Hi, 簡單用兩個 TextFile 循序作業, 試試看,    
var
  fSrc, fDst: TextFile;
  i: Integer;
  s: string;
begin
  AssignFile(fSrc, 'c:\1.txt');
  Reset(fSrc);
  AssignFile(fDst, 'c:\2.txt');
  ReWrite(fDst);
  i := 0;
  while not Eof(fSrc) do
  begin
    i := i 1;
    ReadLn(fSrc, s);
    if(i>=200) and (i<=2000) then
      Continue
    else
      WriteLn(fDst, s);
  end;
  CloseFile(fSrc);
  CloseFile(fDst);
  ShowMessage('finished');
end;
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-19 12:40:53 IP:219.134.xxx.xxx 未訂閱
是listbox的話,用滑鼠做群標記(multiselect要為true),要把標記的行全刪除,可以用listbox1.DeleteSelected............一行指令全部刪掉,不用for.. if.....    如果是要跑程式把特定行刪除的話(刪除200到2000行之間),那就跑for if,但是切記,一定要從下往上刪,不然刪除的時候一定會造成新的列數和你要刪的原列碼不同,造成錯誤
for i := listbox1.items.count-1 to 0 do 
  if i>=200 and i<=2000 then listbox1.items.delete(i);
許下第一千零一個願望 有一天幸福會聽我的話
japhenchen
高階會員


發表:51
回覆:444
積分:184
註冊:2003-07-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-10-19 12:46:47 IP:219.134.xxx.xxx 未訂閱
如果要刪除的內容開頭編號可能發生和list不同的話,那就要抓前四碼做判斷
for i := listbox11.items.count-1 to 0 do begin
  lineid:=strtointdef(copy(listbox1.items[i],1,4),-1)
  if (lineid>=0) and (lineid>=200) and (lineid<=2000) then 
    listbox1.items.delete(i);   
end;
(記得一定要從尾刪到頭) 許下第一千零一個願望 有一天幸福會聽我的話
wwwbbs
初階會員


發表:41
回覆:59
積分:25
註冊:2003-05-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-10-19 22:40:49 IP:220.229.xxx.xxx 未訂閱
謝謝timhuang大大,這正是我要的結果 thanks 也要謝謝 >
系統時間:2024-05-17 10:57:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!