![]() |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Zitat:
Zitat:
Vielleicht stehe ich ja auch auf dem Schlauch :stupid: Zeig am besten mal, wie du dein Stringgrid füllst und zwar komplett! Edit: Naja solangsam verstehe ich: So ist es richtig.
Delphi-Quellcode:
for i := 0 to OpenDialog1.Files.Count - 1 do
begin sgfiles.cells[0,1 + i]:= OpenDialog1.Files[i]; sgfiles.cells[1,1+i] := floattostr(filesize(opendialog1.Files.Strings[i])); end; |
Re: Dateigröße ermitteln ohne Datei zu öffnen
:roll:
Delphi-Quellcode:
I-------------I-------------I
I Spalte 1 I Spalte 2 I I---------------------------I I I I I ... I ... I I I I Die Daten in Spalte1 soll man editieren können, in der 2 aber nicht. Geht das üeberhaupt? with tstringgrid do .... gehts z.b. schon mal nicht |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Hi! Meine erste Frage: Ich würde gerne den Code aus Beitrag #16 benutzen. Wenn ich ihn allerdings folgendermaßen versuche aufzurufen
Delphi-Quellcode:
bekomme ich die letzte Zeile markiert mit "Incompatible Types: Cardinal and PChar". Wo liegt der Fehler?
var
vTmp1:pchar; vTmp2:int64; begin vTmp1:=pchar('c:test.bmp'); vTmp2:=getfilesize(vTmp1); Zweitens: Wo liegt der Vorteil von Hawkeyes Methode gegenüber diesem Prinzip:
Delphi-Quellcode:
Danke schonmal!
var
f: file of byte; v: integer; begin assignfile(f, 'c:\test'); reset(f); v:=filesize(f); closefile(f); Gruß! Robert |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Herzlich willkommen in der Delphi-PRAXiS, Robert!
Den von dir beschriebenen Fehler kann ich nicht nachvollziehen. Ist das wirklich der Quelltext, der den Fehler auslöst? Zitat:
Deine Frage wird zum Teil schon durch den Thread-Titel beantwortet: der Code liefert die Größe einer Datei, ohne diese Datei wirklich zu öffnen. Ein weiterer Vorteil ist, daß die Routine auch bei Dateien ab 2 GByte Länge den richtigen Wert für die Größe ermittelt. Die Routinen der Delphi-RTL funktionieren (zumindest bis Version 7) in diesem Fall nicht. Gruß Hawkeye |
Re: Dateigröße ermitteln ohne Datei zu öffnen
Hi! Danke, bin sehr herzlich aufgenommen worden ;-)
Hmm... ja, den Fehler bekomme ich. Naja, hab das Prog jetzt halt mit FileSize() geschrieben. Ich nehme an, das (was im Thread-Titel steckt) bedeutet dann im Endeffekt, dass die Methode schneller ist als FileSize(), richtig? LG! |
AW: Dateigröße ermitteln ohne Datei zu öffnen
Eigentlich kann man doch auch
Code:
statt
function GetFileSize(szFile: String): Int64;
Code:
schreiben, dann muss man beim Aufruf der Funktion nich auch noch zu PChar umwandeln. Ist ja doppelt gemoppelt :D
function GetFileSize(szFile: PChar): Int64;
Eingabe String
Delphi-Quellcode:
Und wenn man PChar vorliegen hat, dann kann man sich die Konvertierung innerhalb der Funktion sparen :wink:
function GetFileSize(szFile: String): Int64;
var fFile: THandle; wfd: TWIN32FINDDATA; begin Result := -1; fFile := FindFirstfile(PChar(szFile), wfd); if fFile = INVALID_HANDLE_VALUE then Exit; if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow; Windows.FindClose(fFile); end; Eingabe PChar
Delphi-Quellcode:
function GetFileSize(szFile: PChar): Int64;
var fFile: THandle; wfd: TWIN32FINDDATA; begin Result := -1; fFile := FindFirstfile(szFile, wfd); if fFile = INVALID_HANDLE_VALUE then Exit; if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow; Windows.FindClose(fFile); end; |
AW: Dateigröße ermitteln ohne Datei zu öffnen
Kleine Änderung für XE2:
Delphi-Quellcode:
function GetFileSize(szFile: String): Int64;
var fFile: THandle; wfd: TWIN32FINDDATA; begin Result := -1; fFile := FindFirstfile(PChar(szFile), wfd); if fFile = INVALID_HANDLE_VALUE then Exit; if (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then Result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow; WinApi.Windows.FindClose(fFile); // <--------------------- end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz