Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать размер файла? Не так просто, как кажется. 
:(
    Опции темы
CyberBullDog
Дата 30.1.2007, 19:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 24.9.2006

Репутация: нет
Всего: нет



Мне нужно узнать размер файла, который находится на лазерном диске.

Пробовал два варианта.
При вызове функции Reset() (открыть файл для чтения) сразу появляется сообщение об ошибке.
Еще один вариант - FindFirst(...,SR), а потом SR.Size должен вернуть размер, но при этом он долго думает и решает, что размер файла=0.
Среда Delphi7.

Подскажите, если кто знает как определить размер?
PM MAIL   Вверх
Matematik
Дата 30.1.2007, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



Ошибка в 17 строке.
Код

if FindFirst('d:\test\file.txt', faanyfile, ssr)=0 then
  ssr.Size - размер
CloseFind(ssr)

PM MAIL WWW ICQ   Вверх
W4FhLF
Дата 30.1.2007, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


Профиль
Группа: Участник Клуба
Сообщений: 2831
Регистрация: 2.12.2006

Репутация: 6
Всего: 121



Код

var
  dwSize, hFile: dword;
begin
  hFile := CreateFile(pChar('F:\file_on.cd'),GENERIC_READ,FILE_SHARE_READ,nil,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
  dwSize := GetFileSize(hFile, 0);
  CloseHandle(hFile);


Прекрасно работает.


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
CyberBullDog
Дата 30.1.2007, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 24.9.2006

Репутация: нет
Всего: нет



Спасибо всем!!!

Разобрался.
PM MAIL   Вверх
ivan219
Дата 8.2.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



3 Функции нахождения размера файла:
Код

function FSize1(FileName: PChar):Cardinal; //Минемальное время поиска.
var
  F: HFILE;
begin
 F:=_lopen(FileName, OF_READ);
 Result:=_llseek(F ,0 , FILE_END);
 _lclose(F);
end;

function FSize2(FileName: PChar):Cardinal; //Максимальное время поиска.
var
  SearchRec: TSearchRec;
begin
 Result:=0;
 if FindFirst(ExpandFileName(FileName) ,faAnyfile ,SearchRec )=0 then 
  Result:=SearchRec.Size;
 FindClose(SearchRec);
end;

function FSize3(FileName: PChar):Cardinal; //Чуть больше чем у FSize1.
var
  hFile: Cardinal;
begin
 hFile := CreateFile(FileName,GENERIC_READ,FILE_SHARE_READ,nil,
                     OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0);
 Result:= GetFileSize(hFile, nil);
 CloseHandle(hFile);
end;

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0666 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.