Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Размер файла.


Автор: IamDreamer 8.5.2006, 14:11
Как можно без обращения к самому файлу узнать его размер, т.е. через строковую переменную, содержащую имя файла? 
И как узнать: является ли один из двух File/DirectoryListBox'ов активным, т.е. как в total cmd'e? 

 

Автор: Poseidon 8.5.2006, 14:19
Код
function FileSize(FName: string): int64;
Var SearchRec:TSearchRec;
begin
If FindFirst(FName, faAnyFile, SearchRec)=0 then
Result:= SearchRec.FindData.nFileSizeHigh*4294967296+SearchRec.FindData.nFileSizeLow;
FindClose(SearchRec);
end;


Добавлено @ 14:22 
Можно вместо 
Цитата(Poseidon @  8.5.2006,  14:19 Найти цитируемый пост)
Result:= SearchRec.FindData.nFileSizeHigh*4294967296+SearchRec.FindData.nFileSizeLow;


использовать Result:= SearchRec.Size, но я не помню чем это гразит smile 

Автор: IamDreamer 8.5.2006, 14:28
Poseidon, вызов 
Код
FileSize(SFN)
 выдает ошибку о несовместимости файлов. А когда прописал функцию в type'e там вообще ошибок посыпалось туча.  
   

Автор: Poseidon 8.5.2006, 14:32
А чо такое SFN?

У меня нормально вызывается

Код
FileSize('C:\1.txt')


или 

Код
var
fnm: string;
i: int64;
begin
fnm:= 'C:\1.txt';
i:= FileSize(fnm);
ShowMessage(IntToStr(i));
 

Автор: Albinos_x 8.5.2006, 14:41
ошибка возможно из-за того, что есть паскалевская команда:
Код

Filesize(f);

где f - файловая переменная

Добавлено @ 14:44 
попробуй поменять имя функции... 

Автор: IamDreamer 8.5.2006, 15:25
 
Цитата(Poseidon @  8.5.2006,  14:32 Найти цитируемый пост)
А чо такое SFN?

Это имя переменной типа Sring.
А ее надо в type описывать, там, где все процедуры вписываются? 

Автор: Poseidon 8.5.2006, 15:39
Цитата(IamDreamer @  8.5.2006,  15:25 Найти цитируемый пост)
А ее надо в type описывать, там, где все процедуры вписываются?  
 Если у тебя это не глобальныя переменная, то не надо.

В общем переименуй функцию с FileSize в, допустим, MyFileSize и используй.
В твоей SFN должен быть полный пусть к нужному файлу
 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)