Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Вниз

большие числа   Найти похожие ветки 

 
TRSteep ©   (2009-10-13 08:12) [0]

Есть код который получает размер озу в байтах
в принципе нормально работает, но хочу выводить не в байтах, а нормальном формате (Гб, Мб)
В принципе код написал работает, но есть одно но если ОЗУ больше 4х гб то код не работает (Range Check error).
Немного почитал понял что из-за того что integer не поддерживает такие числа
Изменил integer на int64, real на Extended

В итоге приложение запускается считает, но если объем 4гб ровно - то ответ 0, если больше то считает сколько объем от 4х...

Что делать?

function sizetype(volume:integer): string;
var
 size: Extended; {real}
 i: int64; {integer}
 anser: string;
begin
 i:=0;
 size := volume;
 repeat
   anser := FloatToStr(size);
   i := i + 1;
   size := size/1024;
   //Showmessage(FloatToStr(size));
 until size<1;

 case i of
   1: Result := anser + " b.";
   2: Result := anser + " Kb.";
   3: Result := anser + " Mb.";
   4: Result := anser + " Gb.";
   5: Result := anser + " Tb.";
 end;
end;


 
brother ©   (2009-10-13 08:33) [1]

ну и код(
для начала:

> size := volume;

зачем? и почему тип разный?

>   i := i + 1;

inc(i);

>   size := size/1024;

size := size div 1024;

ну и код(


 
brother ©   (2009-10-13 08:37) [2]

http://delphidevelop.ru/publ/13-1-0-261
вообще уже все придумано ;)


 
palva ©   (2009-10-13 09:52) [3]

Попробуйте volume тоже сделать int64


 
Плохиш ©   (2009-10-13 09:55) [4]


> palva ©   (13.10.09 09:52) [3]
>
> Попробуйте volume тоже сделать int64

Ето шо ж теперя фсю прогу переделывать? 8-O


 
Anatoly Podgoretsky ©   (2009-10-13 10:09) [5]

Зато теперь кило можно поддерживать вплоть до 10^18


 
TRSteep ©   (2009-10-13 11:51) [6]


>
> > size := volume;
>
> зачем?  и почему тип разный?

просто не помню можно ли изменять те данные которые вводятся с функцией и тк код для проб, то пока и так пойдет

а тип разный потому, что внутри поменял, а там не углядел, попробую


> >   i := i + 1;
>
> inc(i);


i + 1 проще читать, плюс для использования inc нужно подключить еще один модуль, которого нет unit


>
> >   size := size/1024;
>
> size := size div 1024;


DIV хм... можно конечно, но так точнее :)


> http://delphidevelop.ru/publ/13-1-0-261
> вообще уже все придумано ;)

Спасибо интересно.


 
MonoLife ©   (2009-10-13 11:58) [7]


> плюс для использования inc нужно подключить еще один модуль

system по дефолту и так уже подключен



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.11.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.004 c
2-1255428458
Franzy
2009-10-13 14:07
2009.11.29
"Убить" программу


15-1254256215
Юрий
2009-09-30 00:30
2009.11.29
С днем рождения ! 30 сентября 2009 среда


2-1255329098
yantux
2009-10-12 10:31
2009.11.29
Сработало исключение EOutOfMemory: как оптимизировать память?


15-1254234150
Частный инвестор
2009-09-29 18:22
2009.11.29
Идеи для бизнеса


1-1225831632
lemur
2008-11-04 23:47
2009.11.29
Поиск слова в RichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский