Seite 1 von 1

Problem mit vergleich zweier Dateien

Verfasst: 26.12.2005 15:39
von Zero_Cool
Hallo Zusammen

Ich verwende folgenden Code:

Code: Alles auswählen

ReadFile  (1, "c:\Dev\_xx.txt")
ReadFile  (2, "c:\Dev\_xx2.txt") 
CreateFile(3, "c:\Dev\out.txt") 

Repeat 
  UseFile(1) 
  Wort$ = ReadString() 
  UseFile(2) 
  Repeat 
    If FindString(ReadString(), Wort$, 0) 
      Gefunden = 1 
    EndIf  
  Until Eof(2) Or Gefunden 
  FileSeek(0) 
  UseFile(3) 
  
If Gefunden 
    WriteStringN(Wort$ + " gefunden")
 Else 
    WriteStringN(Wort$ + " nicht gefunden") 
EndIf 
  Until Eof(1)
Nun funktioniert das Script wunderbar wenn nur jeweils 1 Zeile in beiden Dateien vorhanden ist. Sind nun in der ersten Datei mehrere Zeilen zum vergleichen vorhanden stimmt , stimmt ab der zweiten Zeile das Ergebnis nicht mehr. Ab Vergleichszeile 2 schreibt er in Datei 3 jeweils immer nur "gefunden". Dies macht er auch, wenn die 2. Datei zum vergleich leer ist! Dabei sollte er ja jeweils pro Zeile der ersten Datei, in File drei ein "nicht gefunden" schreiben.

Verfasst: 26.12.2005 16:32
von Captn. Jinguji
Klappt doch prima, :mrgreen:
WENN man "gefunden" am Anfang direkt hinter dem Repeat auf 0 setzt,
sonst wird es beim ersten Finden eines Strings auf 1 gesetzt und bleibt dann so

Verfasst: 26.12.2005 16:38
von Zero_Cool
Danke für die Hilfe! Leider habe ich gerade kein Pure Basic zur Hand. Das heisst, wie folgt würde der Code funktionieren:

Code: Alles auswählen

ReadFile  (1, "c:\Dev\_xx.txt") 
ReadFile  (2, "c:\Dev\_xx2.txt") 
CreateFile(3, "c:\Dev\out.txt") 

Repeat 
Gefunden = 0
  UseFile(1) 
  Wort$ = ReadString() 
  UseFile(2) 
  Repeat 
    If FindString(ReadString(), Wort$, 0) 
      Gefunden = 1 
    EndIf  
  Until Eof(2) Or Gefunden 
  FileSeek(0) 
  UseFile(3) 
  
If Gefunden 
    WriteStringN(Wort$ + " gefunden") 
 Else 
    WriteStringN(Wort$ + " nicht gefunden") 
EndIf 
  Until Eof(1)
Respektive wie hat dein Code ausgesehen?

Verfasst: 26.12.2005 16:42
von Captn. Jinguji
Ja. So hat er ausgesehen.
Hab Deinen auch grad mal perCut&Paste nochmal getestet.
Funktioniert! (Hätt ja sein können, dass bei bei Dir noch ein Tippfehler steckt. Läuft aber)

Verfasst: 26.12.2005 16:47
von Zero_Cool
Super! Danke für die Hilfe!!!!

Verfasst: 26.12.2005 18:06
von Hroudtwolf
Kannste auch einfacher haben...

Code: Alles auswählen

Ergebnis1$ = MD5FileFingerprint(Dateiname1$)
Ergebnis2$ = MD5FileFingerprint(Dateiname2$)
If Ergebnis1$=Ergebnis2$
   Debug "Die Dateien sind gleich"
   Else
   Debug "Warnung !!!"
   Debug "Selbstzerstörung einleiten !"
   Debug "Die Dateien sind nicht gleich."
   Debug "Alarm"
   Debug "Alarm"
   Debug "Stromschock auf Tastatur leiten."
EndIf