• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

функция Eof! срочно!

  • Автор темы blackcat
  • Дата начала
B

blackcat

компилятор выдает ошибку. пишет "Missing operator or semicolon". все точки с запятой проверила. в чем ошибка понять не могу. задача встала! помогите.

структура данных:
Tsequence = class
public
f:Tfile; //файл
elem:Telem; //первый элемент в файле
eof:boolean; //признак конца файла
eor:boolean; //признак конца серии (задание на внешние сортировки)
...

фрагмент кода с ошибкой:
procedure Tsequence.ReadNext(var s:Tsequence);
begin
s.eof := eof(s.f); //на этой строке он выделяет ошибку!
if not s.eof then read(s.f,s.elem);
end;

в чем ошибка?
 
S

Shakmaev

а TFile существует вообще?
откуда он берет eof?
 
T

Titan

ошибка в том, что eof не работает с TFile.

чтобы убедиться возьмите по нажатию на кнопку (или любое другое событие елемента формы) впишите код:

procedure TForm1.Button1Click(Sender: TObject);
var
mTFile:TFile;
begin
eof (mTFile);
end;

Компилятор напишет - Incompatible types.
 
B

blackcat

Tfile созданный мною тип.и eof берет он,так сказать,из себя.ошибка не в том,что eof с Tfile не работает и в приведенном примере компилятор напишет "Missing operator or semicolon". ошибка в том.что eof еще и системная функция такая есть.а компилятор ищет сначала не в системном модуле ее,а ближайшее ее опрделение.так оказалось,что это самое ближайшее-мое опрделение поля класса.именно поэтому компилятор неудоумевает.что за скобки,если поле класса их не требует. можно либо переименовать,что я делать не стала,либо обратиться напрямую к системному модулю:
s.eof := system.eof(s.f);
 
T

Titan

Вы , конечно, правы. :)
Вот поэтому везде и рекомендуется не назначать своих имен, которые совпадают с системными именами
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!