Вверх ↑
Этот топик читают: Гость
Ответов: 4639
Рейтинг: 755
#16: 2011-01-26 15:08:52 ЛС | профиль | цитата
По идее, это должна была быть вложенная процедура.
Покажи сгенерированный код.
карма: 26

0
Ответов: 1429
Рейтинг: 50
#17: 2011-01-26 15:11:43 ЛС | профиль | цитата
Вот:

#pas
procedure TClassFTCG_Tools_8EA8A50.event_doValue(var Data:TData; index:word);
begin

procedure myProc(var myvar:integer);
begin
end;
end;

hiFTCG_Tools_8EA8A50.pas(85) Error: Statement expected but 'PROCEDURE' found
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#18: 2011-01-26 15:14:19 ЛС | профиль | цитата
Netspirit, ваш код неверен, он создаст наподобие этого:
#pas
...
int1 := 5 + 2;
procedure MyProc(Arg:integer);
begin
//мой код
end;
MyProc(2);
...

Внутри кода функции нельзя объявлять переменные, типы, функции, процедуры... в общем, вообще ничего нельзя объявлять, можно только использовать уже объявленное до begin функции

карма: 10
0
Ответов: 4639
Рейтинг: 755
#19: 2011-01-26 15:16:06 ЛС | профиль | цитата
Упустил из памяти, что вложенная процедура должна быть объявленной
перед begin.
Попробуй перед println('procedure ....')
вставить block.select(blk_priv_var)
------------ Дoбавленo в 15.16:
Assasin, можно объявлять вложенные функции, только перед begin.
карма: 26

0
Разработчик
Ответов: 4698
Рейтинг: 426
#20: 2011-01-26 15:17:46 ЛС | профиль | цитата
Netspirit писал(а):
Assasin, можно объявлять вложенные функции, только перед begin.

Я знаю, я же не говорил, что функции нельзя объявлять вообще Там можно объявлять и константы, и новые типы, и, наверное, даже интерфейсы
карма: 10
0
Ответов: 1429
Рейтинг: 50
#21: 2011-01-26 15:20:11 ЛС | профиль | цитата
Netspirit, вы только, что решили мою старую проблему )
А я ж незнал как туда процедуры записать.

#pas
type
TClassFTCG_Tools_8EA8A50 = class(TFTCG_Tools_EM)
private
flag1:boolean;
ftimer1:PMMTimer;
fautostop1:integer;
autostopdef1:integer;
procedure myProc(var myvar:integer);
begin
end;

карма: 0

0
Ответов: 4639
Рейтинг: 755
#22: 2011-01-26 15:21:53 ЛС | профиль | цитата
Ой, это не то, но уже близко.
Вставь вместо block.select(blk_priv_var)
это: block.select(loc_vars)
карма: 26

0
Ответов: 1429
Рейтинг: 50
#23: 2011-01-26 15:28:14 ЛС | профиль | цитата
Работает!

#pas
procedure TClassFTCG_Tools_8EA8A50.event_doValue(var Data:TData; index:word);
var
procedure myProc(var myvar:integer);
begin
end;
begin

end;
------------ Дoбавленo в 15.28:
hiFTCG_Tools_8EA8A50.pas(84) Error: Identifier expected but 'PROCEDURE' found
карма: 0

0
Ответов: 4639
Рейтинг: 755
#24: 2011-01-26 15:30:28 ЛС | профиль | цитата
Ты сделай перед block.select(loc_vars) одно объявление локальной переменной, чтобы после var не было пусто.
карма: 26

1
Голосовали:login
Ответов: 1429
Рейтинг: 50
#25: 2011-01-26 15:33:31 ЛС | профиль | цитата
Netspirit, точно! скомпилировалось!
карма: 0

0
файлы: 1code_22305.txt [182B] [141]
Ответов: 4639
Рейтинг: 755
#26: 2011-01-26 15:34:21 ЛС | профиль | цитата
Ну что ж, извращайся дальше
карма: 26

0
Ответов: 1429
Рейтинг: 50
#27: 2011-01-26 16:33:09 ЛС | профиль | цитата
Netspirit, может, все же можно, как-то, выделить блок implementation? Чтобы напечатать туда процедуру просто так?
карма: 0

0
Ответов: 4639
Рейтинг: 755
#28: 2011-01-26 16:54:42 ЛС | профиль | цитата
Тут ничем не могу помочь. Я никак не могу определить, где формируются блоки FTCG-контейнера.
То-ли в ftcg_codegen.dll, то-ли в самой среде. Изучение codegen.dpr и direct.inc ничего не дало.
карма: 26

0
Ответов: 1429
Рейтинг: 50
#29: 2011-01-26 17:05:17 ЛС | профиль | цитата
Может тут Dilma ответит, подождем.
карма: 0

0
Ответов: 1429
Рейтинг: 50
#30: 2011-01-31 04:26:42 ЛС | профиль | цитата
Странно это, что Dilma не отвечает.

В codegen.dpr, вот такие есть, но они не работают.

Vars
Units
IBody
Dead
RUnit
PrInt
PrImp


карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)