AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FindFirst: Welche Datei wird gefunden?

Ein Thema von alzaimar · begonnen am 14. Jul 2009 · letzter Beitrag vom 14. Jul 2009
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 09:18
Ein Zulieferer iost per TCP mit unserer Software verbunden und schickt 1x pro Sekunde ein XML-Telegramm. Wird er es nicht los, soll er es zwischenspeichern. Er macht das, indem er das XML einfach in eine Datei speichert. Der Dateiname enthält Datum und Uhrzeit, sodaß die Dateinamen (nach Namen sortiert) so aufgeführt sind, das die älteste Datei 'oben' ist.

Er meint nun, es reicht, per FindFirst nach '*.XML') zu suchen. FindFirst würde schon automatisch die älteste Datei liefern. diese wird dann per TCP verschickt und gelöscht...

Meine Frage: Stimmt das?
Wenn ich die 'erste' Datei in der Directory nehme, verschicke und lösche, entsteht im Verzeichnis ein 'Loch' an der Stelle, das beim nächsten 'CreateFile' wieder verwendet wird, oder?

Also: Liefert FindFirst garantiert die älteste Datei, oder nur irgend eine?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 09:37
Zitat von alzaimar:
Also: Liefert FindFirst garantiert die älteste Datei, oder nur irgend eine?
Hallo,

i.A. liefern FindFileFirst/Next die Dateien so, wie sie bei einem DIR erscheinen, also in der Reihenfolge der Directory-Einträge. Die ist aber nur bekannt, wenn man ein Directory neu anlegt und füllt, und auch darauf würde ich mich nicht verlassen: es kann sich ja um ganz verschiedene Dateisysteme handeln, auch Unix usw. Im Prinzip muss man also davon ausgehen, dass die Reihenfolge zufällig ist. Die grundlegenden Algorithmen sind schon reproduzierbar, aber nachvollziehen kann man sie praktisch nicht, man kann auch keinen Einfluss darauf nehmen.

Gruss Reinhard
  Mit Zitat antworten Zitat
Stormy

Registriert seit: 8. Okt 2005
Ort: LPZ
73 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 09:51
Hi,

du könntest mit FindData die variablen ftCreationTime, ftLastAccessTime und/oder ftLastWriteTime auslesen, dir das dann Mappen und das dann durchlaufen.


Gruß
Stormy
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#4

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 10:26
Dies ist aber auch unsicher,
denn wie schon gesagt wurde, wird jede Sekunde eine Datei gespeichert.
Was also wenn genügend Dateien vorhanden sind, der Durchlauf des Codes länger als eine Sekunde dauert und dann 3 neue Dateie hinzugekommen sind?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 10:35
nja, im Grunde das ganze Verzeichnis auslesen (bzw. alles was zu einer bestimmten Maske paßt) und in einer Liste speichern, dann diese Liste sortieren und abarbeiten ... danach dann wieder das Verzeichnis auslesen und von vorne beginnen ...
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 11:25
Hallo,

ja zu Beginn einmal alle lesen, die älteste Datei abarbeiten/löschen, aus dem Dateinamen Datum und Uhrzeit extrahieren und merken. Im weiteren Verlauf Dateinamen aus gemerktem Datum und Uhrzeit + 1 Sekunde bilden und solange mit FindFirst anhand des gebildeten Dateinamens suchen bis die nächste gefunden wird, usw. usw. ...
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 22:47
Hi,

danke für die vielen Ideen. Ich würde das gar nicht so machen, sondern eine DB nehmen (SQLite reicht ja, 1x PK, 1xTimestamp, 1xBLOB) aber der Kunde macht das nun mal so und ich wunder mich, das ich Daten wie Kraut und Rüben bekomme.

Stellt Euch einfach vor, der Typ hat seit 10 Tagen nix geschickt (=864000 Dateien)... Irgendwie suboptimal, diese Strategie...

Der Beitrag #2 hat meine Frage beantwortet, denke ich. Ich werde ihm also verklickern, das das so net funzen tut.

@Lannes: Eine mögliche Strategie für den Kunden. Werde ich ihm so vorschlagen.

Echt ein geiles Forum
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 22:51
ich glaub im msdn steht es in etwa so das die Reihenfolge nicht definiert ist und dann kommt eine Erklärung wie es sich normalerweise bei ntfs verhält. Aber wie bereits erwähnt ist die Reihenfolge nicht festgelegt und von Dateisystem zu Dateisystem verschieden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 23:04
Hier noch ein paar Informationen dazu:
hy do NTFS and Explorer disagree on filename sorting?
Why do files and directories with no time/date mess up sorting in Explorer?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: FindFirst: Welche Datei wird gefunden?

  Alt 14. Jul 2009, 23:06
Ach Leute, sogar mit Quellenangabe. Weiss, gar nicht, was ich sagen soll...

Doch....


Danke!
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz