Jag försöker skapa en dll i Delphi (den måste göras i pascal) med en funktion som skall vara en array av typen single. Denna funktion skall anropas av en exefil gjord i VB6, men jag kan bara inte få det att fungera! Det är inga problem så länge man inte använder arrayer utan bara enkla variabler. Delphi-koden ser ut som nedan: Det borde funka bättre såhär tror jag Tackar, nu blir det inga felmeddelanden iallafall. Jag får ut värden på alla elementen i arrayen, men alla element är 0 istället för att vara 0 -10. Suck... vad göra? Som sagt jag är lite osäker på hur man ska skriva i VB. Har du provat att sätta alla array värden till tex 10-20 i VB innan du anropar dll'en. Sedan kan du ju kolla arrayen i dll'en innan du fyller den med nya . Ändrar sig värdena till 0 efter detta? Hur ser din kod ut nu? Nu har jag tagit tag i detta igen, och testade att skicka in värden redan vid anropet till dll:en. Och jag får ut samma värden igen från dll:en, och resten av arrayens element är 0 precis som förut. Typproblem Delphi-VB
library project3;
{$IMAGEBASE $41000019}
uses
SysUtils,
Classes;
type
vect=array [1..10] of single;
{var
a:vect; }
function Addera: vect; stdcall;
var
i:integer;
begin
for i:= 1 to 10 do
Addera[i]:=i;
end;
exports
Addera;
begin
end.
...och VB-koden:
Private Declare Function Addera Lib "project3.dll" ()
Dim x(1 To 10) As Single
x(1) = Addera(1)
När jag kör detta får jag type missmatch. Nån som har en förklaring på varför?Sv: Typproblem Delphi-VB
I delphi ändrar du till:
procedure Addera(var Avect: vect); stdcall;
var
i:integer;
begin
for i:= 1 to 10 do
Avect[i]:=i;
end;
I Vb tror jag Var är lika med ByRef
Private Declare procedure Addera(byref x as single) Lib "project3.dll" ()
Addera(x(1))
lite osäker hur du ska skriva i VbSv: Typproblem Delphi-VB
Sv: Typproblem Delphi-VB
Sv: Typproblem Delphi-VB