Unterscheiden zwischen zwei Programmen

Anfängerfragen zum Programmieren mit PureBasic.
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Unterscheiden zwischen zwei Programmen

Beitrag von Zulman »

Hallo,
ich habe mir ein Programm programmiert, das automatisch eine Datei auf einen ftp server läd, falls diese sich nicht schon dort befindet. Wenn man die Datei auf der Festplatte ändert, soll die Änderung erkannt werden und auf den FTP-Server erneut hochgeladen werden. Das Programm soll im Hintergrund laufen und alle 30 Sekunden überprüfen, ob sich etwas an der Datei geändert hat. Das klappt auch schon, eben bis auf die Tatsache, dass er nicht erkennt ob die datei geändert wurde oder nicht und deshalb immer beim überprüfen die Datei neu hochläd. Ich habe die If Funktion verwendet.

so sah das an sich aus

Code: Alles auswählen

If ReadFile("Datei_auf_Festplatte") = ReadFile("Datei_auf_FTP")
          
Else
  SendFTP usw.
Ich hoffe ihr könnt mir helfen und bedanke mich schon ein mal.

mfg
Zulman
c4s
Beiträge: 1235
Registriert: 19.09.2007 22:18

Beitrag von c4s »

Naja die primitivste Methode wäre, die Datei anhand einer Checksumme
alle 30secs zu vergleichen.
Z.B. könntest du diesen Wert durch die CRC32FileFingerprint()-Funktion
bekommen und dann mit einem Referenz-Wert vergleichen. Sind diese
ungleich, müsste sich deine Datei verändert haben.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Unterscheiden zwischen zwei Programmen

Beitrag von Zulman »

Ok danke ich kann mir schon ein bisschen darunter vorstellen^^ aber kannst du das bitte noch ein bisschen genauer erklähren? Programmiere erst seit ca. 4 Tagen.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Beitrag von Sven »

Ich glaub so:

1. Datei ist lokal gespeichert
2. neuen CRC32 oder MD5-Schlüssel für Datei bilden lassen
3. Schlüssel mit altem Schlüssel vergleichen
4. wenn kein alter Schlüssel oder Schlüssel ungleich, Datei hochladen und Schlüssel merken, sonst nix machen
5. 30 sec warten, weiter mit 2.
Benutzeravatar
orderinchaos
Beiträge: 49
Registriert: 20.06.2008 16:19

Beitrag von orderinchaos »

Hi,

hab dir da kurz ne prozedur gebastelt, vielleicht hilft sie dir ja weiter :

Code: Alles auswählen

Procedure.s CompareCRCFiles(File1$,File2$)
LocalFile = CRC32FileFingerprint(File1$)
RemoteFile = CRC32FileFingerprint(File2$)

If LocalFile = RemoteFile
  Result$ = "Keine Veränderung"
  ProcedureReturn Result$
Else
  Result$ = "Datei wurde verändert"
  ProcedureReturn Result$
EndIf
EndProcedure

Debug CompareCRCFiles("file1.txt","file2.txt")
hoffe konnte dir ein wenig helfen! :mrgreen:
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Unterscheiden zwischen zwei Programmen

Beitrag von Zulman »

Ok, danke für die schnelle Hilfe. Ich werd das mal ausprobieren und melde mich dann obs geklappt hat, oder ob ichs mal wieder nicht zustande bekommen ;) .
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

also, ich find vergleichen des gesamten files oder seiner checksummen
(auch dafür muss das komplette file gelesen werden) doch ein bissel overkill, ihr nicht?

warum vergleichst du nicht einfach das änderungsdatum?
das ist ein simples Fileattribut, was man checken muss, und alles ist wölkchen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Unterscheiden zwischen zwei Programmen

Beitrag von Zulman »

Jo das ist ne sehr gute Idee. Hab ich mir auch schon gedacht aber leider wusste ich nicht ob so was möglich ist und wenn ja wie das geht. Deshalb hab ich nen andren weg gesucht. Wenn du mir einen Code geben könntest, mit dem das möglich ist, währe ich dir sehr dankbar :) .
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

jetz sei mal so lieb und guck in die Hilfe...
ein Tip: du findest was im Kapitel "File System"...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Zulman
Beiträge: 23
Registriert: 29.12.2008 22:19

Unterscheiden zwischen zwei Programmen

Beitrag von Zulman »

Ok, werd ich machen aber muss dafür erst wieder an den PC wo PB drauf installiert ist und das werd ich erst heut Nachmittag/Abend schaffen weil ich jetzt erst noch Hunde-Sitten muss^^
Antworten