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

Вниз

Вызов процедуры из строки   Найти похожие ветки 

 
Serafim ©   (2005-11-10 01:04) [0]

Товарищи!
Кто-нибудь знает, как вызвать процедуру с параметрами или без
, имя которой находится в строке,
например:
ИМЯ_ФУНКЦИИ_ДЛЯ_ЭТОГО("showmessage("Test Msg")")
в результате показывала сообщение..
Заранее всем откликнувшимся thanks.


 
Джо ©   (2005-11-10 04:20) [1]

Самое простое - ищи интерпретаторы [Object] Паскаля. Например, бесплатный RemObjects PascalScript (http://remobjects.com).


 
irishka001 ©   (2005-11-10 09:36) [2]

ShellExecute (hWnd: HWND; Operation: PChar; FileName: PChar; Parametrs: PChar; Directory: PChar; CmdShow: Integer): HINST;

где: hWnd - Handle родительского окна, в который будут передаваться сообщения запускаемого приложения. Можно указывать Handle-ссылку окна вашего приложения.

Operation - производимая операция. Open - открыть, print - напечатать, explore - открыть папку. По умолчанию open, если указать nil.

FileName - имя файла или документа, интернет ссылка, e-mail адрес.

Parametrs - параметры, передаваемые приложению в командной строке.

Directory - каталог по умолчанию.

CmdShow - стиль окна. Показывает, в каком состоянии будет отображаться окно при запуске. Подробно рассказано выше.

Вместо параметров Operation, Parametrs и Directory можно ставить nil. Они являются не обязательными параметрами для запуска.

ПРИМЕР:
//параметры для WinRar
   str := "x -y -- "+"C:\1.rar *.* C:\temp\";
   nResult:= (ShellExecute(Form1.Handle, "open", "winrar", PChar(str), nil , sw_hide)


 
ShiFT   (2005-11-10 10:39) [3]


> ShellExecute (hWnd: HWND; Operation: PChar; FileName: PChar;
>  Parametrs: PChar; Directory: PChar; CmdShow: Integer):
> HINST;

Не В Тему.


 
TUser ©   (2005-11-10 12:09) [4]

Процедуру, написанную в своей программе - никак (кроме банального - много раз if then). Можно published метод класса - см. TypInfo.


 
ZeroDivide ©   (2005-11-10 12:47) [5]

showmessage вызывает MessageBoxA из user32.dll, вроде. Адрес можно получить

FARPROC GetProcAddress(

   HMODULE hModule, // handle to DLL module  
   LPCSTR lpProcName  // name of function
  );

Что же касается функций в твоей программе, то можно поставить опцию проекта для генерации map-файла и потом в рантайме, парся его, находить адрес нужной тебе функции.


 
begin...end ©   (2005-11-10 13:05) [6]

> TUser ©   (10.11.05 12:09) [4]
> Процедуру, написанную в своей программе - никак

Как. Читать: http://delphimaster.net/view/4-1130585063/

> ZeroDivide ©   (10.11.05 12:47) [5]
> showmessage вызывает MessageBoxA из user32.dll, вроде

Не вызывает.


 
КиТаЯц ©   (2005-11-10 13:21) [7]

Немного не в тему, но проблемма, на мой взгляд схожая. Вылазит ошибка. Так... мелоч, но неприятно. Мелкая такая и назойливая. Поймать где не могу, т.к. не у меня, а у других вылазит.  Ничего  банальнее такого не придумал:
var
 ExceProc: integer = 0; // глобально

procedure TMainForm.Button1Click(Sender: TObject);
begin
 ExceProc: integer = 1;
 ...
end;

procedure TMainForm.Button2Click(Sender: TObject);
begin
 ExceProc: integer = 2;
 ...
end;

procedure TMainForm.ApplicationEvents1Exception(Sender: TObject;
 E: Exception);
begin
 Showmessage("Ошибка в процедуре ["+IntToaStr(ExceProc)+"] "+E.Message);
end;


Решив пройтись по всему коду и вставить на входе ExceProc вкоре сломался. Неасилил :(
Есть какое то решение, чтобы сделать что-то вроде
Showmessage("Ошибка в процедуре ["+tProcedureName(?)+"] "+E.Message);

Вроде понятно объяснил...


 
TUser ©   (2005-11-10 13:53) [8]

> КиТаЯц ©   (10.11.05 13:21) [7]

JclDebug посмотри.



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

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

Наверх





Память: 0.48 MB
Время: 0.033 c
2-1132303903
LionMen
2005-11-18 11:51
2005.12.11
Консольное приложение


2-1132476842
The One
2005-11-20 11:54
2005.12.11
Как получить обратиться к полю класса (private) из регулярной...


2-1132694527
Бандерас
2005-11-23 00:22
2005.12.11
Вставка из буфера обмена только один раз ...


8-1121092399
arhey
2005-07-11 18:33
2005.12.11
изменение фмзичиского размера картинки


11-1084104283
yustas
2004-05-09 16:04
2005.12.11
Хелп





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский