Holen Sie sich die Anwendung exe Größe leicht

7

Gibt es in Delphi eine Möglichkeit, die exe-Größe der aktuellen Anwendung in ein oder zwei Codezeilen zu erhalten?

    
Johan Bresler 20.10.2008, 08:38
quelle

9 Antworten

10

Nur für Grins ... können Sie dies auch mit Streams tun Etwas mehr als 2 Zeilen Code. Im Allgemeinen wird der Anwendungsdateiname einschließlich Pfad auch in Paramstr (0) gespeichert.

%Vor%     
skamradt 20.10.2008, 14:34
quelle
5

Es ist nicht so klein wie du willst, aber es braucht keine Griffe. Ich benutze dies in all meinen "SFX" Archiver und Programmen, die ihre Größe kennen müssen. IIRC erfordert die Windows-Einheit.

%Vor%     
Robert K 20.10.2008 15:27
quelle
4

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);

    
Jozz 21.10.2008 00:14
quelle
2

Sie können dies versuchen:

%Vor%

===============
Neftalí

    
quelle
2

Streams können auch ohne eine TFileStream-Variable verwendet werden:

%Vor%

Hässlich, ja.

Ich bevorzuge DSiFileSize aus DSiWin32 . Es verwendet CreateFile intern:

%Vor%     
gabr 20.10.2008 15:07
quelle
2

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:

  1. Öffnen Sie die Datei und lesen Sie die Größe des Streams. Dies kann mit den 'alten' Delphi-Funktionen 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.
  2. In einer reinen Win32-Umgebung können Sie 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.
  3. In Delphi.NET können Sie die System.IO.FileInfo , wie folgt verwenden: FileInfo.Create(filename).Length (one-liner)
  4. Unter Linux können Sie die Funktion 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)

    
Daniel Rikowski 20.10.2008 09:02
quelle
2
%Vor%     
tz. 04.08.2012 11:29
quelle
0

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

    
Mohammed Nasman 21.10.2008 12:11
quelle
0

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.

    
JosephStyons 21.10.2008 12:47
quelle

Tags und Links