Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Letztes JPEG in einem Ordner erkennen und kopieren (https://www.delphipraxis.net/68862-letztes-jpeg-einem-ordner-erkennen-und-kopieren.html)

Mirco 6. Mai 2006 23:11


Letztes JPEG in einem Ordner erkennen und kopieren
 
Hallo
Ich habe eine Webcam die speichert permanent ihre Bilder als JPEG (riesige Datenmengen)in einem Ordner ab. Der Dateiname verändert sich ständig z.b. (_20060506_084318_594.jpg, _20060506_084367_794.jpg usw.). Ich will immer das letzte Bild aus diesem Ordner in einem separaten Ordner speichern . Wie kann ich das mit Delphi machen?
Ich habe nun folgendes Beispiel gefunden gefunden.
http://www.swissdelphicenter.ch/de/showcode.php?id=142 , funktioniert nur mit einer Datei.
Gruss Mirco

Airblader 6. Mai 2006 23:18

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
Delphi-Referenz durchsuchenFindFirst,Delphi-Referenz durchsuchenFindNext ;)
Gibt in der Hilfe Klasse Erklärungen dazu :)

MfG, air

Matze 6. Mai 2006 23:20

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
Hi, herzlich willkommen!

Du könntest den Code, den du gefunden hast mit dem aus der Code-Library (FindAllFilesFindAllFiles) kombinieren.
Hat der Dateiname irgendeine Bedeutung? Denn sonst könntest du evtl. direkt am Dateinamen das neueste Bild erkennen.

Mirco 6. Mai 2006 23:33

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
hallo :-D
wow...so schnell bekomme ich Antworten. Danke.
Matze. Die Dateinamen sind kein Anahaltspunt, die Dateinamen sind immer unterschiedlich.
Das einzigste was mir einfällt wäre anhand des Datums und der Uhrezit das neuste Bild zu erkennen.
Finallfiles ist schon echt gut, müßte halt das zuletzt gespeichertes Bilde erkennen. Das krieg ich nicht hin, hast du ein Beispiel?
Grüße
Mirco

cruiser 6. Mai 2006 23:38

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
_20060506_084318_594.jpg

sieht mir doch aber stark nach:

2006 - Jahr
05 - Monat
06 - Tag
08 - Stunde
43 - Minute
18 - Sekunde
594 - Millisekunde

aus. Oder geht das nur mir so? :gruebel:

Hawkeye219 6. Mai 2006 23:46

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
Ja, das dachte ich auch gerade. Nur bei der zweiten Datei paßt es nicht:

Code:
_20060506_084318_594.jpg -> 06.05.2006, 08:43:18 Uhr, 594 msec
_20060506_084367_794.jpg -> 06.05.2006, 08:43:67 Uhr, 794 msec
Die 67 Sekunden passen nicht ins Schema - vielleicht ein Schreibfehler?

@Mirco:
Wenn die Dateinamen wirklich Datum und Uhrzeit in dieser Form enthalten, brauchst du nur alle Dateinamen mittels FindFirst/FindNext in eine sortierte Stringliste einzufügen. Der letzte Eintrag der Stringliste verweist dann auf die aktuellste Datei.

Gruß Hawkeye

Matze 6. Mai 2006 23:51

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
Zitat:

Zitat von cruiser
aus. Oder geht das nur mir so? :gruebel:

Ja, das habe ich auch erst gedacht, das wäre am Naheliegendsten.

Zu FindAllFiles, nur ein kleiner Tipp:

Angenommen, du nutzt diese Prozedur. Binde die Funktion 'GetFileDateTime' aus deinem Link mit ein, dann kannst du ganz leicht so die gewünschten Informationen ermitteln:

Delphi-Quellcode:
TDateDynArray = array of TDateTime;
Dann noch diese Zeile

Delphi-Quellcode:
Files[FileCount - 1] := RootFolder + String(wfd.cFileName);
durch diese ersetzen:

Delphi-Quellcode:
Files[FileCount - 1] := GetFileDateTime(RootFolder + String(wfd.cFileName));
Und schon hast du das Erstelldatum (und die Uhrzeit) in deinem Array. Das lässt sich natürlich auf beliebige Funktionen anwenden. Vergleichen kannst du die Daten dann ganz einfach mit den Vergleichsoperatoren (<, >, >=, <=, ...), da die Informationen bereits vom Typ TDateTime sind.

Mirco 7. Mai 2006 00:14

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
@Matze
nun muss ich erst mal ausprobieren.Danke !
Hallo Hawkeye219
ich denke das ich mit den Dateinamen nichts anfangen kann, sind zu ungenau.
BigTHX
Grüße
Mirco

Mirco 7. Mai 2006 00:57

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
Zitat:

Wenn die Dateinamen wirklich Datum und Uhrzeit in dieser Form enthalten, brauchst du nur alle Dateinamen mittels FindFirst/FindNext in eine sortierte Stringliste einzufügen. Der letzte Eintrag der Stringliste verweist dann auf die aktuellste Datei.
@Hawkeye219 stimmt müßte so klappen
:)

SirThornberry 7. Mai 2006 08:02

Re: Letztes JPEG in einem Ordner erkennen und kopieren
 
@Matze: Warum mit "GetFileDateTime" die Zeit ermitteln? Die Zeit ist doch im Record der von FindFirst/FindNext befüllt wird enthalten.

Mit folgender Funktion kann man die zuletzt erstellte Datei ermitteln:
Delphi-Quellcode:
function GetNewestFile(ADir: String): String;
var LSearchRec: TSearchRec;
    LDate    : Int64;
    LGiveback : String;
begin
  ADir := IncludeTrailingBackslash(ADir);
  LGiveback := '';
  if (FindFirst(ADir + '*', faAnyFile, LSearchRec) = 0) then
  begin
    LDate := 0;
    repeat
      if LSearchRec.Attr and faDirectory <> faDirectory then
      begin
        if (Int64(LSearchRec.FindData.ftCreationTime) > LDate) then
        begin
          LDate := Int64(LSearchRec.FindData.ftCreationTime);
          LGiveback := ADir + LSearchRec.Name;
        end;
      end;
    until FindNext(LSearchRec) <> 0;
    FindClose(LSearchRec);
  end;
  result := LGiveback;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:30 Uhr.
Seite 1 von 2  1 2      

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