Entwickler-Ecke

Dateizugriff - zur laufzeit die dateigrösse ermitteln


mcbrunox - Do 06.02.03 19:32
Titel: zur laufzeit die dateigrösse ermitteln
kann ich das ? mit assignfile gehts mal nich
bei openfile find ich nichts wie ich die dateigrösse ermitteln kann,


Delete - Do 06.02.03 19:36

FileSize, z.B.
In dem Fall muss die gewünschte Datei vorher zugewiesen werden.
Ein Beispiel spare ich mir; ´s steht nämlich eins in der Delphi-Hilfe (F1).


mcbrunox - Do 06.02.03 21:07

finds ja lustig...ne will bei meinem programm zur laufzeit die dateigrösse ermitteln.
bei assign gibts ne fehler meldung weil die datei ja schon ausgeführt wird
und bei fopen ebenfalls - bis jetzt zumindest


mcbrunox - Do 06.02.03 21:25

habs mit findfirst gmacht
thX


smiegel - Do 06.02.03 22:22

Hallo,


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function GetDateiGroesse(const aFileName:String):Int64; 
var sh:THandle; 
    wd:TWin32FindData; 
begin 
  sh:=FindFirstFile(PChar(ExpandFileName(aFileName)), wd); 
  try 
    if (sh<>INVALID_HANDLE_VALUE) then 
      Result:=(wd.nFileSizeHigh*MAXDWORD)+wd.nFileSizeLow else Result:=0; 
  finally 
    Windows.FindClose(sh); 
  end; // try 
end; // GetDateiGroesse


DaRkFiRe - Fr 07.02.03 00:14

wie wär's mit...


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
function getFileSize(sFileName:STRING):LONGINT;
var rfs:tfilestream;
begin
  Result:=-1;
  try
    rfs:=tfilestream.create(sFilename, fmopenread or fmsharedenywrite);
    result:=rfs.size;
    rfs.free;
  except
  end;
end;


opfer.der.genauigkeit - Fr 07.02.03 10:06

Probiers mal mit dem Befehl SizeOf(Dateiname).
Das Ergebnis ist dann die Anzahl der Bytes.


Delete - Fr 07.02.03 10:18

Schon mal in die Hilfe gekuckt:
sizeof
Zitat:

Returns the number of bytes occupied by a variable or type.


Moderiert von user profile iconTino: Beitrag geändert.


opfer.der.genauigkeit - Fr 07.02.03 10:55

Hm Luckie... ich sag nur was mir einfällt...

Außerdem müßte es doch gehen wenn ich:

Quelltext
1:
2:
3:
4:
5:
var
  F : file of ...
begin
  .... .... sizeof(f);
end;


Moderiert von user profile iconTino: Code-Tags hinzugefügt.
Moderiert von user profile iconTino: Beitrag geändert.


Delete - Fr 07.02.03 11:03

OK, wenn du meinst:

Die Aussage ist falsche weil, du damit die Größe des Datentyps bekommst und nichts anderes. In diesem Fall bekommst du die Größe des Datentyps TFile oder was du da angibst.

Moderiert von user profile iconTino: Beitrag geändert.


DaRkFiRe - Fr 07.02.03 13:59

Muss Luckie auch zustimmen - SizeOf dient lediglich dazu, die interne Größe der verwendeten Variablen zu ermitteln, um sie z.B. in eine Datei schreiben zu können (in Win 3.xx ist ein Integer eben nur 16 Bit [2 Bytes] lang, in Win 9x / ME 32 Bit [4 Bytes] lang und in NT XP kann er sogar 64 Bits [8 Byte]) groß sein. Also SizeOf dient keinesfalls der Dateigrößenermittlung. FileSize(F) schon, wobei F vom Typ File oder TextFile - dabei müsste vorher F per AssignFile(F,DateiName) der Variable F einem Dateinamen zugewiesen werden...


opfer.der.genauigkeit - Fr 07.02.03 15:32

Jo, Luckie hat auch recht. :)