Procedura z dll z parametrem

Pedros
2002-07-16 21:47
Pedros
0

Piesze sobie taka procedure:

library Project1;

uses
SysUtils,
Classes;

{$R .res}
procedure szyfrowanie(plik,kodzik:string);stdcall;
begin
tu sie szyfruje plik
end;

exports
szyfrowanie name 'szyfr';

begin
end.

a w programie wstawiam cos takiego:
procedure TForm1.Button1Click(Sender: TObject);
var
DLL : THandle;
proc : procedure;
begin
DLL := LoadLibrary('aaa.dll');
try
@proc := GetProcAddress(DLL, 'szyfr');
if @proc = nil then raise Exception.Create('Bład - nie mogę znaleźć proceudry w bibliotece!');
proc(); *tu nie moge podac tych wartosci jakie deklarowalem w dllce
finally
FreeLibrary(DLL);
end;

Chyba wiecie o co mi chodzi. Zeby procedura z dllki byla wywolywana z parametrem. Wie ktos moze jak to zrobic?
end;
--pozdrawiam PEDROS {hello}
Delphi6

Pozostało 580 znaków

Chodek
2002-07-16 22:12
Chodek
0

Raczej powinno być tak:
proc : procedure ( plik , kodzik : string) ; stdcall;
i jeszcze jedno lepiej zrób zmienne plik , kodzik typu PChar ;)--Pozdrowienia {hello}
Chodek ;)
Delphi 6

Pozostało 580 znaków

Pedros
2002-07-16 22:28
Pedros
0

Przykro mi ale chyba nie powinno tak byc bo mi wywala blad ;( --pozdrawiam PEDROS {hello}
Delphi6

Pozostało 580 znaków

Chodek
2002-07-17 01:05
Chodek
0

A zmieniłeś w procedurze zmienne na typ PChar?? Bo jak nie to pewnie masz EAccessViolation ;)--Pozdrowienia {hello}
Chodek ;)
Delphi 6

Pozostało 580 znaków

Pedros
2002-07-17 08:59
Pedros
0

Zmienilem zmiennac na pchar i nadal nie dziala :( --pozdrawiam PEDROS {hello}
Delphi6

Pozostało 580 znaków

2002-07-17 09:44

Rejestracja: 18 lat temu

Ostatnio: 8 miesięcy temu

0

na moje oko, to powinienes exportować nie tylko szyfruj ale szyfruj(plik,kod:Pchar) popraw mnie, jak sie mylę--Spin
(Delphi 5 Enterprise)

Pozostało 580 znaków

Tomasz Wojcik
2002-07-17 14:38
Tomasz Wojcik
0

library Project1;

uses
SysUtils,
Classes;

{$R *.res}
procedure szyfrowanie(plik,kodzik:string);stdcall;
begin
//tu sie szyfruje plik
end;

exports szyfrowanie name 'szyfr';

begin
end.


procedure TForm1.Button1Click(Sender: TObject);
var
DLL : THandle;
proc : procedure(plik,kodzik: string);
begin
DLL := LoadLibrary('aaa.dll');
try
@proc := GetProcAddress(DLL, 'szyfr');
if @proc = nil then raise Exception.Create('Bład!');
proc({tutaj wstaw parametry});
finally
FreeLibrary(DLL);
end;
end.

U mnie dziala!
Jak u Ciebie nie dziala to napisz do mnie maila:
[email protected] ( napisz jakiego Delphi uzywasz )

Tomasz Wojcik

Pozostało 580 znaków

Pedros
2002-07-17 17:58
Pedros
0

Niestety mi nadal nie dziala ;( przy wyciaganiu dynamicznym. Ale gdy sprobwalem statycznie to zadzialalo {brawo} . Wolalbym uzywac sposobu dyamicznego, ale jak sie nie ma co sie lubi to sie lubi co sie ma &lt= (jedno z ulubionych powiedzonek mojej nauczycielki od gegry :-) )--pozdrawiam PEDROS {hello}
Delphi6

Pozostało 580 znaków

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