Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для El Sanchez

Ветеран


Contributor


Сообщения: 1218
Благодарности: 955

Профиль | Отправить PM | Цитировать


Цитата Serega:
FX-DENIS, скрипт будет выглядеть так: »
Serega, перевод размера файла в удобочитаемую форму можно возложить на винду, например:
читать дальше »

Код: Выделить весь код
[code]
#ifdef UNICODE
    #define A "W"
#else
    #define A "A"
#endif
type
    FILETIME = record
        dwLowDateTime, dwHighDateTime: DWORD;
    end;

    WIN32_FILE_ATTRIBUTE_DATA = record
        dwFileAttributes: Longint;
        ftCreationTime, ftLastAccessTime, ftLastWriteTime: FILETIME;
        nFileSizeHigh, nFileSizeLow: Longint;
    end;

function StrFormatByteSize64(qdw: Currency; var pszBuf: Char; cchBuf: UINT): PAnsiChar; external 'StrFormatByteSize64A@shlwapi.dll stdcall';
function GetFileAttributesEx(lpFileName: String; fInfoLevelId: DWORD; var lpFileInformation: WIN32_FILE_ATTRIBUTE_DATA): BOOL; external 'GetFileAttributesEx{#A}@kernel32.dll stdcall';

function BytesToSize(Bytes: Extended): String;
var
    pszBuf: array [0..15] of Char;
begin
    try
        Result := StrFormatByteSize64(Abs(Bytes div 1E4), pszBuf[0], sizeof(pszBuf));
    except end;
end;

function GetFileSize(Filename: String): Extended;
var
    lpFileInformation: WIN32_FILE_ATTRIBUTE_DATA;
begin
    if FileExists(ExpandConstant(Filename)) then
    begin
        GetFileAttributesEx(ExpandConstant(Filename), $0, lpFileInformation);
        Result := $7FFFFFFF;
        Result := ((lpFileInformation.nFileSizeHigh + integer(lpFileInformation.nFileSizeLow < 0))*Result + lpFileInformation.nFileSizeHigh + integer(lpFileInformation.nFileSizeLow < 0))*2 + lpFileInformation.nFileSizeLow;
    end;
end;

procedure InitializeWizard();
begin
    //хочу знать размер калькулятора
    MsgBox(BytesToSize(GetFileSize('{sys}\calc.exe')), mbInformation, MB_OK);
/end;

Последний раз редактировалось El Sanchez, 20-03-2012 в 16:03. Причина: не работало в Unicode

Это сообщение посчитали полезным следующие участники:

Отправлено: 18:27, 19-03-2012 | #1184