Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


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

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


Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2021, 00:00   #1
shkolnik45
Пользователь
 
Регистрация: 16.04.2021
Сообщений: 12
По умолчанию ошибка "ожидалась открывающаяся скобка..."

Добрый день, помогите пожалуйста.
Взял программу с какого-то сайта, в паскале все работало, решил перенести в делфи и начали появляться такие ошибки, как например в строке 137 (topinf:=nil) пише,т что ожидалась открывабщая скобка, а обнаружен знак присваивания. С чем могут быть связаны такие проблемы? Не совсем знаком с тонкостями работы в делфи.


Код:
type
mn=set of 1..7;
Tstack = array [1..100] of mn;
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Image1: TImage;
    Label1: TLabel;
    Button1: TButton;
    Label2: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;



    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Button1Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Stack: Tstack;
  size: integer;
  A,B,C,res,res1,res2,res3:mn;
  st:string;


  postfiks, infiks : string;
  symb, outdata: char;
  i : integer;

    type
    pnode=^node;
    node = record
    datainf:char;
    p : pnode;
    end;

   topinf = pnode;
   temp = pnode;
implementation

{$R *.dfm}



//// для перевода
function pushinf (topinf : pnode; datainf : char) : pnode;
var
p : pnode;
begin
new (p);
p^.datainf := datainf;
p^.p := topinf;
pushinf := p;
end;

function popinf (topinf : pnode; var datainf : char) : pnode;
begin
datainf := topinf^.datainf;
popinf := topinf^.p;
dispose (topinf);
end;

function empty (topinf : pnode) : boolean;
begin
if topinf = nil then empty := true
else empty := false;
end;

function pred (oper1 : char; oper2 : char) : boolean;
begin
pred := true;
if (oper1 = '(') or (oper2 = '(') then pred := false;
if oper2 = '^' then pred := false;
if ((oper1 = '-') or (oper1 = '+'))
and ((oper2 = '*') or (oper2 = '/')) then pred := false;
end;
///// ///////////////////////////////////////////



procedure push (var stack:Tstack; var size:integer; x:mn);
begin
  size:=size+1;
  Stack[size]:=x;
end;

function topST(var stack:Tstack; var size:integer):mn;
begin
  topSt:=stack[size];
end;

procedure pop;
begin
size:=size-1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
x,y,j:integer;
i: integer;
s:string;
begin
//Перерисовка белым
image1.Canvas.Brush.Color:=clwhite;
Image1.Canvas.FloodFill(231,139,clblack,fsborder);
Image1.Canvas.FloodFill(268,121,clblack,fsborder);
Image1.Canvas.FloodFill(268,164,clblack,fsborder);
Image1.Canvas.FloodFill(325,134,clblack,fsborder);
Image1.Canvas.FloodFill(266,222,clblack,fsborder);
Image1.Canvas.FloodFill(301,180,clblack,fsborder);
Image1.Canvas.FloodFill(238,180,clblack,fsborder);

St:=ListBox1.Items[ListBox1.ItemIndex];


/// перевод
infiks := St + ' ';
postfiks:= '';
topinf:=nil;
i := 1;

repeat
symb := infiks[i];
if (symb >= 'A') and (symb <= 'Z')
   then begin
   postfiks := postfiks + symb;
   inc (i);
   end
      else begin
           while (empty(topinf) = false) and (pred (topinf^.datainf, symb) = true) do
           begin
           top := popinf (topinf, outdata);
           postfiks := postfiks + outdata;
           end;
      if (empty (topinf) = true) or (symb <> ')')
         then topinf := pushinf (topinf, symb)
              else topinf := popinf (topinf, outdata);
      inc (i);
      end;
until symb = ' ';

while empty (topinf) = false do
begin
topinf := popinf (topinf, outdata);
postfiks := postfiks + outdata;
end;
shkolnik45 вне форума Ответить с цитированием
Старый 05.05.2021, 01:17   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 6,019
По умолчанию

"topinf = pnode;" - декларация типа, а присвоить значение можно переменной, поэтому компилятор ругается.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 05.05.2021, 03:04   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,673
По умолчанию

Цитата:
Сообщение от shkolnik45 Посмотреть сообщение
Взял программу с какого-то сайта
90% кода в интернете - говно
Но АА писал эту статью 11 лет назад. С тех пор ситуация сильно ухудшилась.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] ошибка в цикле "repeat.until" Fatal: Syntax error, "UNTIL" expected but "(" found. sashakor22 Lazarus, Free Pascal, CodeTyphon 1 17.02.2019 15:25
Убрать папки "Pictures", "Music", "Видео", "Downloads" из "МОЙ КОМПЬЮТЕР" Бахтиёр1916 Windows 1 05.04.2017 12:53
Нужно пояснить/прокомментировать код программы, или коды функций "Добавить" "Удалить" "Обновить(редактировать" "Поиск" "Период") ZIRASS PHP 4 15.06.2016 14:23
echo HTML и закрывающая скобка тега ">" Smogg PHP 2 17.10.2014 13:43


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS