Har en COM komponent som en parameter tar en array av en egendefinierad typ Nr 1 Första Dim satsen skall vara Public alltså i Formens General det där förstod jag inte mycket av.. Ok med public.Men hur många parametrar har du när det funkar ? Alltså, funktionen jag kallar på är en sorts rpc funktion, dvs. den tar ett funktionsnamn och en params() as CParameter. Hur många som ska finnas i params beror på vad funktionsnamnet. Men om jag vill kalla på en funktion som inte ska ha några parametrar får jag det inte att funka Fick ett förslag om att Jag ser två(2) alternativ från VB6 dim params() as string tom array som parameter
Dim params() As CParameter
och det funkar bra så länge jag har några parametrar jag vill skicka, men ifall jag vill skicka en tom array har jag gjort
Redim params(0)
men då får jag "object reference not set to an instance of an object"
Vad har jag missat/ hur skall jag göra?
(Tilläggas kan att VB inte är direkt min starkaste sida)
Sv: tom array som parameter
Testa Redim Redim params(1) eller Sv:tom array som parameter
varför måste första dim satsen vara public, den funkar ju ifall jag inte försöker skicka en tom array
och vill inte ha några element i arrayen om jag inte har några parametrar, vill alltså att den ska komm fram som en array utan element, alternativt null.Sv: tom array som parameter
Låt oss säga att du har 10.
Då kan du göra Redim parms(10) nu står det Null i alla 11
Eftersom Vi inte ser hela sammanhanget var du skickar parms så föreslog jag Public
Dvs du kan skicka från vilken Sub eller Function som du vill och ligger i samma Modul.
"Vad vet jag mitt arma fnask" som flickan sa .
Det finns kanske nån parameter som alltid måste vara medSv:tom array som parameter
sub btnFoo_Click()
dim params() as CParameter
' sätt storleken på parameter arrayen
If m_Params.Count Then
ReDim params(0 To m_Params.Count - 1)
Else
' ??????? <- vad ska jag ha här ???
End If
'ladda parametrar från annat ställe
i = 0
For Each param In m_Params
params(i) = param
i = i + 1
Next
'kalla på funktionen
txtResult.Text = mitt_objekt.min_funktion(txtMethod.Text, params)
end sub
signaturen för funktionen jag kallar på ser ut så här: (i C#)
string MakeRpc(string methodName, ref CParameter[] parameters);
Sv: tom array som parameter
Dim x As Array
x = Array.CreateInstance(GetType(CParameters), 0)
..kunde funka. Det gör det inte (verkar vara vb.net).
Jag använder alltså VB6
Sv:tom array som parameter
Dim parms() As String
eller
Dim parms() As Long
Värt att testasSv: tom array som parameter
funkade inte heller, (måste redim:ma även den innan den gick att skicka som funktionsparameter)
en long array känns inte rätt..
Gjorde för tillfället en fullösning (som jag inte är helt nöjd med), genom att skicka ett dummy element om det inte finns några riktiga element.