AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

File compare

Ein Thema von value is NULL · begonnen am 24. Mai 2011 · letzter Beitrag vom 24. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#1

AW: File compare

  Alt 24. Mai 2011, 15:42
Daran hatte ich auch schon gedacht, aber wie will man das verhindern?

[edit] Abgesehen davon kann das ja auch richtig sein, je nachdem, was man beabsichtigt. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: File compare

  Alt 24. Mai 2011, 15:46
Ins unreine gedacht,
für jede Zeile einen Hash-wert erstellen und gleiche Zeilen/Hash-werte aus dem Topf entfernen.
Was übrig bleibt ist nicht gleich.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#3

AW: File compare

  Alt 24. Mai 2011, 18:41
Ins unreine gedacht,
für jede Zeile einen Hash-wert erstellen und gleiche Zeilen/Hash-werte aus dem Topf entfernen.
Was übrig bleibt ist nicht gleich.

Gruß
K-H
Die beste Idee IMHO.
Ich hab's mal quasi genauso programmiert, nur andersrum

Delphi-Quellcode:
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;
Gruss,
blauweiss
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#4

AW: File compare

  Alt 24. Mai 2011, 18:51
@ 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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.658 Beiträge
 
Delphi 12 Athens
 
#5

AW: File compare

  Alt 24. Mai 2011, 19:00
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
blauweiss

Registriert seit: 19. Jun 2007
142 Beiträge
 
#6

AW: File compare

  Alt 24. Mai 2011, 19:09
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.
Genau !
Oder einfach andersrum, wie bei mir: Die nicht gefundenen (=unterschiedlichen) werden gesucht.

@value is NULL:
Delphi-Quellcode:
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;
Gruss
blauweiss
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#7

AW: File compare

  Alt 24. Mai 2011, 19:18
ah ok, hab das prinzip jetzt verstanden, habe glaube ich zu kompliziert gedacht.

Thank good for the Stringlist xD

LG
  Mit Zitat antworten Zitat
FredlFesl

Registriert seit: 19. Apr 2011
293 Beiträge
 
Delphi 2009 Enterprise
 
#8

AW: File compare

  Alt 24. Mai 2011, 19:23
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.
Das Bild hängt schief.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.739 Beiträge
 
Delphi 6 Enterprise
 
#9

AW: File compare

  Alt 24. Mai 2011, 15:48
[edit]Bezieht sich auf #36, war zu lahm[/edit]

Kannste nicht verhindern. Man kann jetzt die Fuzzy-Pistole rausholen und Ähnlichkeitsanalysen machen usw. aber wie du schon sagst: Es hängt davon ab, was man damit machen will und vllt. ist es genauso schon beabsichtigt.
Ralph
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#10

AW: File compare

  Alt 24. Mai 2011, 17:46
hm ihr habt recht... Die Idee von mir ist momentan zerstört

Der Plan war eigentlich mir alle installierten programme und windows patches auszulesen. Diese speichere ich in ein Textfile.

anschließend starte ich das Programm neu und lese mir die programme erneut ein, dann werden die frisch eingelesenen mit dem vorhin abgelegten file verglichen.

Sollte sich etwas geändert haben reagiere ich dementsprechend... Das File ändert sich NIE, habe dazu einen Pararmeter eingebaut der die Liste bei bedarf neu erstellt.

Wie könnte ich das realisieren? Die Funktion zum auslesen der Programme über die Registry funktioniert eigentlich prima aber die compare geschichte zerbricht mir den Kopf!

LG
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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