Crossreferences, сломал голову:(
От: Vadimio  
Дата: 13.04.05 07:11
Оценка:
Уважаемые коллеги!

Конвертирую заголовок с С на Delphi. Запутался в одной ерунде , простите за ламерский вопрос , но тем не менее .

Есть вот такая штука:

type
  TSomeRecord = record
    some_func: SomeFunc;
  end;

  SomeFunc = procedure( var sr: TSomeRecord );


Как разрулить?
Конечно приходит в голову объявить либо параметр функции либо поле структуры как pointer, и где нужно — приводить к соответствующему типу. Единственный ли это вариант?


Заранее благодарю!
Re: Crossreferences, сломал голову:(
От: Softwarer http://softwarer.ru
Дата: 13.04.05 07:20
Оценка: +1
Здравствуйте, Vadimio, Вы писали:

Как минимум, должно отработать так:

type
  PSomeRecord = ^TSomeRecord ;
  TSomeFunc = procedure ( SR : PSomeRecord ) ;
  TSomeRecord = record SomeFunc : TSomeFunc ; end ;


Более чистого прямого варианта, боюсь, нет — предобъявления типов разрешены только для указателей (и, в частности, для классов).

Если Вы конвертите — то есть собираетесь использовать сишную библиотеку — думаю, это естественный вариант. Если переводите код на Паскаль — я бы задумался на тему "не сделать ли это классом".
Re[2]: Crossreferences, сломал голову:(
От: Vadimio  
Дата: 13.04.05 07:28
Оценка:
Здравствуйте, Softwarer, Вы писали:

Ага, оно, благодарствую!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.