Главная страница
    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.008 c
1-14155
stas_a
2002-08-25 05:50
2002.09.05
Код символа для русских букв


1-14148
Nikoss
2002-08-24 19:38
2002.09.05
Объясните пожайлуста, в чем ошибка?


7-14292
mcs
2002-06-22 22:35
2002.09.05
PID ы всех процессов системы


3-13915
nic418
2002-08-15 10:32
2002.09.05
Help! Создание сложного индекса для .DBF - файла с BDE


8-14186
SerVS - S
2002-04-25 10:28
2002.09.05
Проблема с OpenGL





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