AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen FreePascal [Linux] Dateigröße ermitteln mit Lazarus
Thema durchsuchen
Ansicht
Themen-Optionen

[Linux] Dateigröße ermitteln mit Lazarus

Ein Thema von MisterNiceGuy · begonnen am 18. Jun 2009 · letzter Beitrag vom 7. Aug 2009
Antwort Antwort
Benutzerbild von MisterNiceGuy
MisterNiceGuy

Registriert seit: 1. Jul 2003
Ort: Mannheim
919 Beiträge
 
Delphi 7 Personal
 
#1

[Linux] Dateigröße ermitteln mit Lazarus

  Alt 18. Jun 2009, 15:06
Was unter Windows kinderleicht ist, stellt sich unter Linux als wahre Herausforderung raus.
Ich würde gerne die Größe einer Datei ermitteln, weiß aber nicht wie. Hat einer dafür eine Lösung?
Jonas
Wenn mich jemand sucht, ich bin im Kühlschrank!

Informationen über das Duale Studium
www.jofre.de
  Mit Zitat antworten Zitat
Fridolin Walther

Registriert seit: 11. Mai 2008
Ort: Kühlungsborn
446 Beiträge
 
Delphi 2009 Professional
 
#2

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 18. Jun 2009, 15:12
Du kannst entweder die entsprechende Linux API verwenden (stat) dafür oder wenn es "plattformunabhängig" sein soll:
Delphi-Quellcode:
function GetFileSize(FileName : string) : Integer;
var
  f : file;
  OldFileMode : Integer;
begin
  OldFileMode := FileMode;
  FileMode := 0;
  AssignFile(f, FileName);
  Reset(f, 1);
  Result := FileSize(f);
  CloseFile(f);
  FileMode := OldFileMode;
end;
Alternative ohne die Datei wirklich zu öffnen basierend auf dem Standard Pascal Befehlssatz:
Delphi-Quellcode:
function GetFileSizeWithoutOpening(FileName : string) : Int64;
var
  SearchRecord : TSearchRec;
begin
  if FindFirst(FileName, faAnyFile, SearchRecord) = 0
    then
      begin
        Result := SearchRecord.Size;
        FindClose(SearchRecord);
      end
    else
      Result := 0;
end;
Fehlerhandling darf der Threadersteller selbst bauen.
Fridolin Walther
  Mit Zitat antworten Zitat
theodp

Registriert seit: 19. Dez 2008
8 Beiträge
 
#3

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 19. Jun 2009, 19:24
Warum nicht einfach

function FileSize(const Filename: string): int64;

in FileUtil ?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.161 Beiträge
 
Delphi 12 Athens
 
#4

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 19. Jun 2009, 19:46
Zitat von theodp:
function FileSize(const Filename: string): int64;
weil das eine WinAPI ist und unter Linux nicht existiert

wegen des Standards
Code:
function GetFileSizeWithoutOpening(FileName : string) : Int64;
begin
  ...
    else
      Result := [color=#ff0000]-1[/color];
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
theodp

Registriert seit: 19. Dez 2008
8 Beiträge
 
#5

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 20. Jun 2009, 21:37
Zitat von himitsu:
weil das eine WinAPI ist und unter Linux nicht existiert
Wie kommst du denn auf die Idee?
FileUtil ist Cross-Platform und diese Fkt. auch.

Delphi-Quellcode:
function FileSize(const Filename: string): int64;
{$IFDEF Unix}
var
  st: baseunix.stat;
{$ELSE}
var
  FileInfo: TSearchRec;
{$ENDIF}
begin
  {$IFDEF Unix}
  if not fpstat(pointer(Filename),st)>=0 then
    exit(-1);
  Result:=st.st_size;
  {$ELSE}
  {$IFDEF WINCE}
  FileInfo.Name:=UTF8Decode(Filename);
  {$ELSE}
  FileInfo.Name:=UTF8ToSys(Filename);
  {$ENDIF}
  FileInfo.FindHandle:=Windows.FindFirstFile(Windows.LPTSTR(FileInfo.Name),FileInfo.FindData);
  if FileInfo.FindHandle=Windows.Invalid_Handle_value then begin
    Result:=-1;
    exit;
  end;
  Result:=(int64(FileInfo.FindData.nFileSizeHigh) shl 32)+FileInfo.FindData.nFileSizeLow;
  Windows.FindClose(FileInfo.FindHandle);
  {$ENDIF}
end;
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 7. Aug 2009, 18:49
Notfalls kannst du auch noch über TFileStream gehen....
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: [Linux] Dateigröße ermitteln mit Lazarus

  Alt 7. Aug 2009, 18:51
Oder df aufrufen
Markus Kinzler
  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 14:05 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