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.
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.
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ś?
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??
A zamiast procedury daj funkcję ;)
function msg(parametr:PChar):stdcall;
begin
ShowMessage(parametr);
end;
Pisane z głowy nie wiem czy dobrze :)
To samo nie ma parametru.
To znaczy jest ale to są znaki takie jak się zły adres pamięci poda.
Dziwne bo mi działa wszystko dobrze.
Podaj jakiś kod to będzie łatwiej
To jak to masz zrobione ,że ci działa.
I zaznaczam ,że ja procedurę znajdującą się w exe wykonuje z dll'a
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
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.
A musi to być koniecznie PChar??
A daj Stringa.
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.
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:
http://4programmers.net/Delphi/Pchar#id-Przestroga
nie wiem czy to coś ci pomoże
MikiKam napisał(a)
edit:
http://4programmers.net/Delphi/Pchar#id-Przestroga
nie wiem czy to coś ci pomoże
O to chodziło zrobiłem przekazywanie na wskaźnikach i bajka.
Thx!