Ĺ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
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