Гость
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Захват var-переменной процедуры - в принципе возможно? / 9 сообщений из 9, страница 1 из 1
07.12.2021, 14:49
    #40118125
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
есть метод
Код: pascal
1.
procedure TCEL_ECRDevice.MakeCallECR(AProc: TProcedure);


хочу использовать так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TCEL_ECRDevice.FillOFDState(var ARec: TKKM_FN_StateRec);
var
  NeedUnlockAfter: Boolean;
begin
  MakeCallECR(procedure begin
    SO.OFDState.TryGetValue(ID, ARec);
  end);
end;


Но получаю
[dcc32 Error] : E2555 Cannot capture symbol 'ARec'
...
Рейтинг: 0 / 0
07.12.2021, 15:06
    #40118133
swame2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
Cobalt747,

Скопируй в локальную, работай с ней, после обработки верни в var параметр
...
Рейтинг: 0 / 0
07.12.2021, 15:06
    #40118134
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
Лямбды с каптурами несовместимы с обычными указателями на обычные функции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
07.12.2021, 15:25
    #40118141
Cobalt747
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
Dimitry Sibiryakov,

забыл указать:
Код: pascal
1.
TProcedure = reference to procedure;



А есть сейчас какой-то способ в Дельфи "захватить" мою переменную ARec ?
...
Рейтинг: 0 / 0
07.12.2021, 15:57
    #40118162
Maxim Rusov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
Cobalt747,

Тебе же ответили. Скопируй в локальную и захвати ее. Вернуть в var в _общем_ случае, невозможно. В данном частном - нужно смотреть что такое MakeCallECR и как это замыкание используется...
...
Рейтинг: 0 / 0
07.12.2021, 16:11
    #40118172
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
procedure TForm2.FillOFDState(var ARec: TKKM_FN_StateRec);
var
  NeedUnlockAfter: Boolean;
  LRec: TKKM_FN_StateRec;
begin
  MakeCallECR(procedure begin
    SOOFDState.TryGetValue(5, LRec);
  end);
  ARec := LRec;
end;
...
Рейтинг: 0 / 0
07.12.2021, 16:15
    #40118176
rgreat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
А если сделать так?

Код: pascal
1.
2.
var
  LRec: TKKM_FN_StateRec absolute ARec;



Не пробовал, просто теоретизирую.
...
Рейтинг: 0 / 0
07.12.2021, 20:58
    #40118278
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
rgreat
А если сделать так?

Код: pascal
1.
2.
var
  LRec: TKKM_FN_StateRec absolute ARec;



Не пробовал, просто теоретизирую.
Вы много писали на PL?
...
Рейтинг: 0 / 0
08.12.2021, 07:26
    #40118320
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Захват var-переменной процедуры - в принципе возможно?
Не уверен, что получится, но можно попробовать объявить локальную переменную - указатель на TKKM_FN_StateRec. Положить в нее адрес ARec, захватить в лямбду. При вызове TryGetValue() разыменовать. Если TKKM_FN_StateRec большая структура, избавляемся от копирования туда-обратно.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Захват var-переменной процедуры - в принципе возможно? / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]