如何比較數字 |
答題得分者是:ccchen
|
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
各位先進:
我有2個檔案,當程式執行時會把2個檔案的值讀出來並且做比較,
如果有一樣ㄉ就不顯示,有不一樣ㄉ值才會顯示並寫入第2個檔請教要如何寫!!
例如:
第一個檔 第二個檔
1 1
2 2
3 3
4
將會顯示有一個檔案並將4寫入第2個檔
謝謝 逃避不一定躲得過
面對不一定最難受
孤單不一定不快樂
得到不一定能長久
失去不一定不再有
轉身不一定最軟弱
別急著說別無選擇
別以為世上只有對與錯
許多事情的答案都不是只有一個
所以我們永遠有路可以走
你能找個理由難過
也一定能找到快樂
懂得放心的人找到輕鬆
懂得遺忘的人找到自由
懂得關懷的人找到朋友
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
1.不知是不是這樣?
var sl1, sl2: TStringList; i: integer; begin sl1 := TStringList.Create; sl2 := TStringList.Create; try if sl1.Count <= sl2.Count then begin for i := 0 to sl1.Count-1 do begin if sl1.Strings[i] <> sl2.Strings[i] then Memo1.Lines.Add('第 ' IntToStr(i 1) ' 行: ' sl1.Strings[i] ' === ' sl2.Strings[i]); end; for i := sl1.Count to sl2.Count-1 do Memo1.Lines.Add('第 ' IntToStr(i 1) ' 行: === ' sl2.Strings[i]); end else begin for i := 0 to sl2.Count-1 do begin if sl1.Strings[i] <> sl2.Strings[i] then Memo1.Lines.Add('第 ' IntToStr(i 1) ' 行: ' sl1.Strings[i] ' === ' sl2.Strings[i]); end; for i := sl2.Count to sl1.Count-1 do Memo1.Lines.Add('第 ' IntToStr(i 1) ' 行: ' sl1.Strings[i] ' ==='); end; finally sl1.Free; sl2.Free; end; end;2.您是要將不一樣部份寫入第二個檔案嗎? --- Have you ever wondered what it would be like? |
pprayer
高階會員 發表:35 回覆:185 積分:174 註冊:2002-03-13 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
|
delphi
初階會員 發表:52 回覆:64 積分:38 註冊:2002-05-21 發送簡訊給我 |
引言:
-------------------------------------------------------------------------------- 要把第 2 個檔案中原本的內容覆蓋掉? --------------------------------------------------------------------------------
我ㄉ程式
if FileExists(ExtractFilePath(paramstr(0)) 'log.txt') then
begin
backstr.Clear;
assignfile(f, ExtractFilePath(paramstr(0)) 'log.txt');
reset(f); readln(f, tempstr);
while Trim(tempstr) <> '' do
begin if Trim(tempstr) <> '' then
backstr.Add(Trim(tempstr));
readln(f, tempstr);
end;
closefile(f);
end else
begin
assignfile(f, ExtractFilePath(paramstr(0)) 'log.txt');
Rewrite(f); for i := 0 to allbackstr.Count - 1 do
begin
Writeln(f, allbackstr.Strings[i]);
end; closefile(f);
end;
我是想要allbackstr跟做backstr比對,如果allbackstr有新增加值就把新增加的值寫到backstr但原有ㄉ值要保留因為當我程式結束在開起時allbackstr跟做backstr比對只要有重覆ㄉ質就不顯示,有新值才顯示並在寫入backstr請教要怎麼去做2者之間ㄉ比對並把新值寫入 逃避不一定躲得過
面對不一定最難受
孤單不一定不快樂
得到不一定能長久
失去不一定不再有
轉身不一定最軟弱
別急著說別無選擇
別以為世上只有對與錯
許多事情的答案都不是只有一個
所以我們永遠有路可以走
你能找個理由難過
也一定能找到快樂
懂得放心的人找到輕鬆
懂得遺忘的人找到自由
懂得關懷的人找到朋友
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
恩 如果你能先將你的需求在心中整理好再來問那會省很多時間 所以你的目的是這樣嗎 ? 1. 有兩個已經存在的檔案且各有其內容
allbackstr 跟 backstr
2. 將 allbackstr 有而 backstr 沒有的值,由 allbackstr 複製到 backstr 內 恩 而你所寫的程式,好像不是這樣ㄝ ! 所以我弄不懂你要什麼 !
不過建議你可以思考一下 1. 你的目的在哪裡
2. 有哪些作法
3. 有哪些元件可以來實現 建議你可以 1.用兩個 TMemo 來實做,這樣可以很方便的處理文字檔,不是由元件盤上拉喔 ! 而是要自己宣告產生,這樣就不必一定要有視覺化介面,TMemo 有方便的檔案讀取與寫回之功能 2.你的檔案是要做什麼用?一個規劃良好的檔案會比一個散亂無規劃的檔案來的好處理,所以依你的目的來規劃檔案,在善用 TMemo 所提供的各項能力,相信一定可以解決你的問題 不過最重要的事,先弄清楚自己的目的,沒有比弄清楚目的,然後以一個有條理、有規則的敘述來整理這要的前置作業更重要的了,一旦這裡的Algorithm 確立了,那程式就好辦了 !
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
如果是純text檔用StringList就容易的多
var l1,l2:TSringlist; i:integer; begin l1:=TStringlist.create; //create兩個Stringlist l2:=TStringlist.create; try l1.loadfromfile(filename1); //載入file1 l2.loadFromFile(FileName2); //載入file1 for i:=0 to l1.count -1 do begin //對file1中之每一行 if Trim(l1[i]) <> '' then if l2.indexof(l1[i]) < 0 then //l2中無此字串 l2.add(l1[i]); //在l2中加入此字串 end; l2.savetofile(filename2); //重存l2 finally l2.free; l1.free; end; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |