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

Вниз

Вроде ничего сложного, а ошибка вылетает :(   Найти похожие ветки 

 
Новенький в Делфи   (2002-07-03 20:37) [0]

Всё просто, подгружаю dll-ку, запускаю процедуру от туда, процедура делает своё дело, и через пол минуты мне вылетает ошибка, что программа выполнела не допустимую операцию, обратитесь к разроботчику :(

вот unit, к стати ... на всякий случай добавлю, что запускаю процедуру из unit2.

procedure Proccess(s: string);
var i:integer;
Executing: procedure (par:pChar);
begin
for i:=0 to high(unit1.com) do
if s=Unit1.Com[i].ComKeys then
begin
@Executing:=nil;
@Executing:= GetProcAddress(HandCom,"pShowMessage");
Executing("-");
exit;
end;
end;

вот DLL-ка


procedure pShowMessage(par: pChar);stdcall;
begin
MessageBox(0,"1","1",0);
end;

exports pShowMessage;


 
Игорь Шевченко   (2002-07-04 10:23) [1]

Отладчик, естественно, позабыт-позаброшен ?


 
Fellomena   (2002-07-04 10:36) [2]

Что-то не поняла... Зачем в
procedure pShowMessage
передаёшь что-то, если выводишь:
MessageBox(0,"1","1",0);
... ну да это детали

>> процедура делает своё дело, и через пол минуты мне вылетает ошибка, что программа выполнела не допустимую операцию, обратитесь к разроботчику

Где в программе FreeLibrary? Возможно в главной программе происходит повторный вызов процедуры procedure Proccess(s: string); и возможно, отсюда и ошибка.


 
Alx2   (2002-07-04 10:53) [3]

sharemem используем?


 
Fellomena   (2002-07-04 11:00) [4]

2 Alx2 © (04.07.02 10:53):
Привет!
А где ты тут увидел необходимость в sharemem?
Я думаю, если сделать Executing(PChar("-")); то ничего не изменится.
Единственное, может нам приведён не полный код dll и там есть ф-ии, которые используют string...


 
Alx2   (2002-07-04 11:12) [5]

>Fellomena (04.07.02 11:00)

Привет!

>Единственное, может нам приведён не полный код dll
>и там есть ф-ии, которые используют string...

Сказал в расчете на это. Хотя, бог его знает :)
Вызов MessageBox(0,"1","1",0) может неявно использовать строки при подготовке параметров. Но надо убедиться.


 
Alx2   (2002-07-04 11:16) [6]

Убедился. Не использует :( Просто подставляет константные адреса, что и следовало ожидать.

Можно еще попробовать выкинуть Executing и погонять на предмет ошибки. Может, и не в DLL дело...


 
Виктор Щербаков   (2002-07-04 11:18) [7]

procedure Proccess(s: string);
var i:integer;
Executing: procedure (par:pChar); stdcall;
begin
for i:=0 to high(unit1.com) do
if s=Unit1.Com[i].ComKeys then
begin
@Executing:=nil;
@Executing:= GetProcAddress(HandCom,"pShowMessage");
Executing("-");
exit;
end;
end;


 
Alx2   (2002-07-04 11:22) [8]

>Виктор Щербаков © (04.07.02 11:18)
Слоны, которых не сразу видно :))


 
Fellomena   (2002-07-04 11:23) [9]

2 Виктор Щербаков © (04.07.02 11:18):
8)
Вот уж воистину, в чужом глазу соринку ищем, а в своём бревно не замечаем :)




 
Новенький в Делфи   (2002-07-04 11:35) [10]

%)))) Баааальоше пасибо! :)
работает всё



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

Форум: "WinAPI";
Текущий архив: 2002.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.011 c
3-13975
Krizalis
2002-08-16 17:33
2002.09.05
Помогите с INTERBASE


8-14176
novomod
2002-02-25 19:48
2002.09.05
Проигрыватель.


3-13957
edik
2002-08-13 22:16
2002.09.05
Paradox через ADO


4-14344
ReYka
2002-06-28 12:19
2002.09.05
Как перехватить запуск любого приложения? И еще...


1-14062
texHelp
2002-08-24 20:01
2002.09.05
Zoom в TImage ?





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