[Delphi] Odczytanie zmiennej z DLL

0

Witam.

Czy jest możliwość odczytania zmiennej np. typu PChar z biblioteki dll??

Jeśli tak czy moglibyście mnie jakoś naprowadzić na trop bo się już trochę z tym męczę.

Z góry Thx.

0

wyexportować z biblioteki funkjcę w stylu

function Get(Name:PChar):PChar;

w argumencie podajesz co chcesz z dll a jako wynik dostajesz to

takie coś?

0

Niestety nie oto mi chodzi bo mam coś takiego:

Biblioteka ma procedurę z aplikacji i wykonuje się dobrze lecz parametr jest zły.
Po prostu procedura w aplikacji nie widzi zmiennej przekazanej przez biblioteke;

np.
w aplikacji jest procedura

procedure Msg(Wiadomosc:Pchar);
begin
showmessage(Wiadmosc);
end;

A bliblioteka wykonuje tą procedure lecz ten parametr nie dochodzi.
Rozumiesz??

0

A zamiast procedury daj funkcję ;)

function msg(parametr:PChar):stdcall;
begin
  ShowMessage(parametr);
end;

Pisane z głowy nie wiem czy dobrze :)

0

To samo nie ma parametru.
To znaczy jest ale to są znaki takie jak się zły adres pamięci poda.

0

Dziwne bo mi działa wszystko dobrze.
Podaj jakiś kod to będzie łatwiej

0

To jak to masz zrobione ,że ci działa.

I zaznaczam ,że ja procedurę znajdującą się w exe wykonuje z dll'a

0

Ah to zmienia postać rzeczy :) ja myślałem, że odwrotnie (przepraszam za moje gapiostwo!).
Spróbuj przekazać tą procedurę DLLkowi jako zmienną:

var
  proc: procedure;

// ...

proc := moja_procedura;

i następnie przekaż zmienną proc do DLLa.
Nie jestem pewien czy zadziała bo wymyśliłem to na poczekaniu

0

Procedura się dobrze przekazuje lecz parametr procedury przypisany przez dll już nie ;(

A i jeśli się nie myle to zmiennej procedure nie można przekazywać jako parametr.

0

A musi to być koniecznie PChar??
A daj Stringa.

0

Przecież dllka nie może obsługiwać zmiennej string ale spróbowałem i to samo.
Bo komunikat się wyświetla ale treść nie jest taka jaka powinna.
Jest taka jak zmienna zwrócona przez ReadProcessMemory jak podasz zły adres.

0

No to jak masz PChara a przekazuje jakieś krzaki to powinno byc w tej procedurce coś takiego:

ShowMessage(PChar(parametr));

Może coś da.

edit:
PChar
nie wiem czy to coś ci pomoże

0
MikiKam napisał(a)

edit:
PChar
nie wiem czy to coś ci pomoże

O to chodziło zrobiłem przekazywanie na wskaźnikach i bajka.

Thx!

1 użytkowników online, w tym zalogowanych: 0, gości: 1