AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FileSize(file.exe);

Ein Thema von yildi · begonnen am 24. Sep 2006 · letzter Beitrag vom 24. Sep 2006
Antwort Antwort
yildi

Registriert seit: 15. Sep 2006
23 Beiträge
 
#1

FileSize(file.exe);

  Alt 24. Sep 2006, 14:34
moin!

ich möchte die größe einer exe datei ermitteln.

Delphi-Quellcode:
AssignFile(UpdateFile, 'Client.exe');
Reset(UpdateFile);
UpdateSize := FileSize(UpdateFile);
showmessage(IntToStr(UpdateSize));
CloseFile(UpdateFile);
mit txt datein und si klappt das ja auch wunderbar. nur mit meiner exe irgendwie nicht.
ist sie mit 600kb zu gross ?

gitb es noch eine andere möglichkeit ?

danke für eure hilfe,
yildi
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#2

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 14:38
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:
Dateigröße einer beliebigen Datei ermitteln
  Mit Zitat antworten Zitat
yildi

Registriert seit: 15. Sep 2006
23 Beiträge
 
#3

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 14:39
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;
  Mit Zitat antworten Zitat
Benutzerbild von MuTzE
MuTzE

Registriert seit: 24. Sep 2003
59 Beiträge
 
#4

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 14:41
Oben stehen andere Möglichkeiten!
  Mit Zitat antworten Zitat
yildi

Registriert seit: 15. Sep 2006
23 Beiträge
 
#5

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 14:42
ach ja, als fehler bekommen ich:

Project ... raised exception class EInOut Error with message 'I/O error 32'. Process Stopped.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 14:43
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:
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;
Gruß Der Unwissende
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 15:16
Hi all,

die Dateigröße liefert der für den Update-Vorgang benötigte Stream sowieso:

Delphi-Quellcode:
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;
Getippt und nicht getestet.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 16:04
Zitat von marabu:
Hi all,

die Dateigröße liefert der für den Update-Vorgang benötigte Stream sowieso:

Delphi-Quellcode:
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;
Getippt und nicht getestet.

Grüße vom marabu

Wäre natürlich eine feine Sache, wenn man den FileStream noch freigeben würde...
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: FileSize(file.exe);

  Alt 24. Sep 2006, 16:17
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz