Текущий архив: 2004.08.08;
Скачать: CL | DM;
ВнизТупой вопрос: как перевести байты в Кб, Мб? :) Найти похожие ветки
← →
panov © (2004-07-27 12:02) [40]а, понятно.
т.е. нужно получить значение с некоторым количеством знаков после запятой.
Вот только я не нашел, где посмотреть в Windows такие значения можно.
Везде выдается в б, Кб, Мб, Гб
← →
Игорь Шевченко © (2004-07-27 12:43) [41]panov © (27.07.04 12:02)
> Вот только я не нашел, где посмотреть в Windows такие значения
> можно.
В проводнике, правой кнопкой
← →
panov © (2004-07-27 12:56) [42]
type
sofType=(sofB,sofKB,sofMB,sofGB);
function SizeOfFile(const FilePath: String;const sType: sofType=sofB): Double;
var
Size: Int64;
FS: THandle;
FD: WIN32_FIND_DATA;
begin
Result := -1;
FS := FindFirstFile(PChar(FilePath),FD);
if FS <> INVALID_HANDLE_VALUE then
begin
Size := (FD.nFileSizeHigh shl 32) + FD.nFileSizeLow;
windows.FindClose(FS);
case sType of
sofB: Result := Size; //б
sofKB: Result := Size / 1024; //Кб
sofMB: Result := Size / (1024*1024); //Мб
sofGB: Result := Size / (1024*1024*1024); //Гб
end;
end;
end;
Получение результата:
FormatFloat("0.00",SizeOfFile("c:\AVG6DB_F.DAT",sofMB))
Провери на нескольких файлах, вроде бы правильно показывает.
← →
Игорь Шевченко © (2004-07-27 13:20) [43]
> Провери на нескольких файлах, вроде бы правильно показывает.
Есть файл размером 15251 байт. Windows показывает 14,8 кб, твой код 14,9
Еще раз: в Windows не используются операции с плавающей точкой для определения размеров файлов.
← →
panov © (2004-07-27 13:33) [44]>Игорь Шевченко © (27.07.04 13:20) [43]
Мне интересно, как Windows определяет, сколько знаков после запятой показать в каждом случае.
← →
Игорь Шевченко © (2004-07-27 13:40) [45]
> Мне интересно, как Windows определяет, сколько знаков после
> запятой показать в каждом случае.
А какие случаи бывают ? У меня с одним знаком показывает.
Дело в том, что Windows не округляет значение, а отбрасывает незначащие цифры.
← →
panov © (2004-07-27 13:41) [46]>Игорь Шевченко © (27.07.04 13:40) [45]
У меня показывает и с двумя, и с одним знаком - для разных файлов.
← →
Anatoly Podgoretsky © (2004-07-27 13:53) [47]Чтобы не ломали голову, перейдите к понятию проценты
1024=100%
← →
Anatoly Podgoretsky © (2004-07-27 13:55) [48]округлить до сотых и размер не сходится с Виндовским, Виндоус не округляет до сотых. О чем постоянно и говорят здесь.
← →
panov © (2004-07-27 14:20) [49]by Игорь Шевченко:
http://www.scalabium.com/faq/dct0165.htm
А вот из MSDN:
StrFormatByteSizeW Function
--------------------------------------------------------------------------------
Converts a numeric value into a string that represents the number expressed as a size value in bytes, kilobytes, megabytes, or gigabytes, depending on the size.
Syntax
LPTSTR StrFormatByteSizeW( LONGLONG qdw,
LPWSTR pwszBuf,
UINT cchBuf
);
Parameters
qdw
[in] Numeric value to be converted.
pwszBuf
[out] Pointer to the converted string.
cchBuf
[in] Size of pwszBuf, in characters.
Return Value
Returns the address of the converted string, or NULL if the conversion fails.
Remarks
The first parameter of this function has a different type for the ANSI and Unicode versions. If your numeric value is a DWORD, you can use StrFormatByteSize with text macros for both cases. The compiler will cast the numerical value to a LONGLONG for the Unicode case. If your numerical value is a LONGLONG, you should use StrFormatByteSizeW explicitly.
Example
532 -> 532 bytes
1340 -> 1.3KB
23506 -> 23.5KB
2400016 -> 2.4MB
2400000000 -> 2.4GB
Function Information
Minimum DLL Version shlwapi.dll version 4.71 or later
Custom Implementation No
Header shlwapi.h
Import library shlwapi.lib
Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0
← →
Stager (2004-07-27 16:17) [50]А можно и я немного поумничаю?
Кб = килобиты
Мб = мегабиты
КБ = килоБАЙТЫ
МБ = мегаБАЙТЫ
← →
faost © (2004-07-27 16:30) [51]
> Stager (27.07.04 16:17) [50]
> А можно и я немного поумничаю?
>
> Кб = килобиты
> Мб = мегабиты
> КБ = килоБАЙТЫ
> МБ = мегаБАЙТЫ
Я тебе сотни варинатов могу привести, где Кб (Kb) - это килобиты имеются ввиду, а не килобайты ))
← →
Stager (2004-07-27 17:09) [52]Ну так а я о чем?
Маленькая буква "б" или "b" - биты. Большая - байты. Насколько я знаю, это достаточно общепринятый стандарт, по крайней мере - в московских компьютерных журналах.
← →
Игорь Шевченко © (2004-07-27 17:31) [53]
> по крайней мере - в московских компьютерных журналах
Те, кто писал Windows, вряд ли их читали :)
Страницы: 1 2 вся ветка
Текущий архив: 2004.08.08;
Скачать: CL | DM;
Память: 0.54 MB
Время: 0.039 c