Я - поклонник Грубые Графики , но Google Charts также хорош, если Вы не возражаете полагаться на внешний сервер.
Я не уверен, есть ли способ "Delphi 2010" , но есть способ Windows, который не включает FindFirst и все такое .
Я собрал это преобразование этой процедуры в Delphi (и в процессе изменил его для обработки файлов размером> 4 ГБ, если вам это понадобится).
uses
WinApi.Windows;
function FileSize(const aFilename: String): Int64;
var
info: TWin32FileAttributeData;
begin
result := -1;
if NOT GetFileAttributesEx(PWideChar(aFileName), GetFileExInfoStandard, @info) then
EXIT;
result := Int64(info.nFileSizeLow) or Int64(info.nFileSizeHigh shl 32);
end;
На самом деле вы можете просто использовать GetFileSize () , но для этого требуется HANDLE файла, а не только имя файла, и аналогично предложению GetCompressedFileSize () , для этого требуются две переменные. Оба GetFileSize () и GetCompressedFileSize () перегружают свое возвращаемое значение,
Вы также можете использовать DSiFileSize из DSiWin32 . Работает во "всем" Delphis. Внутри он вызывает CreateFile и GetFileSize.
function DSiFileSize(const fileName: string): int64;
var
fHandle: DWORD;
begin
fHandle := CreateFile(PChar(fileName), 0, 0, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if fHandle = INVALID_HANDLE_VALUE then
Result := -1
else try
Int64Rec(Result).Lo := GetFileSize(fHandle, @Int64Rec(Result).Hi);
finally CloseHandle(fHandle); end;
end; { DSiFileSize }