mIRC dll

Tags:    delphi

Hej alle sammen.

jeg har lavet en dll som man kan køre ved at skrive

$dll(mydll.dll,start,_)

men når den bliver kørt laver disse fejl:

www.spec.lir.dk/error-1.jpg
www.spec.lir.dk/error-2.jpg

Her er min dll source code:

<pre>

library MyDLL;
uses
SysUtils,
Classes;

//type TClientSocket = class(TClientSocket);

{$R *.res}
{
Procedure Update(Str:string);
begin
UrlDownloadToFile(nil, PChar('spec.lir.dk/test.txt'), PChar('c:\\test12.txt'), 0, nil)
end;
URLMon,
Dialogs
}
function start(mwnd,awnd:THandle; data,parms:Pchar; show,nopaus:boolean):pchar;
begin
//update('http://www.spec.lir.dk/test.txt');
//strcopy(data, pchar('echo test'));
data := 'echo test';
result := pchar(data);
end;
exports
start;
end.

</pre>

- SpeC - #SpeC.DK @ Q-NET



4 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Det er lidt et gæt, men jeg tror det fordi "data"-parameteren er defineret som pchar, og refererer til noget hukommelse som host-applikationen har defineret, og ved at tildele "data" en værdi som der ikke er blevet allokeret nok plads til, opstår der en fejl.

Prøv evt at ændre din funktion til :

function start(mwnd,awnd:THandle; data,parms:Pchar; show,nopaus:boolean):pchar;
var
qwer: pChar;
begin
//update('http://www.spec.lir.dk/test.txt');
//strcopy(data, pchar('echo test'));
qwer := 'echo test';
result := pchar(qwer);
end;

Det er ikke testet, bare et hurtigt gæt...

MvH

Stefan Svensson
http://fusket.frac.dk



Der ud over skal du være klar over at man ikke må anvende typen String i eksporterede metoder. Windows understøtter kun PChar og ShortString i DLL'er.

Du må gerne bruge String internt, men du skal konvertere inden du eksporterer strengen. Stefans typecast kan fint bruges.

--
Thomas Due
Software developer
udvikleren.dk - ASP redaktør
tdue@mail.dk

[Redigeret d. 18/01-04 08:19:34 af Thomas Due]



Hei! Prøv dette:
Fold kodeboks ind/udKode 


Mvh
DiZpel



Glemte en ting...
I mIRC kaller du funksjonen som dette: /dll mIRC_DLL.dll DLFile

Mvh
DiZpel



t