Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2011, 18:36   #1
legendary
Форумчанин
 
Аватар для legendary
 
Регистрация: 21.04.2010
Сообщений: 125
По умолчанию filesize возвращает ноль, при не пустом файле

Код:
var x: integer;
     f: textfile;
begin
assignfile(f,'file.txt');
append(f);
x:=filesize(f);
write(f,x);
closefile(f);
end;
Почему filesize постоянно 0 ? file.txt не пустой.
legendary вне форума Ответить с цитированием
Старый 01.02.2011, 18:39   #2
dolphin705
Форумчанин
 
Аватар для dolphin705
 
Регистрация: 02.08.2008
Сообщений: 213
По умолчанию

Код:
var
x: integer;
f: textfile;
begin
assignfile(f,'file.txt');
append(f);
x:=filesize(f);
Write(f,inttostr(x));
closefile(f);

Последний раз редактировалось Stilet; 03.02.2011 в 07:09.
dolphin705 вне форума Ответить с цитированием
Старый 01.02.2011, 18:42   #3
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Цитата:
FileSize( var F):Integer Возвращает текущий размер файла, связанного с файловой переменной F . Не используется для текстовых файлов.
не игнорируйте справку

Последний раз редактировалось vovk; 01.02.2011 в 18:45.
vovk вне форума Ответить с цитированием
Старый 01.02.2011, 18:43   #4
legendary
Форумчанин
 
Аватар для legendary
 
Регистрация: 21.04.2010
Сообщений: 125
По умолчанию

ok!!!
off!!!!

Последний раз редактировалось legendary; 01.02.2011 в 18:52.
legendary вне форума Ответить с цитированием
Старый 01.02.2011, 18:57   #5
dolphin705
Форумчанин
 
Аватар для dolphin705
 
Регистрация: 02.08.2008
Сообщений: 213
По умолчанию

Рабочий

Код:
var
x: integer;
f: textfile;
f1 : file;
begin
assignfile(f1,'file.txt');
Reset(f1,1);
x:=filesize(f1);
closefile(f1);

assignfile(f,'file.txt');
append(f);
WriteLn(f,inttostr(x));
closefile(f);
dolphin705 вне форума Ответить с цитированием
Старый 01.02.2011, 19:32   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Рабочий
Код:
var
x: integer;
...
Кстати, данный код не сможет прочитать размер файла больше 2 Гб (а это в настоящее время вполне даже актуально, хотя, автору топика это вряд ли... ).

вот код, избавленный от этого недостатка:
Код:
function SizeFile(s: string): int64;
var
  SearchRec : _WIN32_FIND_DATAA;
begin
  if FileExists(s) then begin
      FindFirstFile(pchar(s), SearchRec);
      result := SearchRec.nFileSizeHigh;
      result := result shl 32;
      result := result + SearchRec.nFileSizeLow
  end
  else
    result := -1;
end;
или, можно так:
Код:
function GetFileSize2(namefile: string): Int64;
var InfoFile: TSearchRec;
    AttrFile: Integer;
    Error: Integer;
begin
 AttrFile := $0000003F; // Any file
 Error    := FindFirst(namefile, AttrFile, InfoFile);
 if Error <> 0 then result := -1
  else begin
   Result := InfoFile.FindData.nFileSizeHigh;
   Result := Result shl 32;
   Result := Result or InfoFile.FindData.nFileSizeLow
  end;
 FindClose(InfoFile)
end;
ну и для преобразования int64 -> строку:
Код:
function Int64ToStr(i64: int64): string;
begin
  str(i64, result)
end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при делении на ноль.. vityanya Общие вопросы Delphi 2 13.01.2011 05:29
Почему _kbhit возвращает TRUE при отсутствии нажатий? Catharsis Общие вопросы C/C++ 3 01.08.2010 17:40
Delphi, ошибка деления на ноль, хотя знаменатель не ноль Эренка Помощь студентам 7 22.04.2010 15:56
не работает FileSize Alex Cones Общие вопросы Delphi 2 11.12.2009 19:34
idHTTP при нерабочем сайте возвращает ошибку Yuran Работа с сетью в Delphi 5 26.05.2008 14:37