AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Dateigröße ermitteln ohne Datei zu öffnen
Thema durchsuchen
Ansicht
Themen-Optionen

Dateigröße ermitteln ohne Datei zu öffnen

Ein Thema von robinWie · begonnen am 5. Mär 2006 · letzter Beitrag vom 9. Mai 2014
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#1

Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 11:54
Hi,

ich suche die möglichkeit die Dateigröße zu ermitteln ohne die Datei zu öffnen.
In der Suche habe ich nichts gefunden und ich kenne bislang nur diese möglichkeit

Delphi-Quellcode:
var F: File
begin
 Assign(F,FileListBox1.FileName);
 Reset(F);
 Label1.Caption:=IntToStr(FileSize(F));
 ...
end;
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
marabu

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

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 12:05
Hallo Robin,

so könnte das funktionieren:

Delphi-Quellcode:
function FileSize(fn: TFileName): Int64;
var
  sr: TSearchRec;
begin
  if FindFirst(fn, faArchive, sr) = 0 then
  begin
    with sr.FindData do
      Result := nFileSizeHigh shl 32 + nFileSizeLow;
    FindClose(sr);
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 12:56
Zwei kleine Korrekturen:

1.) Falls die Datei nicht existiert, ist das Funktionsergebnis undefiniert.
2.) Das Schieben eines 32-Bit-Wertes um 32 Bits nach links löscht eigentlich nur den Wert.

Mein Vorschlag:

Delphi-Quellcode:
function FileSize(fn: TFileName): Int64;
var
  sr: TSearchRec;
begin
  if FindFirst(fn, faArchive, sr) = 0 then
  begin
    with sr.FindData do
      Result := Int64(nFileSizeHigh) shl 32 + nFileSizeLow;
    FindClose(sr);
  end
  else
    Result := 0;
end;
  Mit Zitat antworten Zitat
5. Mär 2006, 12:59
Dieses Thema wurde von "Sharky" von "VCL / WinForms / Controls" nach "Object-Pascal / Delphi-Language" verschoben.
Ist hier besser aufgehoben.
marabu

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

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 13:38
Danke für das Korrekturlesen. Als Result verwende ich dann lieber -1, da 0 eine legitime Größe für eine existierende Datei ist.

Schönes Wochenende

marabu
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 14:03
Stimmt, so ist's besser

Gruß,

Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 14:31
Meine Version:
Delphi-Quellcode:
function GetFileSize(szFile: PChar): Int64;
var
  fFile : THandle;
  wfd : TWIN32FINDDATA;
begin
  result := 0;
  if not FileExists(szFile) then exit;
  fFile := FindFirstfile(pchar(szFile), wfd);
  if fFile = INVALID_HANDLE_VALUE then exit;
  result := (wfd.nFileSizeHigh * (Int64(MAXDWORD) + 1)) + wfd.nFileSizeLow;
  windows.FindClose(fFile);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
marabu

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

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 15:04
Hallo Michael, du non-VCL-Fetischist,

wenn du FileExists() raus nimmst und Result mit -1 initialisierst (siehe oben), dann nenne ich deinen Code elegant.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#9

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 15:08
Zitat von marabu:
wenn du FileExists() raus nimmst
Erklärst du kurz, warum? Oder hat das mehr "ästhetische" Gründe?
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Dateigröße ermitteln ohne Datei zu öffnen

  Alt 5. Mär 2006, 15:11
weil fileexists in der sysutils steht und die nicht nonVCL-kompatibel ist
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 11:14 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