![]() |
AW: File compare
nicht nur grusselig...
Delphi-Quellcode:
Drei verschiedene Pfade für s3 ... sicher daß es nur das eine s3 gibt?
... to vlxsysstate_functions.s3.Count -1 do
Writeln(s3[i2]); test_functions.s3 Es predigen nicht umsonst soviele, daß globale Variablen "böse" sind und man lieber auf Parameter umsteigen sollte. |
AW: File compare
Sollte funktionieren..
Delphi-Quellcode:
function CompareTextFiles (const file1, file2: string): integer;
var s1, s2: string; f1, f2: TextFile; Count: integer; begin Result:= -1; if LowerCase(file1) <> LowerCase(file2) then begin AssignFile (f1, File1); {$I-} Reset(f1); {$I+} if IoResult = 0 then begin AssignFile (f2, File2); {$I-} Reset(f2); {$I+} if IoResult = 0 then begin Count:= 0; Result:= 0; while ((not Eof(f1)) and (not Eof(f2)) and (Result = 0)) do begin Readln(f1, s1); Readln(f2, s2); Inc(Count); if s1 <> s2 then Result:= Count; end; if Result = 0 then if ((not Eof(f1)) or (not Eof(f2))) then Result:= Count+1; closeFile (f2); end; closeFile (f1); end; end; end; |
AW: File compare
Zitat:
Ich hab's mal quasi genauso programmiert, nur andersrum 8-)
Delphi-Quellcode:
Gruss,
procedure GetListDifferences(StringListMaster, StringListToCheck: TStringList;
var AddedList, MissingList: TStringList); var i: integer; begin AddedList.Clear; for i := 0 to StringListToCheck.Count-1 do if (StringListMaster.IndexOf(StringListToCheck[i]) = -1) then AddedList.Append(StringListToCheck[i]); MissingList.Clear; for i := 0 to StringListMaster.Count-1 do if (StringListToCheck.IndexOf(StringListMaster[i]) = -1) then MissingList.Append(StringListMaster[i]); end; procedure GetTextFileDifferences(FileNameMaster, FileNameToCheck: string; var AddedList, MissingList: TStringList); var StringListMaster, StringListToCheck: TStringList; begin AddedList.Clear; MissingList.Clear; if not FileExists(FileNameMaster) or not FileExists(FileNameToCheck) then exit; StringListMaster := TStringList.Create; StringListToCheck := TStringList.Create; try StringListMaster.LoadFromFile(FileNameMaster); StringListToCheck.LoadFromFile(FileNameToCheck); GetListDifferences(StringListMaster, StringListToCheck, AddedList, MissingList); finally StringListMaster.Free; StringListToCheck.Free; end; end; blauweiss |
AW: File compare
@ blauweiss
könntest du mir das etwas erklären?! nur fürs verständnis :) ich verstehe das nämlich so überhaupt nicht, was bekomme ich da als result? der plan ist nämlich als Result immer den Text der betroffenen Zeilen zu erhalten. sry falls die Frage blöd rüber kommt aber das ist neuland :( LG |
AW: File compare
Ob Hash oder die Zeile selbst dürfte doch aus Logiksicht egal sein. Nimm Dir also eine Zeile aus der ersten Datei, suche sie in der zweiten und lösche sie bei Fund aus beiden Stringlisten. Das machst Du Zeile für Zeile, was am Schluss übrig bleibt sind die Unterschiede.
|
AW: File compare
Zitat:
Oder einfach andersrum, wie bei mir: Die nicht gefundenen (=unterschiedlichen) werden gesucht. @value is NULL:
Delphi-Quellcode:
Gruss
procedure TForm1.Button1Click(Sender: TObject);
var AddedList, MissingList: TStringList; begin AddedList := TStringList.Create; MissingList := TStringList.Create; try GetTextFileDifferences('C:\Alt.txt', 'C:\Neu.txt', AddedList, MissingList); ...AddedList enthält jetzt die Einträge von Neu.txt, die nicht in Alt.txt sind ...MissingList enthält die Einträge von Alt.txt, die nicht in Neu.txt sind finally AddedList.Free; MissingList.Free; end; end; blauweiss |
AW: File compare
ah ok, hab das prinzip jetzt verstanden, habe glaube ich zu kompliziert gedacht.
Thank good for the Stringlist xD LG |
AW: File compare
Dafür gibt es doch die Programme Kdiff, Beyondcompare usw. Die dahinterliegenden Algorithmen sind zwar bekannt, aber nicht trivial.
Bisserl Schmalz muss man schon verwenden, aber man kann mit der Levenshtein-Distanz rechnen, nur nicht auf Zeichen- sondern auf Zeilenebene. |
AW: File compare
Zitat:
Levenshteindistanzfreundliche Grüße, blauweiss |
AW: File compare
Sachma, hast du überhaupt kapiert, was ich geschrieben habe?
Was soll der Blödsinn? Wenn es hier um einen Vergleich von zwei Textdateien geht, bei denen die Unterschiede gezeigt werden sollen, wie würdest Du da vorgehen? Erst einen reinkippen, bist du BLAU bist, und dann "ich WEISS nicht" brüllen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz