![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GetFileSize
nikv © (2006-09-01 13:07:00)Удалено модератором
Примечание: СПАМ
Джо (2006-09-01 14:13:00) [1]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1157101444&n=18
Dmitrij_K (2006-09-01 14:01:00) [2]
> > GetFileSize(h,@Int);//Int:Integer; - размер - и ты реально
> этим пользуешься?
опечатался, с кем не бывает
begin...end (2006-09-01 13:55:00) [3]> han_malign © (01.09.06 13:42) [2]
> для лучшего осознания, привожу не самую оптимальную схему:
Это неправильная схема. Двойное слово, равное $FFFFFFFF, может являться корректной младшей частью результата. Лучше так:
var
Res: Int64;
begin
Int64Rec(Res).Lo := GetFileSize(H, @Int64Rec(Res).Hi);
if (Int64Rec(Res).Lo = $FFFFFFFF) and (GetLastError <> NO_ERROR)then
// ошибка
end
han_malign (2006-09-01 13:42:00) [4]
> GetFileSize(h,@Int);//Int:Integer; - размер
- и ты реально этим пользуешься?
для лучшего осознания, привожу не самую оптимальную схему:
LowDWORD:= GetFileSize(h,@HighInt);а по нашему, по простому:
if(LowDWORD <> $FFFFFFFF)then int64Result:=int64(HighInt)shl 32 or LowDWORD
else begin
Error:= GetLastError;
int64Result:= -1;
end;
dwFileSize:= GetFileSize(h,nil);//до 4 Гb
if(LowDWORD = $FFFFFFFF)then begin
Error:= GetLastError;
.........
end;
Dmitrij_K (2006-09-01 13:31:00) [5]H:=FileOpen('filaname',fmOpenRead);
if H>0 then
begin
GetFileSize(h,@Int);//Int:Integer; - размер
CloseHandle(h);
end;
лучше использовать FindFirst+FindClose файл не надо открывать и размер показывает правильно если файл >4гб