Deutsch
Quelltexte/ Codesnippets

Datei Text Vergleich

 
Text Datei Vergleich Prozedur - hab ich irgendwann mal gebraucht ^^
Prozedur stellt nur fest ob die Textfiles exakt gleich sind. Es werden keine Unterschiede gefiltert.

 {$iq}//xpse
cls
print "is exact gleich?: "+if(fle_compareexact ("org.txt","second.txt"),"Jo","Nö")
waitkey
end

proc fle_compareexact

    parameters fle1$,fle2$
    declare ex%,s$,ss$
    assign #1,fle1$
    assign #2,fle2$
    reset #1
    reset #2
    ex%=0

    whilenot ex%

        input #1,s$
        input #2,ss$

        if (trim$(s$)<>trim$(ss$))

            ex%:=2

        elseif ( eof(#1) & eof(#2) )

            ex%:=1

        elseif eof(#1)

            ex%:=2

        elseif eof(#2)

            ex%:=2

        endif

        case ( eof(#1) & eof(#2) ) : casenot ex% : ex%:=1

    wend

    close #1
    close #2
    return if(equ(ex%,1),1,0)

endproc

 
29.11.2004  
 




Frank
Abbing
Hi,

hier meine Variante, mit der beliebige Dateien auf Gleichheit geprüft werden können. Und das sehr schnell.
Dateien auf Gleichheit prüfen
(c) Frank Abbing
Set("ErrorLevel",0)
Declare text$
Def CompareStrings(2) !"KERNEL32","lstrcmpi"
Cls
text$=SameDatas("Dateiname_1","Dateiname_2")
Print "Die beiden Dateien sind "+text$+"."
WaitInput
End
Zwei Dateien vergleichen
SameDatas para1, para2
para1 = Name von Datei 1
Para2 = Name von Datei 2

Proc SameDatas

    Parameters gtext1$,gtext2$
    Declare gx&,gx1&,gx2&,gbereich1#,gbereich2#
    gx1&=FileSize(gtext1$)
    gx2&=FileSize(gtext2$)
    gx&=gx1&+gx2&

    If ((gx&>0) and (gx1&=gx2&))

        Dim gbereich1#,gx1&
        Assign #1,gtext1$
        OpenRW #1
        @BlockRead(#1,gbereich1#,0,gx1&)
        CloseRW #1
        Dim gbereich2#,gx2&
        Assign #1,gtext2$
        OpenRW #1
        @BlockRead(#1,gbereich2#,0,gx2&)
        CloseRW #1
        gx&=CompareStrings(gbereich1#,gbereich2#)
        Dispose gbereich1#
        Dispose gbereich2#

        If (gx&=0)

            Return "gleich"

        Else

            Return "ungleich"

        EndIf

        Return "gleich"

    Else

        Case (gx1&<>gx2&): Return "verschieden groß und damit ungleich"
        Return "nicht vorhanden oder fehlerhaft. Zumindest eine davon"

    EndIf

EndProc

 
29.11.2004  
 




Rolf
Koch
Hi Frank
und bei mir funktioniert Dein Beispiel nicht.

CROFANA.TXT und CROFANB.TXT angelegt und gleicher Inhalt.
Return ist: nicht vorhanden oder fehlerhaft. Zumindest eine davon

Ist aber alles vorhanden und in Ordnung.

Rolf
 
29.11.2004  
 




Frank
Abbing
Hi,

dann konnte das Programm eine davon vielleicht nicht laden?
Fehlt sicher nur ein FileMode 0. Könntest du das nachprüfen bei dir?
 
30.11.2004  
 




Rolf
Koch
Hallo Frank,
nein beide voll in Ordnung. Vorher frisch angelegt. Also ganz normale Dateien.
Nicht schreibgeschützt oder so.

Rolf
 
30.11.2004  
 



Meine Proc hatte einen kleinen logischen Fehler - bei Dateiende wars egal ob die letzten beiden Zeilen übereinstimmten wenn beide Files gleich-viele Zeilen hatten.

Habs behoben.

@Frank: Deine Proc ist weniger geeignet Textdateien zu vergleichen. Textdateien müssen nicht die gleiche Größe haben um gleich zu sein - auch müssen sie nie byteexact-gleich sein. Wie der Name schon sagt - der selbe Text muß drinnstehen - auch wenn an der richtigen Stelle.

Natürlich ist ne while { input Kombination immer ne SpeedKrücke - und natürlich ließe sich die Operation auch als Speicheroperation durchführen. Bisl mempos auf #10 etc.

Salve, iF
 
30.11.2004  
 




Frank
Abbing
iF, Leerzeichen usw. gehören ebenso zum Text und seiner Formatierung. Egal ob Textdatei oder sonstige, Übereinstimmung heißt bei mir exakte Übereinstimmung. Aber bitte.
Rolf, was ist da los. Du bist des Programmierens doch mehr als fähig. Findest du das Problem nicht? Ich kann nichts entdecken...
 
30.11.2004  
 




Rolf
Koch
Naja, ich bin zu mehr fähig, das mag sein. Jedoch arbeite ich im Einzelhandel und es kurz vor Weihnachten ...... muss ich da noch viel sagen.
Ich hab z.Zt. durch den Stress sogar Probleme einen fünfzeiler zu schreiben, ohne das ich mich dauernd verhaue
Nee, aber es liegt wirklich nix ungewöhnliches vor.
Beide Textdateien ob gleich oder abgeändert melden den Fehler.
Beide Textdateien sind gerade frisch erstellt worden.
Beide Textdateien sind für den Lese/Schreibzugriff bestens geeignet.
Leider wie bereits aus oben genannten Gründen und wegen Noc Update (damit ich endlich wieder an meinen Roc gehen kann - bald kommt ja P9 und da soll Roc auch verbessert sein) komme ich nicht dazu Deinen Code detailgenau durchzugehen. Aber ich schätze, daß Dein Code doch korrekt eingerichtet ist, oder?

Rolf
 
30.11.2004  
 



Frank ich weiß das Leerzeichen zum Text gehören. Ich hab doch auch nie was anderes behauptet - du bist soo gemein. Ich schrieb Textdateien müssen nicht die gleiche Größe haben und auch nicht byte-exact.

Das kann zum Bleistift heißen das eine Textdatei auch dann den gleichen Textinhalt hat wenn diese z.B. mit anderen Steuerzeichen gespeichert ist.

z.B. nur #10 statt #13#10

Aber was erzähl ich Dir - sicher nix Neues.

Das Trim was oben steht ist tatsächlich weniger richtig. Hängt davon ab wofür man die Proc nutzen möchte - möge jeder selbst entscheiden. Da geb ich Dir recht - aber meintest Du das?

Salve, iF
 
30.11.2004  
 




Frank
Abbing
@iF: Klar, habs ja verstanden . Soll der User doch entscheiden, was das richtige für ihn ist, ne?

@Rolf: Schick mir die beiden Dateien doch einfach mal. Natürlich nur, wenn du willst...
Scheint so, als würde FileSize nicht richtig arbeiten...

P.S. Ist Weihnachten nicht das Fest der Ruhe und Entspannung? :biggrin:
 
30.11.2004  
 



[quote:db58989a3e=Frank Abbing]@iF: Klar, habs ja verstanden . Soll der User doch entscheiden, was das richtige für ihn ist, ne? [/quote:db58989a3e]Nain grrrr der Programmierer.

[quote:db58989a3e]@Rolf: Schick mir die beiden Dateien doch einfach mal. Natürlich nur, wenn du willst...
Scheint so, als würde FileSize nicht richtig arbeiten...

P.S. Ist Weihnachten nicht das Fest der Ruhe und Entspannung? :biggrin:[/quote:db58989a3e]Ich wüsste nicht das wir hier was anderes tun.

Salve, iF

 
30.11.2004  
 




Jörg
Sellmeyer
Hallo,
So wie ich daß sehe, bekommt das Programm gar keine Chance ungleiche Dateien zu testen da
If ((gx&>0) and (gx1&=gx2&))
ungleiche Dateien schon ausschließt und gleich zur Fehlermeldung verzweigt.
Mit Or sollte es funktionieren.
Gruß
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
01.12.2004  
 




Zum Quelltext


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

16.423 Betrachtungen

Unbenanntvor 0 min.
PETER195623.03.2016
Hans Hermann18.03.2013

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie