Delphi-PRAXiS
Seite 2 von 3     12 3   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Nicht eindeutige Dateinamen zueinander zuordnen (https://www.delphipraxis.net/186356-nicht-eindeutige-dateinamen-zueinander-zuordnen.html)

Perlsau 26. Aug 2015 21:55

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Ist doch alles ganz einfach: Wenn die Einträge in der DB nach Datum sortiert sind, hast du doch schon alle beisammen. Die ersten drei gehören zusammen, die nächsten drei gehören zusammen usw. Und das Datum aus dem Filenamen zu ermitteln, dürfte wohl die leichteste Übung sein ...

Dejan Vu 27. Aug 2015 08:19

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Theoretisch richtig. Aber wenn eine Datei der Dreiergruppe fehlt oder ausnahmsweise eine zusätzliche Datei hinzukommt, passt das nicht mehr.

Ich würde auch die einzelnen 'SC-Status' Dateien nehmen und jeweils die beiden ältesten Dateien dazu packen. Als Kriterium würde ich noch sicherstellen, das sich die Zeitstempel nur um 1-2 Sekunden unterscheiden. Aber die Lösung wurde ja schon skizziert.

jobo 27. Aug 2015 11:14

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Jede Lösung, die sich an der Existenz und Zeit einer der 3 Dateien und oder der Reihenfolge orientiert, geht mglw in die Hose.
Also auch eine Lösung, die die Dateien nach Eingang, also sequentiell analysiert und wegschreibt/weiterverarbeitet.

Da es eh in eine DB / Tabelle kommt, würde ich wie bereits vorgeschlagen dort ansetzen. Dazu wird dann das technische Intervall mit einem Sicherheitszuschlag verwendet und die Zusammengehörigkeit der Dateien anhand dessen bestimmt und in einem extra Feld per gemeinsamer ID markiert (Dateigruppe).
Im Zweifel können dabei auch 2er, 1er oder Ner Gruppen entstehen, die entweder korrekt sind, weil eine Datei fehlt oder aber falsch, weil grad Schaltsekunde, Sommerzeitumstellung oder was weiß ich war.

Alle Daten, besonders die mit mehr oder weniger als 3 Dateien können /sollten geprüft und ggF. korrigiert werden, was ja mit der Zuordnungsspalte möglich ist.

Mavarik 27. Aug 2015 13:51

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Zitat:

Zitat von Rülps (Beitrag 1313631)
Zitat:

Zitat von Mavarik (Beitrag 1313618)
Wie ist den das kleinste Interval für die Erstellung?

Abstände zwischen Events sind aus technischen Gründen immer mindestens 30 Sekunden voneinander entfernt.

Und sieh da schon hast Du Dir die Antwort selber gegeben... Ich gehe mal davon aus, dass Du die Datei nicht selber erzeugst...

Ansonsten...

if Datei gefunden... then
Finde 2 Dateien die maximal +/- 29 Sekunden vor oder nach dieser Datei erzeugt wurden...

Fertig... Ohne Viel bla bla...

Rülps 27. Aug 2015 16:29

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Zitat:

Zitat von Mavarik (Beitrag 1313720)
Zitat:

Zitat von Rülps (Beitrag 1313631)
Zitat:

Zitat von Mavarik (Beitrag 1313618)
Wie ist den das kleinste Interval für die Erstellung?

Abstände zwischen Events sind aus technischen Gründen immer mindestens 30 Sekunden voneinander entfernt.

Und sieh da schon hast Du Dir die Antwort selber gegeben... Ich gehe mal davon aus, dass Du die Datei nicht selber erzeugst...

Ansonsten...

if Datei gefunden... then
Finde 2 Dateien die maximal +/- 29 Sekunden vor oder nach dieser Datei erzeugt wurden...

Fertig... Ohne Viel bla bla...

Was mir an dieser Methode etwas stinkt ist, dass theoretisch eine Datei beispielsweise am 23.12.2014 um 23:59:59 erstellt werden könnte und die anderen beiden eine Sekunde später, d.h. ich muss um wirklich sicherzugehen sogar den Kalender des entsprechenden Jahres mitberücksichtigen, um Schaltjahre auszuschließen, um den richtigen Dateinamen zu identifizieren. Mir graust's vor der Bastelei...
Hmm, um das jetzt innerhalb der Datenbank zu lösen muss ich eine Menge umschreiben, aber ich schau mal, ob das eine befriedigende Lösung gibt.

Klaus01 27. Aug 2015 16:43

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
.. da Du die Datensätze täglich bekommst/abholst sollte das mit dem Schaltjahr, Monatsende etc.
nicht eine so große Rolle spielen.

Grüße
Klaus

nahpets 27. Aug 2015 16:57

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Also bei dem ca. 30 Sekundenintervall sehe ich in der Umwandlung der Datums- und Zeitangaben aus dem Dateinamen in einen TDateTime die sicherste Möglichkeit der Zuordnung von drei Dateien.

Schaltjahr... ist dann egal, es müssen immer in einem Zeitintervall von ca. 2 Sekunden drei Dateien zu finden sein (die über den Dateinamen bzw. die Dateiendung noch eindeutig klassifiziert werden können), ansonsten stimmt (ausgehend von Deinen Vorgaben) irgendetwas nicht.

Du könntest Datum und Uhrzeit auch in die Form YYYYMMDDHHMMSS bringen, dann kannst Du auch über Zeichenfolgen sortieren und bekommst die zusammengehörenden Dateien hintereinander, Plausibilität wie oben.

Ausgehend davon das 1 = 1 Tag ist, ist eine Sekunde (ca.) 1,1574074074074074074074074074074e-5
(= 1 / 24 / 60 / 60)

Drei Dateien sind also in einem Zeitfenster von 2 * 1,1574074074074074074074074074074e-5 zu suchen und zwei Dateisätze liegen ca. 30 * 1,1574074074074074074074074074074e-5 auseinander.
Derartige Berechnungen gehen mit TDateTime ganz einfach, das ist nur ein bisserl Mathematik mit ein Größe-/Kleinervergleichen.

Dies erscheint mir deutlich einfacher, als irgendwie über Zeichenfolgenvergleiche in den Dateinamen zu einer Zuordnung zu kommen.

Rülps 27. Aug 2015 17:26

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Zitat:

Zitat von nahpets (Beitrag 1313756)
Also bei dem ca. 30 Sekundenintervall sehe ich in der Umwandlung der Datums- und Zeitangaben aus dem Dateinamen in einen TDateTime die sicherste Möglichkeit der Zuordnung von drei Dateien.

Schaltjahr... ist dann egal, es müssen immer in einem Zeitintervall von ca. 2 Sekunden drei Dateien zu finden sein (die über den Dateinamen bzw. die Dateiendung noch eindeutig klassifiziert werden können), ansonsten stimmt (ausgehend von Deinen Vorgaben) irgendetwas nicht.

Du könntest Datum und Uhrzeit auch in die Form YYYYMMDDHHMMSS bringen, dann kannst Du auch über Zeichenfolgen sortieren und bekommst die zusammengehörenden Dateien hintereinander, Plausibilität wie oben.

Ausgehend davon das 1 = 1 Tag ist, ist eine Sekunde (ca.) 1,1574074074074074074074074074074e-5
(= 1 / 24 / 60 / 60)

Drei Dateien sind also in einem Zeitfenster von 2 * 1,1574074074074074074074074074074e-5 zu suchen und zwei Dateisätze liegen ca. 30 * 1,1574074074074074074074074074074e-5 auseinander.
Derartige Berechnungen gehen mit TDateTime ganz einfach, das ist nur ein bisserl Mathematik mit ein Größe-/Kleinervergleichen.

Dies erscheint mir deutlich einfacher, als irgendwie über Zeichenfolgenvergleiche in den Dateinamen zu einer Zuordnung zu kommen.

Thx nahpets, an TDateTime hatte ich gar nicht gedacht :thumb: Ich hab' die Datums- und Zeitstempel immer als String mitgeführt und ging davon aus, dass ich alles selber programmieren muss. Ja, ich denke so werde ich vorgehen!

Mavarik 27. Aug 2015 20:52

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Zitat:

Zitat von nahpets (Beitrag 1313756)
Ausgehend davon das 1 = 1 Tag ist, ist eine Sekunde (ca.) 1,1574074074074074074074074074074e-5
(= 1 / 24 / 60 / 60)

Drei Dateien sind also in einem Zeitfenster von 2 * 1,1574074074074074074074074074074e-5 zu suchen und zwei Dateisätze liegen ca. 30 * 1,1574074074074074074074074074074e-5 auseinander.
Derartige Berechnungen gehen mit TDateTime ganz einfach, das ist nur ein bisserl Mathematik mit ein Größe-/Kleinervergleichen.

Ernsthaft?

Wie wäre es mit SecondsBetween(A,B) < 30

Dejan Vu 27. Aug 2015 22:08

AW: Nicht eindeutige Dateinamen zueinander zuordnen
 
Zitat:

Zitat von jobo (Beitrag 1313689)
Jede Lösung, die sich an der Existenz und Zeit einer der 3 Dateien und oder der Reihenfolge orientiert, geht mglw in die Hose.

Wieso? Wenn die Sequenz der Erstellung A,B,C ist und ich nach C suche, und dann alles, was vor C kommt, mitnehme (Zeitdifferenz < Epsilon und 'A,B' <> C) ... was soll daran in die Hose gehen? Logisch: Ohne 'C' geht nix. Aber sonst?

PS: Da die Erzeugung der Dateien nicht eindeutig ist, kann eine nachträgliche Zuordnung per se nicht eindeutig sein. Ich gehe davon aus, das Du genau das meinst...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 Uhr.
Seite 2 von 3     12 3   

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf