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

Вниз

Помогите с испльзованием Dll   Найти похожие ветки 

 
Leks   (2004-06-01 12:03) [0]

История такая. Есть основная программа - сервер. В ней - массив объектов, процедуры к которым находятся в Dll (клиенте). Необходимо организовать обмен данными между клиентом и сервером. Объект-клиент создается на стороне сервера. Некоторые процедуры должны иметь параметры (пробовал, не получилось. При вызове процедуры с параметрами программа вылетает.).  

type TEnimals = object
ID:longint;
ThreadID:cardinal;
DLLID:cardinal;
epr:TEnimalsParam;
liveTime:longint;
msg:TMessageParam;
// -----------------
LifeProc:Procedure;stdcall;
Move:Procedure; //работает прекрасно
ProcessMessage:procedure(var msg:TMessageParam); // А это вылетает при вызове

constructor create;
destructor destroy;
end;
// -------------------------------------------

Пробовал создавать объект в Dll и там назначать процедуру. Так работает, но получается несколько одинаковых объектов.

library Cow;
uses
 SysUtils,
 Classes,
 LiveObjects in "../LiveObjects.pas",
 windows;
var
EN:TEnimalsParam;
Lobj:TEnimals;
{$R *.res}

Function LiveObject_ProcessMessage(var msg:TMessageParam):integer;stdcall;
begin
messageBox(0,PChar(IntToStr(msg.DataType)),"qqqq",MB_OK);
// result:=1;
end;

Procedure LiveObject_Move;stdcall;
var s:string;
begin
while true do
begin
 s:="Hello from Thread" + IntToStr(LObj.ID);
 MessageBox(0,PChar(s),"hello",MB_OK);
 sleep(3000);
end;
end;

procedure LiveObject_GetAddr(var obj:PEnimals);
begin
obj:=@LObj;
end;

Exports LiveObject_Move,
        LiveObject_ProcessMessage,
        LiveObject_GetAddr;
begin
lObj.create;
Lobj.ID:=100 + random(1000);
lobj.LifeProc := @LiveObject_Move;
LObj.ProcessMessage:=@LiveObject_ProcessMessage;

end.
Помогите!!!!!


 
Digitman ©   (2004-06-01 12:23) [1]

бред какой-то ..


> lObj.create;


это что такое ?


 
NeyroSpace ©   (2004-06-01 15:10) [2]

А если убрать stdcall;?


 
Leks   (2004-06-02 16:15) [3]

Не помогает! Перепробовал все варианты, чего только не ставил.


 
Digitman ©   (2004-06-02 16:23) [4]

ты в курсе, что есть такое понятие как пошаговая трассировка программы под управлением отладчика ?


 
leks   (2004-06-04 16:55) [5]

Конечно в курсе!! Так тут-же код в dll.
И вообще этот код - так просто попытки, на скорую руку. Задача определить процедуры в dll (они на всех одни). Объект - клиент и объект-сервер должны передавать данные друг другу, а процедуры использовать данные клиента (в идеале). Клиентов много, данные на каждого разные.


 
BFG9k   (2004-06-04 17:28) [6]

DLL тоже можно отлаживать , надо только указать процесс , который этот DLL использует : Меню Run - parameters- Host Application = "exe файл " (Delphi 7).



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

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

Наверх





Память: 0.46 MB
Время: 0.035 c
14-1086270924
Igorek
2004-06-03 17:55
2004.06.20
Порекоммендуйте программу типа WinPopup или NetMeeting


3-1085549246
Tomkat
2004-05-26 09:27
2004.06.20
FireBird на WinXP


14-1086265716
pap
2004-06-03 16:28
2004.06.20
есть идея создать программу и $ выгодно продать


6-1083220373
Floppy
2004-04-29 10:32
2004.06.20
А как создать ярлыки на компьютерах локальной


3-1085501968
aimsyslv
2004-05-25 20:19
2004.06.20
Не удаляется запись





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