Problem mit vergleich zweier Dateien

Anfängerfragen zum Programmieren mit PureBasic.
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Problem mit vergleich zweier Dateien

Beitrag 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.
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Beitrag 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
Ist das Kunst hier, oder kann das weg ?
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag 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?
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Beitrag 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)
Ist das Kunst hier, oder kann das weg ?
Zero_Cool
Beiträge: 84
Registriert: 04.12.2004 15:14

Beitrag von Zero_Cool »

Super! Danke für die Hilfe!!!!
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

Beitrag 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 
Antworten