Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2013.09.08;
Скачать: [xml.tar.bz2];

Вниз

Передача текста функции как параметра функции. Проблема...   Найти похожие ветки 

 
ForumReader ©   (2011-08-12 14:33) [0]

Приветствую.
Использую Дельфи 2007, в одном из проектов приведен код, который у меня упорно не компилируется, хотя на форуме том об этих вещах говорят как о само собой разумеющемся :\

Это у меня Дельфи старая или хитрость есть какая либо?

procedure actDomExecute;
 var
   q: ICefDomNode;
 begin
   crm.Browser.MainFrame.VisitDomProc(
     procedure (const doc: ICefDomDocument)
     var
       q: ICefDomNode;
     begin
       q := doc.GetElementById("q");
       if Assigned(q) then q.SetElementAttribute("value", "Hello, world");
     end
   );
 end;


Процедура объявлена как
procedure VisitDomProc(const proc: TCefFastDomVisitorProc);

А TCefFastDomVisitorProc вот так:
TCefFastDomVisitorProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const document: ICefDomDocument);


 
ForumReader ©   (2011-08-12 14:35) [1]

Да, еще - компилятор выдает:

Expression expected but "PROCEDURE" found (E2029)


 
oldman ©   (2011-08-12 14:47) [2]

http://www.codenet.ru/progr/delphi/errors.php


 
Cobalt ©   (2011-08-12 15:06) [3]

а в другом проекте в 2007-ом подобный код компилируется?


 
MBo ©   (2011-08-12 15:49) [4]

>Это у меня Дельфи старая
да
анонимные функции введены в Д2009


 
ForumReader_   (2011-08-12 18:52) [5]


> >Это у меня Дельфи старая
> да
> анонимные функции введены в Д2009

Большое спасибо за разъяснение. Грустно. Вот как эту жесть портировать в Дельфи 2007? :)


 
Cobalt ©   (2011-08-12 19:01) [6]

Можно, только придется попотеть.
основная фишка таких функций (если я не ошибаюсь) - в сохранении контекста вызвавшей функции (т.е. можно обращаться к её локальным переменным)
Замените их на иные другие способы обмена данными.


 
Anatoly Podgoretsky ©   (2011-08-12 19:18) [7]

> ForumReader  (12.08.2011 14:33:00)  [0]

Что так и говорит "Я не компилируюсь, это само собой разумеющее"


 
_Юрий   (2011-08-13 12:03) [8]

В данном случае локальный контекст не используется, и можно просто заменить на обычную именованную процедуру

procedure DoWork (const doc: ICefDomDocument);
var
  q: ICefDomNode;
begin
  q := doc.GetElementById("q");
  if Assigned(q) then q.SetElementAttribute("value", "Hello, world");
end;

procedure actDomExecute;
var
  q: ICefDomNode;
begin
   crm.Browser.MainFrame.VisitDomProc(DoWork);



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2013.09.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.002 c
2-1356344035
oam333
2012-12-24 14:13
2013.09.08
Не получается копировать часть изображения


1-1312869852
Troychik
2011-08-09 10:04
2013.09.08
Есть ли какие идеи? (MS Word)


15-1364966140
O'ShinW
2013-04-03 09:15
2013.09.08
прехват запросов ODBC к БД (oracle)


15-1364373642
brother_
2013-03-27 12:40
2013.09.08
Ностальгия по OS


15-1364869186
brother
2013-04-02 06:19
2013.09.08
Перенос софта





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский