Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

10 000 000 -> 10 Mb


Страницы:   1 2 3

T2 ©   (2003-06-05 13:03:00) 

Каким образо перевести байты (размер файла например) в Windows представление (byte,Mb,Gb). Использую встроенную функцию Windows, но после 4 Gb формат переводится не верно. Где ошибка?

{S} Function __SGuStrFormatByteSize(_dw:DWord;_pszBuf:PChar;_cchBuf:UINT):PChar;StdCall;External "shlwapi.dll" Name "StrFormatByteSizeA";

Ведь диски уже больше 4 Gb выпускают?


Alex Bigbugov   (2003-06-07 09:43:00) [1]

Изображение в винде и у тебя не расходились? Вот у меня 80-ник, так в закладке файла подкачки свободного места показывает -36 Gb, тебе это надо?


elected   (2003-06-06 02:17:00) [2]

=-))))))
Вспомнил анекдот
Чем отличается ламер от программера...
Ламер догадывается что в киллобайте 1024 байта...
,а программер твердо уверен что в киллограмме 1024 грамма


Нуу   (2003-06-06 02:08:00) [3]

Не знаю насколько "горячие" и насколько "эстонские" те два парня,
но dRake © (05.06.03 23:51) - точно прошел мимо.


dRake   (2003-06-05 23:51:00) [4]

На вот тебе эту функцию, которую я сам юзаю в одной из своих прог
думаю разберёшься :)

function GetString( value : Int64) : string;
var temp : real;
begin

if value >= 1024*1024 then Begin;
temp := value/1024;
result := FloatToStrF(temp,ffGeneral,5,6) + " Kb";
end;

if (value > 1024*1024) and (value <= 1000*1024*1024) then Begin;
temp := value/(1024*1024);
result := FloatToStrF(temp,ffGeneral,5,6) + " Mb"
end;

if value > 1000*1024*1024 then Begin;
temp := Trunc(value/(1024*1024));
result := FloatToStrF(temp,ffGeneral,5,6) + " Gb"
end;
________________________________________________________

На вход даёшь ей значение в байтах
на выходе получаешь строку типа 10,23 Mb


Palladin   (2003-06-05 20:48:00) [5]

:)


McSimm   (2003-06-05 17:12:00) [6]

:))


Anatoly Podgoretsky   (2003-06-05 17:09:00) [7]

Ну успокоились горячие эстонские парни.


McSimm   (2003-06-05 16:37:00) [8]


> приведенное мною конечно ему не подойдет по причине Anatoly
> Podgoretsky ©

Хотя бы по той простой причине, что вопрос был не тот. Человек задал корректный вопрос об использовании конкретной функции.

Не было вопроса как перевести быйты в мегабайты и.т.п. Был вопрос где ошибка в таком-то использовании функции. А ему рассказали, что использовать эту функцию глупо, что расчитывай и форматируй сам и т.п.


> я не буду с вами спорить, потому что

Однако задуматься стоит над своим безосновательным выпадом (05.06.03 13:13)
Бывают вопросы глупые. Бывают глупо сформулированные. Можно и посмеятся(без перехода на личности). Но тут-то все в порядке, а оказывается " не ужели такие еще есть...". Какие "такие"?

Вот это меня и задело.


Palladin   (2003-06-05 16:22:00) [9]

по причине их "веса" в общем коде и условий их исполнения...
вы мастер или где, или вы меня экзаменируете...
приведенное мною конечно ему не подойдет по причине Anatoly Podgoretsky © (05.06.03 14:34), а точнее по 2 пункту его хотелки...
я не буду с вами спорить, потому что он(спор) уже перешел на борьбу принципов, а это пустая трата времени...


McSimm   (2003-06-05 16:05:00) [10]


> Palladin таким образом хотел показать, что чем пол часа
> расспрашивать всех в форуме, можно было за пять минут написать
> такую же процедуру самому...

Во-первых, вы уверены, что такую же? Во-вторых, гораздо лучше один раз разобраться в возникшей проблеме и сделать корректно, чем за пол-часа найти обходной путь.


> не уместно сравнивать использование...

Почему?


Palladin   (2003-06-05 15:20:00) [11]

мда... цепляемся уже... Ваши зацепки не уместны...
мне не трудно, да и исходники в Sources...
не уместно сравнивать использование FloatToStrF и
Function __SGuStrFormatByteSize(_dw:DWord;_pszBuf:PChar;_cchBuf:UINT):PChar;StdCall;External "shlwapi.dll" Name "StrFormatByteSizeA";


[lamer]Barmaglot   (2003-06-05 15:16:00) [12]

то McSimm © (05.06.03 15:09)

Не надо так нервничать.

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


McSimm   (2003-06-05 15:09:00) [13]

>Palladin © (05.06.03 14:23)
>result:=floattostrf(p_fBytes,ffGeneral,4,2)+levels[l];
>трюдно да?

Если уж взялся, доводи до конца. Зачем использовать floattostrf??? Что, самому написать трудно?


T2   (2003-06-05 14:40:00) [14]

Всем спасибо - вопрос снят.


Anatoly Podgoretsky   (2003-06-05 14:38:00) [15]

T2 © (05.06.03 14:31)
Использовать функцию GetDiskFreeSpaceEx


Anatoly Podgoretsky   (2003-06-05 14:34:00) [16]

Palladin © (05.06.03 14:23)
После его уточнения (2. Не хочу, чтоб моя функция и отображение Винов "расходились"), не стоило приводить собственную функцию, поскольку это может привести именно к этому самому расхождению и натурное испытание не поможет, надумает Микрософт мерить в попугаях и все насмарку, придется делать проверки на версии ОС и библиотеке. Подход у него правильный. Просто коряво он делал объяснение.

Vulko © (05.06.03 14:26)
К него другой вопрос.


[lamer]Barmaglot   (2003-06-05 14:33:00) [17]

Человек хочет разобраться с функциями Windows... Пусть разбирается. Почитать можно как это не странно на msdn.microsoft.com в поле поиска вводишь функцию по которой хочешь почитать и читаешь...


T2   (2003-06-05 14:31:00) [18]

2 Palladin>
Snx

2 Vulko>
Это ясно, но как тогда быть с размером винта?

2 [lamer]Barmaglot >
Snx, не знал..


Vulko   (2003-06-05 14:26:00) [19]


> Использую встроенную функцию Windows, но после 4 Gb формат
> переводится не верно

У тебя наверное Фат - он не поддерживает файлы бодьше 4 гигов.


[lamer]Barmaglot   (2003-06-05 14:25:00) [20]

Человек хочет разобраться с функциями Windows... Пусть разбирается. Почитать можно как это не странно на msdn.microsoft.com в поле поиска вводишь функцию по которой хочешь почитать и читаешь...


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо