ďťż

Ładny brzuch

Witam, mam następujący kod:
begin opn.Execute; fn := opn.FileName; AssignFile(f,fn); Reset(f); fs:=FileSize(f); CloseFile(f); fname.Caption:='File name: '+fn; fsize.Caption:='File size: '+IntToStr(fs);

Niestety dla plików większych od 2GB rozmiar się "przekręca" (tzn. jest ujemny). Ma ktoś pomysł jak to rozwiązać? Dodam tylko, że potrzebuję rozmiaru w BAJTACH.



Spróbuj z real albo extended, integer ma za mały zakres dla tak dużych liczb. Instrukcja

IntToStr(fs);

dla extended będzie

FloatToStr(fs);
Użytkownik Geshi edytował ten post 26 wrzesień 2008, 15:43
To nie wina IntToStr - coś musi być z FileSize (FloatToStr dał ten sam rezultat).


To nie wina IntToStr - coś musi być z FileSize (FloatToStr dał ten sam rezultat).

Ja ci mówie, żebyś zmienił typ zmiennej do której ma iść rozmiar pliku z "integer" na "extended", a dopiero później zmieniał tą instrukcje z "inttostr" na "floattostr"...
Użytkownik Geshi edytował ten post 26 wrzesień 2008, 21:47


integer - wielkość 4 bajty, zakres danych: -2147483647 do 2147483647
Extended - [10 bajtów] (3,6 * 10^-4951 ... 1,1 * 10^4932)

http://pl.wikibooks....owe_typy_danych

Geshi ma rację - zmień typ danych na Extended [z integer]

Tja... Tylko ta liczba ma już typ Int64...

Problem z FileSize jest taki, że zwraca wartość typu Integer.

http://www.delphibas...p?Name=FileSize

http://www.jpgriffit...l/filesize.html

Kowerter integer do Extended

function Int ( const Number : Extended ) : Extended;

No dosłownie kilka sekund w googlach..
źródło
http://www.delphibas...TL.asp?Name=Int

Ale i tak muszisz zastosować się do rozwiązania podanego przez Kozack - bo tak jak słusznie napisał, problem jest w tym, że FileSize zwraca integer.
Użytkownik pat edytował ten post 27 wrzesień 2008, 09:05
Dziękuję wszystkim!!!
:clap: :roll1: :laughing: :Jumpy: :lol: :thumbsup:

TEMAT DO ZAMKNIĘCIA
Użytkownik Rave edytował ten post 27 wrzesień 2008, 09:20
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •