[Delphi]Przesyłanie zmiennych do funkcji w dll

0

Witam!

Mam problem, który można streścić , jak mi się wydaje, następująco: wywołuję funkcję z zaprzyjaźnionego dlla wysyłając mu między innymi jednego integera. Kolega Dll odbiera tą liczbę, tyle że zawsze widzi ją jako 2010351658 (Google nie wie, co to za liczba, czyli pewnie nic nie znacząca).

Na mój gust albo mam błąd w wywołaniu/definicji funkcji albo po prostu źle ją odczytuje i tak naprawdę wszystko jest dobrze.

Wygląda to tak:

w dllu:

function szyfruj(tekst,szyfr:shortstring; a:integer):shortstring;
begin
MessageDlg(inttostr(a), mtError, [mbOK], 1);
end;

w głównym programie:

a:=length(imemo.Text);
wynik:=szyfruj(tekst, szyfr, a);

MessageDlg uparcie pokazuje 2010351658 dla dowolnej zawartości imemo.

Wiem, że zasadność działania szyfruj() jest wątpliwa, ale to wersja debugująca. Chodzi mi o wartość a. Wiem też, że niefajnie przesyłać stringi ale na razie chcę przy tym zostać. Używam ShareMem.

Tak przy okazji - ShareMem powinienem wrzucić do dlla i gdzie jeszcze? Do uses w źródle projektu czy unitu? Wrzucam tu i tu na wszelki...

Z góry dzięki za odpowiedź.

0
xavier napisał(a)

w dllu:

function szyfruj(tekst,szyfr:shortstring; a:integer):shortstring; stdcall;
begin
MessageDlg(inttostr(a), mtError, [mbOK], 1);
end;

pokaż jeszcze jak masz w głównym programie zadeklarowaną szyfruj

Tak przy okazji - ShareMem powinienem wrzucić do dlla i gdzie jeszcze? Do uses w źródle projektu czy unitu? Wrzucam tu i tu na wszelki...

do dpr - czyli pliku projektu i ważne, żeby był na pierwszym miejscu na liście uses
A jeśli musisz przekazywać shortstringi to zamiast sharemem i borlandmm.dll polecam znakomity zamiennik nie potrzebujący dodatkowej dllki i szybszy od ShareMem FastShareMem

0

stdcall brakowało w deklaracji w dllu. Teraz wszystko działa, dziękuję pięknie!

Zadanie jest na zaliczenie, więc się nie przejmuję za bardzo prędkością ;-) Ale chętnie się przyjrzę temu fastsharememowi.

Pozdrawiam

0
xavier napisał(a)

stdcall brakowało w deklaracji w dllu. Teraz wszystko działa, dziękuję pięknie!

pokaż jeszcze jak masz w głównym programie zadeklarowaną szyfruj bo tam też musi być stdcall bo jak będziesz miał pecha to się wysypie przy prezentacji projektu

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