[Delphi] Odczytanie zmiennej z DLL

[Delphi] Odczytanie zmiennej z DLL
AD
  • Rejestracja: dni
  • Ostatnio: dni
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

wyexportować z biblioteki funkjcę w stylu

Kopiuj
function Get(Name:PChar):PChar;

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

takie coś?

AD
  • Rejestracja: dni
  • Ostatnio: dni
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??

MikiKam
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

A zamiast procedury daj funkcję ;)

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

Pisane z głowy nie wiem czy dobrze :)

AD
  • Rejestracja: dni
  • Ostatnio: dni
0

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

MikiKam
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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

AD
  • Rejestracja: dni
  • Ostatnio: dni
0

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

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

MikiKam
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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

Kopiuj
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

AD
  • Rejestracja: dni
  • Ostatnio: dni
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.

MikiKam
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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

AD
  • Rejestracja: dni
  • Ostatnio: dni
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.

MikiKam
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 75
0

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

Kopiuj
ShowMessage(PChar(parametr));

Może coś da.

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

AD
  • Rejestracja: dni
  • Ostatnio: dni
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!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.