Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.11;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1132134636
Andrey21
2005-11-16 12:50
2005.12.11
Автоматическое изменение Height RichEdit-а


14-1132300801
vopros
2005-11-18 11:00
2005.12.11
дайте, пожайлуста ссылку на ГОСТ на ТЗ для написанио ПО


2-1132915316
De
2005-11-25 13:41
2005.12.11
Возможны ли извраты с PopupMenu?


4-1128497357
k.e.a
2005-10-05 11:29
2005.12.11
описание класса SysAnimate32


1-1131803201
Dmitrich
2005-11-12 16:46
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский