![]() |
FileSize(file.exe);
moin!
ich möchte die größe einer exe datei ermitteln.
Delphi-Quellcode:
mit txt datein und si klappt das ja auch wunderbar. nur mit meiner exe irgendwie nicht.
AssignFile(UpdateFile, 'Client.exe');
Reset(UpdateFile); UpdateSize := FileSize(UpdateFile); showmessage(IntToStr(UpdateSize)); CloseFile(UpdateFile); ist sie mit 600kb zu gross ? gitb es noch eine andere möglichkeit ? danke für eure hilfe, yildi |
Re: FileSize(file.exe);
Ich habs ma eben mit einer 10 MB Datei probiert, funktioniert!
Schick am besten mal die ganze procedure, weil da fehlt ja noch was. ___________ EDIT: Hier andere Versionen: ![]() |
Re: FileSize(file.exe);
Delphi-Quellcode:
procedure TForm1.BtnServerUpdateClick(Sender: TObject);
var FUpdateStream: TFileStream; UpdateFile : File; UpdateSize: longint; begin if FileExists('Server.exe') then begin AssignFile(UpdateFile, 'Server.exe'); Reset(UpdateFile); UpdateSize := FileSize(UpdateFile); showmessage(IntToStr(UpdateSize)); CloseFile(UpdateFile); //ClientSocket1.Socket.SendText('ServerUpdateSize:'+inttostr(UpdateSize)); //FUpdateStream := TFileStream.Create('Server.exe', fmOpenRead); //ClientSocket1.Socket.SendStream(FUpdateStream); //Log.Lines.Add('('+TimeToStr(Now)+') System: Das Update wurde übertragen und wird nun installiert.'); end else Log.Lines.Add('('+TimeToStr(Now)+') System: Keine Server.exe gefunden.'); end; |
Re: FileSize(file.exe);
Oben stehen andere Möglichkeiten!
|
Re: FileSize(file.exe);
ach ja, als fehler bekommen ich:
Project ... raised exception class EInOut Error with message 'I/O error 32'. Process Stopped. |
Re: FileSize(file.exe);
Hi,
du gehst da ein wenig falsch an die Sache ran. FileSize gibt dir die Anzahl der Datensätze einer typisierten Datei zurück, bei einer .exe müsstest du also File of Byte nehmen. Du kannst dir die Informationen aber auch direkt mit findFirst holen:
Delphi-Quellcode:
Gruß Der Unwissende
function getFileSize : Integer;
var searchRecord : TSearchRec; begin if findFirst(PFAD_ZU_DER_DATEI, faAnyFile, searchRecord) = 0 then begin result := searchRecord.Size; end else begin result := -1; // datei nicht gefunden end; end; |
Re: FileSize(file.exe);
Hi all,
die Dateigröße liefert der für den Update-Vorgang benötigte Stream sowieso:
Delphi-Quellcode:
Getippt und nicht getestet.
procedure TForm1.BtnServerUpdateClick(Sender: TObject);
const FILE_NAME = 'server.exe'; var fs: TFileStream; cwd, fn: TFileName; begin GetDir(0, cwd); fn := IncludeTrailingPathDelimiter(cwd) + FILE_NAME; if FileExists(fn) then begin fs := TFileStream.Create(fn, fmOpenRead or fmShareDenyWrite); ShowMessage(IntToStr(fs.Size)); // ClientSocket1.Socket.SendText('ServerUpdateSize:' + IntToStr(fs.Size)); // ClientSocket1.Socket.SendStream(fs); // Log.Lines.Add('(' + TimeToStr(Now) + ') System: Das Update wurde übertragen und wird nun installiert.'); end else Log.Lines.Add('(' + TimeToStr(Now) + ') System: Datei "' + FILE_NAME + '" nicht gefunden.'); end; Grüße vom marabu |
Re: FileSize(file.exe);
Zitat:
Wäre natürlich eine feine Sache, wenn man den FileStream noch freigeben würde... |
Re: FileSize(file.exe);
Da hast du Recht, Günter. Ich war so damit beschäftigt überflüssigen Code aus der Vorlage zu entfernen, dass ich gar nicht gemerkt habe, dass dort schon eine Zeile fehlte.
Freundliche Grüße marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 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