Wywoływanie procedur z dll'a funkcji nie jest dla mnie problemem. Tylko jak z DLL wywołać procedure na formie?
Tak bezpośrednio to sie nie da (przynajmniej bez jakichś zaawansowanych kombinacji). Pierwsze co mi przychodzi na mysl to wysyłanie z dll-a komunikatu do formy.
tzn. jak? to juz lepszym sposobem byłby transfer w pliku txt....
Hmm... Jednego nie rozumiem... Co rozumiesz poprzez wywołanie procedury na formie?
Pokombinować nie umiesz ? :]
Mozesz przeciez wpisac w edicie za pomoca dll i w onchange dac odpowiednia procedure jezeli text edita jest taki jak costam :]
Wiem ze sposob jest slaby itd. ale to po to by dowiedziec sie czy o to chodzilo :]
P.S. Edit Visible:=false zeby to jakos wygladalo :P
tzn. jak? to juz lepszym sposobem byłby transfer w pliku txt....
Eee [???]. Nie kapuje co mają do rzeczy pliki txt. W każdym razie raczej nie zrozumiałes o co mi chodzi ;P . Można sobie zadeklarować własny komunikat, nastepnie wysłać go pod uchwyt formy, w której umieszczasz obsługę tego komunikatu. Dokładny przykład masz tu http://4programmers.net/Forum/viewtopic.php/id=61145/post=171525#171525.
Być moze da sie przekazać do dll adres procedury w głownej formie, ale to juz wyższa szkoła jazdy :P.
//no może troche przesadziłem, w każdym razie dla mnie trudniejsze bo z pamieci rozwiązania bym nie podał ;) .
Być moze da sie przekazać do dll adres procedury w głownej formie, ale to juz wyższa szkoła jazdy :P.
Wyższa szkoła jazdy? Dla mnie sprawa prostsza :)
W programie głównym robisz coś takiego:
Procedurka_z_DLLa(@procedurka_w_programie_glownym);
A w Dll'ce dajesz tak:
procedure Procedurka_z_DLLa(var procka: procedure(argumenty procedurki w programie glownym));
begin
procka(argumenty wywolania);
end;
Oczywiście pisane z pamięci, więc może coś się nie zgadzać, ale generalnie w ten deseń.
procedure Procedurka_z_DLLa(var procka: procedure(argumenty procedurki w programie glownym));
begin
procka(argumenty wywolania);
end;
Adres to zwykly cardinal (lub word?), wiec tylko to wysylasz i podstawiasz jako adres zdefiniowanej procki.
ok... jeszcze raz. Wyjaśnię może serum problemu, to może będzie bardziej zrozumiałe. Pisze sobie rozbudowany chat (cli<>srv). Sama główna forma aplikacji z socketami jest niewidoczna, a dll mają pełnić rolę skór. No więc ładuję sobie dynamicznie dll'a, wywołują procedure start, która wyświetla formę (zawartą w dll'u), na której są standardowe komponenty: edit, memo itp. Teraz, jeśli w socket dostanie wiadomość, to wywołuje procedure z dll'a, która dodaje wpis do memo itd. Teraz chce zrobić na odwrót - gdy użytkownik wpisze wiadomość i kliknie na wyślij, to przekazać wiadomość do głównaj formy i wysłać socketem.... ot i cały problem.
No wiec wybierz sobie cos z powyzszych, komunikaty, komunikaty + adres procedury ... wszystko bylo powiedziane, tylko troche pogoglowac o wysylaniu/odbieraniu komunikatow ;)