Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.24;
Скачать: CL | DM;

Вниз

Размер файла в байтах без FileSize   Найти похожие ветки 

 
stimm   (2003-07-13 21:00) [0]

Как определиь размер файла в байтах без FileSize (ф-ия или процедура есть наверное - КАКАЯ!!!)


 
Palladin ©   (2003-07-13 21:05) [1]

Удалено модератором
Примечание: не нарывайся


 
Anatoly Podgoretsky ©   (2003-07-13 21:16) [2]

FindFirst


 
Song ©   (2003-07-13 21:24) [3]

The GetFileSize function retrieves the size, in bytes, of the specified file.

DWORD GetFileSize(

HANDLE hFile, // handle of file to get size of
LPDWORD lpFileSizeHigh // address of high-order word for file size
);


Parameters

hFile

Specifies an open handle of the file whose size is being returned. The handle must have been created with either GENERIC_READ or GENERIC_WRITE access to the file.

lpFileSizeHigh

Points to the variable where the high-order word of the file size is returned. This parameter can be NULL if the application does not require the high-order word.


 
Palladin ©   (2003-07-13 21:33) [4]


> Примечание: не нарывайся

и не думал...
FileSize - использует тот же самый GetFileSize.


 
Palladin ©   (2003-07-13 21:37) [5]

автору видимо надо что то типа

function GetFileSizeBezVsyakoyChepuhy(p_strFileName:string):integer;
var
f:file;
begin
assignfile(f,p_strFileName);reset(f,1);
result:=FileSize(f);
closefile(f);
end;


 
Ihor Osov'yak ©   (2003-07-13 21:51) [6]

Если аксакал говорит - его слушать надо - Anatoly Podgoretsky © (13.07.03 21:16)

И посмотреть хелп , примерно по такому сценарию

FindFirst,TSearchRec

и воззоеть:
type
TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;
end;


Зы. Этот способ не пребует открытия файла. А иногда это может быть определяющим..


 
Anatoly Podgoretsky ©   (2003-07-13 23:05) [7]

Именно из за этого критерия и предлагаю, в нагрузку получены будут и другие данные, кроме размера.


 
Song ©   (2003-07-13 23:36) [8]

2Ihor Osov"yak © (13.07.03 21:51)
Anatoly Podgoretsky © (13.07.03 23:05)
Palladin © (13.07.03 21:33)

А как насчёт если файл будет 38 мегов? :)


 
Anatoly Podgoretsky ©   (2003-07-13 23:54) [9]

Так не попугаев же.


 
Ihor Osov'yak ©   (2003-07-14 00:18) [10]

2 Song © (13.07.03 23:36)

Мне нравится ваш ход мыслей, но проблемы возникнут не для 38 мег, а где то в районе 2 гиг..

Если будем иметь дело с таким чудом, то следует обратить взор на
FindFirstFile и на структуру

typedef struct _WIN32_FIND_DATA {
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
TCHAR cFileName[ MAX_PATH ];
TCHAR cAlternateFileName[ 14 ];
} WIN32_FIND_DATA, *PWIN32_FIND_DATA;


Можна подумать, что сие обстоятельство вам не известно..



 
Ihor Osov'yak ©   (2003-07-14 00:24) [11]

Более корректно так - все же юзаем FindFirst и


TSearchRec = record
Time: Integer;
Size: Integer;
Attr: Integer;
Name: TFileName;
ExcludeAttr: Integer;
FindHandle: THandle;
FindData: TWin32FindData;

end;


TWin32FindData = _WIN32_FIND_DATAA

_WIN32_FIND_DATAA = record
dwFileAttributes: DWORD;
ftCreationTime: TFileTime;
ftLastAccessTime: TFileTime;
ftLastWriteTime: TFileTime;
nFileSizeHigh: DWORD;
nFileSizeLow: DWORD;

dwReserved0: DWORD;
dwReserved1: DWORD;
cFileName: array[0..MAX_PATH - 1] of AnsiChar;
cAlternateFileName: array[0..13] of AnsiChar;
end;



 
Song ©   (2003-07-14 10:27) [12]

2Ihor Osov"yak © (14.07.03 00:24)
Нет, конечно известно, просто да, я забыл про расширенную TWin32FindData :)
Когда мне нужно было сделать прогресс для обработки большого файла я столкнулся с этой проблемой и определил просто через АПИ.

>> Мне нравится ваш ход мыслей, но проблемы возникнут не для 38 мег, а где то в районе 2 гиг..
Я хотел сказать, что у TSearchRec.Size тип Integer, а поэтому проблема возникнет намного раньше.



Страницы: 1 вся ветка

Текущий архив: 2003.07.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
1-77926
acsoft
2003-07-04 08:54
2003.07.24
---|Ветка была без названия|---


1-77824
Keith Flint
2003-07-10 22:54
2003.07.24
проверка флоппи в ShellTreeView


1-77844
Cr@zy-EyE
2003-07-12 17:54
2003.07.24
Invalid Pointer Operation


1-77997
Darrin
2003-07-11 16:46
2003.07.24
Как изменить цвет MainMenu ?


3-77745
AlexanderSK
2003-07-01 13:45
2003.07.24
TCP порт для InterBase-а