powered by simpleCommunicator - 2.0.38     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Захват var-переменной процедуры - в принципе возможно?
9 сообщений из 9, страница 1 из 1
Захват var-переменной процедуры - в принципе возможно?
    #40118125
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть метод
Код: 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
Захват var-переменной процедуры - в принципе возможно?
    #40118133
swame2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cobalt747,

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

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



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

Тебе же ответили. Скопируй в локальную и захвати ее. Вернуть в var в _общем_ случае, невозможно. В данном частном - нужно смотреть что такое MakeCallECR и как это замыкание используется...
...
Рейтинг: 0 / 0
Захват var-переменной процедуры - в принципе возможно?
    #40118172
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Захват var-переменной процедуры - в принципе возможно?
    #40118176
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если сделать так?

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



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

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



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


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