Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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гб


Наверх

Титульная страница Поиск, карта сайта Написать письмо