Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 24.09.2014
Сообщений: 3
1

Delphi жалуется, что не описан идентификатор

25.02.2015, 03:40. Показов 828. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Когда пытаюсь использовать поля записи refarc в процедуре addarc, делфи жалуется на поля (v,next), что они не объявлены.
Когда использую в других процедурах поля записи refnode таких проблем нет, хотя описывал всё одинаково.
Прога запускается, несмотря на проблему.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
   refnode = ^node;
   refarc = ^arc;
   node = record
      id: integer;
      next: refnode;
      arclist: refarc;
   end;
   arc = record
      st_time: integer;
      fin_time: integer;
      v: integer;
      next: refarc;
   end;
  TForm1 = class(TForm)
    okButton: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    PaintBox1: TPaintBox;
    procedure okButtonClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
 
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  n,i,d,v:integer;
  root,cur,start:refnode;
  inp,outp:textfile;
 
implementation
 
{$R *.dfm}
 
procedure addnode(cur1:refnode; k:integer);
var cur2:refnode;
begin
  if cur1^.next=nil then begin
    new(cur2);
    cur1^.next:=cur2;
    cur2^.next:=nil;
    cur2^.arclist:=nil;
    cur2^.id:=k;
  end
  else addnode(cur1^.next,k);
end;
 
function searchid(cur1:refnode; ids:integer):refnode;
begin
 if cur1^.id=ids then searchid:=cur1
 else searchid:=searchid(cur1^.next,ids);
end;
 
procedure addarc(cur1:refarc; v,starttime,finishtime:integer);
var cur2:refarc;
begin
 while cur1^.Next<>nil  do cur1:=cur1^.next;
 new(cur2);
 cur1^.next:=cur2;
 cur2^.v:=v;
end;
Не дописана, пока ничего не делает.

Добавлено через 4 часа 45 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
 
  TForm1 = class(TForm)
    okButton: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    PaintBox1: TPaintBox;
    Label2: TLabel;
    checkedit: TEdit;
    checkbutton: TButton;
    procedure okButtonClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
 
    procedure PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  type
  refnode = ^node;
   refarc = ^arc;
   node = record
      id: integer;
      next: refnode;
      arclist: refarc;
   end;
   arc = record
      st_time,fin_time,v,number: integer;
      next: refarc;
   end;
 
var
  Form1: TForm1;
  n,i,j,d,v,p,dst,dfn,stt,fnt,mintime:integer;{dst-номер деревни начала маршрута,
  dfn-номер деревни конца маршрута, stt-время отправки, fnt-время прибытия,
  p - кол-во рейсов, mintime - минимальное время попадания в необходимую деревню}
  root,cur,curn:refnode;
  cura:refarc;
  win:boolean;
  minroute:string;//искомый путь
  inp,outp:textfile;
 
implementation
 
{$R *.dfm}
 
procedure addnode(cur1:refnode; k:integer);
var cur2:refnode;
begin
  if cur1^.next=nil then begin
    new(cur2);
    cur1^.next:=cur2;
    cur2^.next:=nil;
    cur2^.arclist:=nil;
    cur2^.id:=k;
  end
  else addnode(cur1^.next,k);
end;
 
function searchid(cur1:refnode; ids:integer):refnode;
begin
 if cur1^.id=ids then searchid:=cur1
 else searchid:=searchid(cur1^.next,ids);
end;
 
procedure addarc(cur1:refarc; v,starttime,finishtime,number:integer);
var cur2:refarc;
begin
 while cur1^.Next<>nil  do cur1:=cur1^.next;
 new(cur2);
 cur2^.next:=nil;
 cur1^.next:=cur2;
 cur2^.v:=v;
 cur2^.number:=number;
 cur2^.st_time:=starttime;
 cur2^.fin_time:=finishtime;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.paintbox1.Canvas.refresh;
//Form1.Canvas.fillrect(;
end;
 
 
 
procedure TForm1.FormCreate(Sender: TObject);
begin
assignfile(inp,'input.txt');
assignfile(outp,'output.txt');
n:=0;
i:=1;
end;
 
procedure TForm1.okButtonClick(Sender: TObject);
begin
reset(inp);
Readln(inp,N);
if n>0 then begin
  new(root);
  cur:=root;
  root^.next:=nil;
  root^.arclist:=nil;
  root^.id:=1;
  end;
for j := 2 to n do begin
  new(curn);
  cur^.next:=curn;
  cur:=curn;
  cur^.id:=j;
  cur^.arclist:=nil;
  cur^.next:=nil;
end;
 
Readln(inp,d,v);
Readln(inp,p);
for j:=1 to p do begin
 readln(inp,dst,stt,dfn,fnt);
 cur:=searchid(root,dst);
 if cur^.arclist=nil then begin
  new(cura);
  cur^.arclist:=cura;
  cura^.next:=nil;
  cura^.st_time:=stt;
  cura^.number:=j;
  cura^.fin_time:=fnt;
  cura^.v:=dfn;
  end
 else addarc(cur^.arclist,dfn,stt,fnt,j);
 end;
closefile(inp);
end;
 function timee(now,r_st,r_fin:integer):integer;//процедура считает время
 begin
   if (now mod 24)>r_st then timee:=now+(24-(now mod 24))+r_fin
   else timee:=now+r_fin-(now mod 24);
 end;
 
Procedure GO(cur:refnode; finish,hours:integer; mas:set of [1..100]; route:string);
var curarc:refarc;
begin
  mas:=mas+[cur^.id];
  if cur^.id=finish then begin
    win:=true;
    if hours<mintime then begin
      mintime:=hours;
      minroute:=route;
      end;
     end
    else begin
      curarc:=cur^.arclist;
      while curarc<>nil do begin
       if not(curarc^.v in mas) then
        GO(searchid(root,curarc^.v),finish,timee(hours,curarc^.st_time,curarc^.fin_time),mas,route+'-'curarc^.number);
       curacr:=curarc^.Next;
      end;
    end;
 
end;
 
 
procedure TForm1.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if i<=n then begin
 
  form1.PaintBox1.canvas.pen.width:=3;
  form1.paintbox1.Canvas.Ellipse(x,y,X+5,Y+5);
  form1.paintbox1.Canvas.textout(x-15,y-15,inttostr(i));
  form1.edit1.Text:=inttostr(mouse.CursorPos.x);
  inc(i);
 end;
end;
 
end.
Код почти дописал, но теперь прога не хочет запускаться ([DCC Error] Unit1.pas(152): E2029 Identifier expected but 'SET' found)
1ая проблема тоже еще висит, однако она не мешала запускать прогу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.02.2015, 03:40
Ответы с готовыми решениями:

Не описан идентификатор CreateOleObject
Задача у меня такая: на форме есть база данных которую мне надо перенести в экселевскую таблицу. Я...

Delphi жалуется на модули и т.д
Решил я однажды покопаться в исходниках,но почему-то у меня Delphi подчёркивает...

Откомпилировать код с переменной, тип которой описан позже (Delphi 7)
подскажите метод, который позволяет компилировать код с переменной, тип которой описан позже

При использовании TFloatField, Delphi выдает ошибку неизвестный идентификатор, что делать?
При использовании TFloatField, Delphi выдает ошибку неизвестный идентификатор, что делать?...

2
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
25.02.2015, 16:32 2
Identifier expected but 'SET' found)
Ну написано же - ожидался идентификатор, а вместо него вcтретился оператор SET
0
251 / 162 / 24
Регистрация: 22.08.2014
Сообщений: 1,598
Записей в блоге: 1
25.02.2015, 19:40 3
сни

Добавлено через 2 минуты
вот здесь
Цитата Сообщение от Jubba Посмотреть сообщение
Procedure GO(cur:refnode; finish,hours:integer; mas:set of [1..100]; route:string);
изучи
как в функцию передать множество ?

Добавлено через 2 часа 39 минут
в типах намутил, должны быть разными.
Цитата Сообщение от Jubba Посмотреть сообщение
refarc = ^arc;
* *node = record
* * * id: integer;
* * * next: refnode;
* * * arclist: refarc;
* *end;
* *arc = record
* * * st_time,fin_time,v,number: integer;
* * * next: refarc;
* *end;
0
25.02.2015, 19:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.02.2015, 19:40
Помогаю со студенческими работами здесь

Симулинк жалуется на что-то
Вот что пишет: Model 'untitled' has been configured to record logged data for inspection. Based on...

Что делать, если апплет жалуется на права?
сейчас сделал такую программулину, которая выводит заголовки, выдаваемые сервером при запросе к...

Интернет есть, но софт жалуется, что подключение отсутствует
Приветствую друзья! На одном из моих рабочих компов под управлением Windows XP случилась проблема,...

Задано квадрат в который вписан четыре квадрата так что, вершины каждого следующего находятся на серединах сторон описан
Задано квадрат в который вписан четыре квадрата так что, вершины каждого следующего находятся на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru