Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.08.2015, 01:24   #1
Мордохвост
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 30
По умолчанию Нужен классовый оператор для процедуры, и паяльник для IDE

Привет!
Нужно сделать автокод присваивания анонимного обработчика события в стандартный TNotifyEvent.

Типы:
Код:
type
  TNotifyEvent = procedure(Sender: TObject) of object;
  INotifyEvent = reference to procedure (Sender: TObject);
Присваивание:
Код:
function MIOnNotify(const OnNotify:INotifyEvent):TNotifyEvent;
asm
  mov       rax,[rdx]
  mov       rax,[rax+$18]
  mov       [rcx+$00],rax
  mov       [rcx+$08],rdx
  mov       rax,rcx
end;
Код:
Код:
procedure TForm.TestExecute(Sender: TObject);
var
OnOk : INotifyEvent;
S    : WideString;
begin
OnOk := procedure (Sender: TObject)
begin
  if Sender is TBrowseForFolder then
    with Sender as TBrowseForFolder do
    begin
      S := Folder;
    end;
end;
S := '';
with TBrowseForFolder.Create(Self) do
try
  BrowseOptions := [bifNewDialogStyle,bifStatusText,bifUseNewUI];
  Folder := FPath;
  Caption := 'Select Freelancer Data Folder';
  OnAccept := MIOnNotify(OnOk);
  if Execute then
  begin

  end;  
finally
  Free;
end;
ShowMessage(S);
end;
Нужен class operator Explicit(?)(чтоб без вызова MIOnNotify). Я делать хэлпер для TMethod, но хэлпер class operator не понимает. Справка пишет не поддерживается тоже, но как сделать-то?

1. Скопировать весь этот стандартный TMethod в свой глобал юнит и там чудить?
2. Можно как-то изменить оригинальный System.pas?

По IDE.
Как заставить XE7 запоминать положение окон после первого запуска дебаггера? Как я поставлю в первый раз окна(положение, ширина, высота), они так каждый раз как бы я потом не перемещал и не менял размеры И ещё мне нужна поддержка ассемблера avx в code editor. И в debugger.
Мордохвост вне форума Ответить с цитированием
Старый 22.08.2015, 11:37   #2
JUDAS
фонатик DELPHI
Форумчанин
 
Аватар для JUDAS
 
Регистрация: 14.01.2008
Сообщений: 714
По умолчанию

Сижу читаю и не понимаю что тебе нужно решить.
Судя по твоему коду приходит мысль, что тебе нужно навешать параллельный обработчик на существующий. Если я правильно понял суть проблемы то встречный вопрос, почему бы тебе в конструкторе не "пробежаться" по всем компонентам у которых нужно перехватить обработчики, не подменить на свой, а адрес старого запомнить, куда нибудь в тег и вызывать.
приблизительно вот так:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FEvent : TNotifyEvent;
    procedure HookEvent(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  FEvent := Button1.OnClick;
  Button1.OnClick := HookEvent;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := 'Стандартный обработчик';
end;

procedure TForm1.HookEvent(Sender: TObject);
begin
  Button1.Caption :='HOOK';
  FEvent(Sender);
end;
95% сбоев и ошибок приложений, находится в полу метрах от монитора

Последний раз редактировалось JUDAS; 22.08.2015 в 11:42.
JUDAS вне форума Ответить с цитированием
Старый 22.08.2015, 11:39   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
По IDE.
Как заставить XE7 запоминать положение окон после первого запуска дебаггера? Как я поставлю в первый раз окна(положение, ширина, высота), они так каждый раз как бы я потом не перемещал и не менял размеры
юзать десктопы
Изображения
Тип файла: png 7.png (5.8 Кб, 106 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 23.08.2015, 01:03   #4
Мордохвост
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 30
По умолчанию

JUDAS, нет, мне реально нужно было, чтобы компилятор автоматически код делал. Ну эти class operators, только доступа нет вот к system.pas. Может кстати и к лучшему.

min@y™, это ужасно(?). Таки придется. Спасибо, понял.
Мордохвост вне форума Ответить с цитированием
Старый 23.08.2015, 01:10   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
это ужасно(?).
Чо ужасно-то?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.08.2015, 07:04   #6
Мордохвост
Пользователь
 
Регистрация: 15.04.2015
Сообщений: 30
По умолчанию

У меня открыватся FPU Window с размерами моими. Хорошо. Но CPU Window не открывается автоматом на вкладке, фиг с ним, но после перезапуска IDE оно дефолтное. Там максимально растянуто до регистра rbp, а я пытался до rsp и ширину показа регистров нормализовать. Не сохраняется короч.
Мордохвост вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IDE для Node.js ACE Valery Общие вопросы Web 7 22.01.2013 15:08
IDE / билд-система для 1С-Битрикс для автоматического оверрайда компонетов/шаблонов Ivan_32 WordPress и другие CMS 0 15.12.2012 13:35
C++ IDE для OS X pinguinson Общие вопросы C/C++ 0 08.12.2012 21:58
IDE для разработки CodeNOT Общие вопросы Web 13 10.07.2011 13:55
IDE ДЛЯ PHP Egik PHP 2 04.06.2008 09:44