Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.02.2006, 02:18
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
Печаль GetFileSize - проблема

Пишу прогу для просотра информации графических изображений и мне надо получит размер файла.
Вот код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
PicFile : file of Real;
pic : Cardinal;
picsize : Integer;
begin
//-----------------------------------
AssignFile(PicFile, OpenPictureDialog1.FileName);
Reset(PicFile);
//----------------------------------

picsize :=GetFileSize(PicFile, NULL);

Edit1.Text := FloatToStr(picsize);
CloseFile(PicFile);
end;

А этот гад ругается -
incompatible typse: 'Cardinal' and 'Text';
Поочему он счетает PicFile текстовым? - объясните.
  #2  
Старый 25.02.2006, 17:27
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

хе, незнаю. могу посоветовать такую ф-цию
Код:
function FileSize( const Path : String ) : Integer;
var FD : TWin32FindData;
    FH : THandle;
begin
  FH := FindFirstFile( PChar( Path ), FD );
  Result := 0;
  if FH = INVALID_HANDLE_VALUE then exit;
  Result := FD.nFileSizeLow;
  if ((FD.nFileSizeLow and $80000000) <> 0) or
     (FD.nFileSizeHigh <> 0) then Result := -1;
  FindClose( FH );
end;
взято из библиотеки KOL _bonanzas.rinet.ru
  #3  
Старый 26.02.2006, 02:41
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
Смех

Бляагодарю. А я нашёл кое-что по-проще:

Код:
function GetFileSize(FileName: String): Integer; 
begin
  try 
    FS := TFileStream.Create(Filename, fmOpenRead); 
  except 
    Result := -1; 
  end; 
  if Result <> -1 then Result := FS.Size;
  FS.Free;
end;

А применять:
просто вызываешь функцию и пишешь IntToStr(GetFileSize('C:\file.txt'));.
Усе, но всёравно спаибо.
  #4  
Старый 26.02.2006, 17:43
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

ну эта ф-ция вроде как открывает файл, а FileSize обходится без открытия, что имхо лучше.
  #5  
Старый 26.02.2006, 17:48
Аватар для Ross
Ross Ross вне форума
Активный
 
Регистрация: 15.10.2005
Адрес: Казань
Сообщения: 250
Репутация: 30
Печаль

Не могу знать. Но читал в справке про GetFileSize и там говорилось, что надо файлу задать значение fmOpenRead или fmOpenWrite. Ну, по крайней мере это работает.
  #6  
Старый 28.02.2006, 18:15
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

да, но если захочется узнать размер скажем pagefile.sys , то винда фиг даст его открыть и ничё не выйдет возможно. А тот код что я предоставил по идее должен сработать.
  #7  
Старый 23.11.2010, 01:43
AndreyBolshoy150 AndreyBolshoy150 вне форума
Прохожий
 
Регистрация: 22.11.2010
Сообщения: 1
Репутация: -1
По умолчанию

А мужики-то не знают
Закрытая тема


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:57.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter