如何比對兩個文字檔的內容 |
尚未結案
|
Becca
一般會員 發表:5 回覆:7 積分:2 註冊:2003-10-16 發送簡訊給我 |
請問各位大大,有誰可以告訴我如何比對兩個文字檔,
比對primary key相同的,則把第二個文字檔那行的資料(去掉primary key的部份(單別/單號))
寫到第一個文字檔那行資料的後面
(沒有分隔線,要自行判斷每個字串的長度) Text1:
PO04110001A001200411050013
PO04110002B012200411050021
PO04110003A005200411060008
PO04110004C026200411080013
單別1-2碼;單號3-10碼;客戶代號11-14碼;訂購日期15-22碼;訂購數量23-26碼 Text2:
PO04110002AAmemo1
PO04110004BDmemo2 單別1-2碼;單號3-10碼;加工代號11-12碼;備註13-17碼 比對之後==> PO04110001A001200411050013
PO04110002B012200411050021AAmemo1
PO04110003A005200411060008
PO04110004C026200411080013BDmemo2
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
uses StrUtils; procedure TForm1.Button1Click(Sender: TObject); var file1, file2 : TStringList; i, j : Integer; key1, key2, append_str : AnsiString; begin file1 := TStringList.Create(); file2 := TStringList.Create(); file1.LoadFromFile('file1.txt'); file2.LoadFromFile('file2.txt'); i := 0; while (i < file1.Count) and (file2.Count > 0) do begin for j := 0 to file2.Lines.Count - 1 do begin key1 := MidStr(file1.Strings[i], 1, 10); key2 := MidStr(file2.Strings[j], 1, 10); if key1 = key2 then begin append_str := MidStr(file2.Strings[j], 11, 17); file1.Stings[i] := file1.Stings[i] append_str; file2.Delete(j); // 做完就殺掉,省得下次還要重複跑一次 break; // 假設 file2 的每一筆資料前十碼不會重複 end; end; inc(i); end; file1.SaveToFile('file3.txt'); file1.Destory; file2.Destory; end;發表人 - allenchan 於 2004/12/02 22:27:20 |
Becca
一般會員 發表:5 回覆:7 積分:2 註冊:2003-10-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |