AGB  ·  Datenschutz  ·  Impressum  







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

Dateidatum simple ermitteln

Ein Thema von Coder · begonnen am 26. Jul 2009 · letzter Beitrag vom 7. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#1

Dateidatum simple ermitteln

  Alt 26. Jul 2009, 15:28
Hallo, und zwar möchte ich recht einfach das Datum einer Datei ermitteln.

Hierzu habe ich bisher immer folgende selbstgebastelte Function verwendet, wollte aber nun mal fragen, ob es da nicht was effizienteres gibt?

Delphi-Quellcode:
function DateSizeOfFile(Fname: string): string;
var Rec: TSearchRec;
  sim: string;
  Filename, Path: string;

begin
  Path := '';
  FileName := Fname;
  if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
  try
    repeat

          Sim := Datetimetostr(FileDateToDateTime(Rec.Time)) + ' '+ inttostr(Rec.Size)+ ' Byte';
    until FindNext(Rec) <> 0;
  finally
    FindClose(Rec);
    result := Sim;
  end;
end;
ICQ: 204141443
Delphi 3 Professional, Intel 2x 2,4Ghz, 3 GB-Graka, Sound-onBrd, --
außerdem D2S, D3Pro, D4S, D5S, D6S, D7S + Indy, Lazarus, VB5Std, VC++5Pro, Tasm4+5 - was braucht man mehr?
-
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 15:34
Moin Coder,

soll das so sein, dass nur die letzten Dateiinfos zurückgegeben werden?
Wenn ja, dann könntest du dir das ständige codieren sparen. Stattdessen speicherst du das SearchRec zwischen und sobald er die Schleife verlässt nimmt er das zwischengespeicherte Rec und liest daraus die Daten aus?

Und TimeD/SizeD werden gar nicht verwendet?

MfG
xZise
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#3

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 15:47
äh, wie meinste Zwischenspeichern?
was meinste mit ständigem Codieren?

zudem wollte ich fragen, ob man diese Function (immer das ganze Verzeichnis nach einem Dateinamen scannen, nur um Dateidatum und Größe EINER einzelnen Datei herauszubekommen) auf etwa z.B. 1 Zeile Code reduzieren könnte?
Oder geht das am besten nur über den SearchRec?
ICQ: 204141443
Delphi 3 Professional, Intel 2x 2,4Ghz, 3 GB-Graka, Sound-onBrd, --
außerdem D2S, D3Pro, D4S, D5S, D6S, D7S + Indy, Lazarus, VB5Std, VC++5Pro, Tasm4+5 - was braucht man mehr?
-
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 16:01
Also wenn du die datei kennt, kannst du sie natürlcih direkt angeben. Ich verstehe deinen Code sowieso nicht so ganz. Du kennst offensichtlich den dateinamen:
function DateSizeOfFile(Fname: string): string; Und läufst trotzdem in einer Schleife alle Dateien durch oder was machst du da?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#5

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 16:22
Zitat von Luckie:
Also wenn du die datei kennt, kannst du sie natürlcih direkt angeben. Ich verstehe deinen Code sowieso nicht so ganz. Du kennst offensichtlich den dateinamen:
function DateSizeOfFile(Fname: string): string;
ja, so rufe ich die Funktion auf:

Edit2.text := DateSizeOfFile (Edit1.text);
Zitat:
Und läufst trotzdem in einer Schleife alle Dateien durch oder was machst du da?
ja, ich weiß, das hab ich aus einer Function gekürz, die mir alle Dateien in einem Verzeichnis auflistet. Und da ich jetzt nur noch das Dateidatum +Größe brauchte ...

Aber wie soll ich denn sonst an das Dateidatum kommen?
Es geht doch vermutlich nur über den Searchrec, oder?

Wie kann ich denn sonst einfach nur Dateidatum und Größe ermitteln?
Wie machst Du das denn? Oder Ihr?
ICQ: 204141443
Delphi 3 Professional, Intel 2x 2,4Ghz, 3 GB-Graka, Sound-onBrd, --
außerdem D2S, D3Pro, D4S, D5S, D6S, D7S + Indy, Lazarus, VB5Std, VC++5Pro, Tasm4+5 - was braucht man mehr?
-
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 16:43
Es gibt da eine Funktion und die nennt sich MSDN-Library durchsuchenGetFileTime ... schon witzig, niwa?

zu deiner Funktion:
  • wozu das leere Path?
  • Filename kann man direkt verwenden ... muß man nicht erst umkopieren
  • die Repeat-FindNext-Schleife kann weg ... wenn du den richtigen Dateinamen angibst, dann sollte es der erste Eintrag sein, also der von FindFirst

Delphi-Quellcode:
function DateSizeOfFile(FileName: String): String;
var Rec: TSearchRec;
begin
  if FindFirst(FileName, faAnyFile and not faDirectory, Rec) = 0 then
  begin
    try
      Result := DateTimeToStr(FileDateToDateTime(Rec.Time)) + ' ' + IntToStr(Rec.Size) + ' Byte';
    finally
      FindClose(Rec);
    end;
  end
  else Result := '';
end;
da FindClose das Suchrgebnis nicht löscht, kann man es so kürzen
Delphi-Quellcode:
function DateSizeOfFile(FileName: String): String;
var Rec: TSearchRec;
begin
  if FindFirst(FileName, faAnyFile and not faDirectory, Rec) = 0 then
  begin
    FindClose(Rec);
    Result := DateTimeToStr(FileDateToDateTime(Rec.Time)) + ' ' + IntToStr(Rec.Size) + ' Byte';
  end
  else Result := '';
end;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 16:52
Bitte bitte, keine Subtraktion bei Bitmasken (auch wenn es in diesem Fall keine Rolle spielen sollte).
Zitat:
faAnyFile - faDirectory
LieberfaAnyFile and not faDirectory , dann kann ich besser schlafen
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Coder
Coder

Registriert seit: 27. Feb 2004
Ort: Bochum
206 Beiträge
 
Delphi 3 Professional
 
#8

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 17:14
erst Mal Danke,

das mit GetFileTime() war mir damals zu kompliziert. (Das Datum und die Zeit entsprechend daraus für meinen benötigten String zu Formatieren)
ist igendwie heute auch nicht anders
daher mein Umweg über den TSearchRec.


Puhh, Ihr seid aber streng (Syntax) ...
ICQ: 204141443
Delphi 3 Professional, Intel 2x 2,4Ghz, 3 GB-Graka, Sound-onBrd, --
außerdem D2S, D3Pro, D4S, D5S, D6S, D7S + Indy, Lazarus, VB5Std, VC++5Pro, Tasm4+5 - was braucht man mehr?
-
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 17:48
man könnte auch MSDN-Library durchsuchenGetFileAttributesEx nehmen

MSDN-Library durchsuchenGetFileTime ist eigentlich nicht schwer anzuwenden.
man muß sich nur per MSDN-Library durchsuchenCreateFile ein Handle besorgen ,
aber einen Nachteil hat es ... ist kein Zugriff auf die Datei möglich (z.B. schon exklusiv geöffnet oder fehlende Rechte), dann bekommt man kein Handle.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Dateidatum simple ermitteln

  Alt 26. Jul 2009, 21:30
Zitat von Coder:
ja, ich weiß, das hab ich aus einer Function gekürz, die mir alle Dateien in einem Verzeichnis auflistet. Und da ich jetzt nur noch das Dateidatum +Größe brauchte ...
Aber verstanden hast du sie nicht. Was meinst du hat SearchRect in dieser Zeile für Werte, wenn die Datei gefunden wird:
if FindFirst(Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:38 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