Entwickler-Ecke

Dateizugriff - Anwendunggröße herrausbekommen, aber wie ?


mimi - Do 13.11.03 20:41
Titel: Anwendunggröße herrausbekommen, aber wie ?
Hallo,
ich muss die größe(in bytes) von der eigen anwendung zur laufzeit ermitteln wie geht das am besten ?


maxk - Do 13.11.03 21:11


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
// Source nicht getestet !

var SR:TSearchRec;
begin
 if FindFirst(Application.ExeName,faAnyFile,SR)<>0 then exit;
 // Dateigröße befindet sich jetzt in SR.Size
 FindClose(SR);
end;


mimi - Do 13.11.03 23:05

genau diese möglichkeit habe ich schon getestet, ergbnis:
size ist zu klein.
ich muss das ende der exe rausbekommen.
gibts noch andere möglichkeiten ?


Delete - Do 13.11.03 23:39


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.Button1Click(Sender: TObject);
var SR:TSearchRec;
begin
 if FindFirst(Application.ExeName,faAnyFile,SR)<>0 then
   exit
 else
   ShowMessage(IntToStr(SR.Size));
 FindClose(SR);
end;

Exakt die Dateigröße, bis auf das letzte Byte.


maxk - Fr 14.11.03 08:15

@Luckie: Ist das vom Prinzip nicht dasselbe, wie "mein" Code?
@Mimi: Könntest du das genauer erklären? Sollgröße/Istgröße, etc.


Delete - Fr 14.11.03 15:21

Es ist dein Code. Ich wollte nur zeigen, dass es bei mir funktioniert. Mimi sollte mal kucken, was er da noch macht.


mimi - Fr 14.11.03 15:23

diese idee hatte ich auch:
ich arbeite z.z. an einem sfx tool, wenn ich der variable exeSize die größe die mir das Windows eingenschaften dialog angiebt dort eintrage geht es, wenn ich aber die größe mit findFirst ermittele geht es nicht, weil die größe zu klein ist, warum ???
der code ist der selbe wie bei dir maxk

der trehd kann geschloßen werde, das was ich vorhatte funktionirt nicht....
nicht wegen der exe größe sondern wegen was andres kann es garnicht funktioniern.


Delete - Fr 14.11.03 15:55

Zu welchem Zeitpunkt ermittelst du denn die Größe?


mimi - Fr 14.11.03 16:05

wenn die datei aufgerufen wird, also beim starten des SFX archvies wird die größe ermitteln und heute ist mir eingefallen, das das ja garnicht geht, so werde ich einfach die datei größe am ende der datei reinschreiben, das wird wohl das einfachste sein, würde ich mal sagen.


Delete - Fr 14.11.03 16:13

Dann hängen doch schon die Dateien dran oder täusche ich mich da jetzt? Da sich die Grölße der SFX-Archiv Exe nichgt ändert kannst du sie als Konstante im Quellcode eintragen.