Реализация макросов
От: Ascorin Россия  
Дата: 18.01.03 23:44
Оценка:
Задался задачей реализовать в своей программе макросы на подобии как это сделано в Word и Excell. А вот как это сделать даже в теории не знаю, может кто нибудь занимался данным вопросом или видел где нибудь на просторах интернета сайт где есть алгоритм реализации.

21.01.03 07:23: Перенесено из 'Алгоритмы'
Re: Реализация макросов
От: DOOM Россия  
Дата: 19.01.03 05:33
Оценка:
Здравствуйте, Ascorin, Вы писали:

A>Задался задачей реализовать в своей программе макросы на подобии как это сделано в Word и Excell. А вот как это сделать даже в теории не знаю, может кто нибудь занимался данным вопросом или видел где нибудь на просторах интернета сайт где есть алгоритм реализации.


Есть два пути:

1). Писать собственный интерпретатор с поддержкой собственного языка. Тогда задача сводится к парсингу текста, которая достаточно различными методами может решаться(не даром синтаксис различных языков отличается). Короче это долго и нудно.

2). Использовать Windows Scripting Host — JScript и VBScript там поддерживаются.
Re[2]: Реализация макросов
От: Ascorin Россия  
Дата: 20.01.03 00:03
Оценка:
Здравствуйте, DOOM, Вы писали:

DOO>Есть два пути...


У меня такая задумка,просто запоминать в файл действия которые выполнял пользователь,
то есть у меня обработчики висят на каждое событие от пользователя вот ихи писать в файл
А проблема в том, что я не допираю как потом в Делфи выполнить эти процедуры зная их имена
Re[3]: Реализация макросов
От: mrhru Россия  
Дата: 20.01.03 03:06
Оценка:
Здравствуйте, Ascorin, Вы писали:

A>У меня такая задумка,просто запоминать в файл действия которые выполнял пользователь,

A>то есть у меня обработчики висят на каждое событие от пользователя вот ихи писать в файл
A>А проблема в том, что я не допираю как потом в Делфи выполнить эти процедуры зная их имена

TObject.MethodAddress(MethodName) — возвращает адрес published метода, коими являются? в частности, все обработчики событий установленные в design-time.

var pm:TMethod;

  pm.Data := Self; //объект-владелец обработчиков, обычно форма
  pm.Code := Self.MethodAddress(SomeMethodName);

  TNotifyEvent(pm)(SomeSender); //тип обработчика и список параметров должен совпадать


Ну а совсем "правильно" — все таки подключить MS Script Host (или ActiveScript) и делать все через него.
Евгений, с приветом (но без остроумной подписи, к сожалению )
Re[4]: Реализация макросов
От: Ascorin Россия  
Дата: 10.02.03 19:58
Оценка:
Здравствуйте, mrhru, Вы писали:
m>Ну а совсем "правильно" — все таки подключить MS Script Host (или ActiveScript) и делать все через него.
Сделал я так как хотел только руководителю не понравилось, сказал что использовать программу будет продвинутый пользователь поэтому интересно будет узнать что такое
MS Script Host (или ActiveScript) и\или где можно почитать
Re[3]: Реализация макросов
От: _wqwa США  
Дата: 12.02.03 08:28
Оценка:
Здравствуйте, Ascorin, Вы писали:

A>Здравствуйте, DOOM, Вы писали:


DOO>>Есть два пути...


A>У меня такая задумка,просто запоминать в файл действия которые выполнял пользователь,

A>то есть у меня обработчики висят на каждое событие от пользователя вот ихи писать в файл

Один из случаев использования паттерна "Command", Гамма и Ко.
С его помощью и Undo/Redo делается, и макросы и история команд...
RSDN@Home
Кто здесь?!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.