Italia
Fonte/ Codesnippets

File Text Vergleich

 
Text File 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 File auf Gleichheit geprüft werden können. Und das sehr schnell.
File 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 File sind "+text$+"."
WaitInput
End
Zwei File vergleichen
SameDatas para1, para2
para1 = Name von File 1
Para2 = Name von File 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 grande 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 File.
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 Dimensione 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 naturalmente 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 è 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 per den Lese/Schreibzugriff bestens geeignet.
Leider wie bereits aus oben genannten Stabilire 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 Dimensione 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 per ihn ist, ne?

@Rolf: Schick mir die beiden File 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 per ihn ist, ne? [/quote:db58989a3e]Nain grrrr der Programmierer.

[quote:db58989a3e]@Rolf: Schick mir die beiden File 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
Ciao,
So wie ich daß sehe, bekommt das Programm gar keine Chance ungleiche File zu testen da
If ((gx&>0) and (gx1&=gx2&))
ungleiche File schon ausschließt und gleich zur Fehlermeldung verzweigt.
Mit Or sollte es funktionieren.
Saluto
Jörg
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
01.12.2004  
 




Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

16.451 Views

Untitledvor 0 min.
PETER195623.03.2016
Hans Hermann18.03.2013

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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