Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.56 MB
Время: 0.046 c
14-1090524534
Murkt
2004-07-22 23:28
2004.08.08
Аниме


3-1089723069
STM
2004-07-13 16:51
2004.08.08
Pack dbf из Delphi


6-1085297612
LuceSolare
2004-05-23 11:33
2004.08.08
Именованные каналы


3-1089879235
Акуля
2004-07-15 12:13
2004.08.08
HELP with ADOQuery!!!


1-1090507965
Lexa
2004-07-22 18:52
2004.08.08
Метод Create