Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Pointer, ? 
:(
    Опции темы
Loshad
Дата 1.6.2003, 18:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











procedure go;
begin
ShowMessage('A');
end;

procedure P(pp: Pointer);
begin
//confused.gifconfused.gifconfused.gifconfused.gifconfused.gif??
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
p(@go);
end;

Что написать в procedure P(pp: Pointer); , чтоб это заработало?
Спасибо!
  Вверх
dm9
Дата 1.6.2003, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



А так нельзя?

Код
type Action = procedure (tt : String);

procedure Go (tt : String);
begin
  ShowMessage (tt);
end;

procedure P (WhatToDo : Action);
var S : String;
begin
  ...
  WhatToDo (S);
  ...
end;

procedure TForm1.Timer1Timer (Sender : TObject);
begin
  P (Go);
end;

PM MAIL ICQ   Вверх
Loshad
Дата 1.6.2003, 20:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Можно.
Но мне хочется узнать, можно ли осуществить вышеуказанный метод.
  Вверх
dm9
Дата 1.6.2003, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Можно. После экспериментов получилось вот это: (компилировалось на BP):
Код
procedure S1;
begin
  WriteLn (1);
end;
procedure S2;
begin
  WriteLn (2);
end;
procedure Go (P : Pointer);
var DDD : Procedure;
begin
  @DDD := P;
  DDD;
end;
begin
  Go (@S1);
  Go (@S2);
end.


Как ни странно, работает smile.gif
PM MAIL ICQ   Вверх
Shuricksoft
Дата 1.6.2003, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 27.3.2002
Где: Odessa, Ukraine

Репутация: нет
Всего: нет



Сорри за оффтопик, но зачем же это нужно? =) Почему нельзя просто процедуру вызывать? 8-)
PM MAIL ICQ   Вверх
dm9
Дата 1.6.2003, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 6
Всего: 137



Можно ещё так:

Код
{$G+}
const St : String = 'ABC';
procedure S1 (T : Char);
begin
  WriteLn (T);
end;
procedure S2 (T : Byte);
begin
  WriteLn (T);
end;
procedure Go (P : Pointer);
begin
  asm
     push 219
     mov ax, word ptr P
     call ax
  end;
end;
begin
  Go (@S1);
  Go (@S2);
end.


Но всё это бред: юзай первый способ, где было
type action = procedure...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0502 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.