Gibt es in Delphi eine Möglichkeit, die exe-Größe der aktuellen Anwendung in ein oder zwei Codezeilen zu erhalten?
Aus Gründen der zukünftigen Kompatibilität sollten Sie eine Implementierung auswählen, die nach Möglichkeit keine Zeiger oder Windows-API-Funktionen erfordert. Die TFileStream-basierte Lösung von skamradt sieht gut aus.
Aber ... Sie sollten sich nicht zu viele Gedanken darüber machen, ob die Routine aus 1 oder 10 Codezeilen besteht, weil Sie sie sowieso in eine Funktion kapseln, die einen Dateinamen als Parameter akzeptiert und einen Int64 zurückgibt Legen Sie es in Ihre persönliche Bibliothek mit wiederverwendbarem Code. Dann kannst du es so nennen:
GetMyFileSize (Application.ExeName);
Sie können dies versuchen:
%Vor% ===============
Neftalí
Leider ist es nicht möglich, das mit nur ein oder zwei Zeilen Code zu tun, ohne eine Bibliothek zu benutzen.
Der einfachste Teil ist, die EXE-Datei der Anwendung zu erhalten. Sie finden es in Application.ExeName
Im Allgemeinen gibt es mehrere Möglichkeiten zum Abrufen der Dateigröße:
FileOpen
und FileSize
erreicht werden, oder mit TFileStream
(verwenden Sie die size
-Eigenschaft) oder mit den Win32-API-Funktionen CreateFile
und GetFileSize
function. (Plattformabhängig!) Stellen Sie sicher, dass Sie die Datei mit schreibgeschütztem Zugriff öffnen. FindFirst
verwenden, um die Dateigröße zu erhalten. Sie können es von TSearchRec.FindData.nFileSizeLow
lesen. Wenn Sie auf Dateien größer als 2 GB vorbereitet sein möchten (sollten Sie sein), müssen Sie auch den nFileSizeHigh
-Teil verwenden. System.IO.FileInfo
, wie folgt verwenden: FileInfo.Create(filename).Length
(one-liner) lstat64
(Unit Libc
) verwenden und die Größe von TStatBuf64.st_size
erhalten. (Zweileiter, wenn Sie die Variablendeklaration nicht zählen) In der JCL-Bibliothek finden Sie viele nützliche Funktionen, einschließlich einer einfachen Funktion, die die Dateigröße eines bestimmten Dateinamens zurückgibt. (Es verwendet eine Methode, die zu der gegebenen Plattform passt)
Ich möchte den von skamradt bereitgestellten Code modifizieren, um zwei Codezeilen nach Ihren Wünschen zu erstellen; -)
%Vor%aber ich würde es vorziehen, den Code als skamradt zu schreiben, weil es sicherer ist
Kürzeste konnte ich tun. Beachten Sie, dass die .Size in Bytes ist, also für Kilobyte durch 1024 dividieren.
%Vor%Sehen Sie sich diesen Link an.