|
| Funktion virker ikke ??? Fra : James |
Dato : 14-08-02 22:57 |
|
Hej NG
Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click() ikke virker.
Jeg er ikke helt sikker på min "CalcR" funktion så det kunne måske være den.
Jeg får denne meddelse:
"Compile error:
ByRef argument type mismatch"
Private Sub CalcDeter_Click()
Dim a, b, c As Double
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
Text4.Text = Str$(CalcD(a, b, c))
End Sub
Public Sub CalcRoots_Click()
Dim a, b, c, d As Double
Dim result As Variant
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = CalcD(a, b, c)
result = CalcR(a, b, d)
Text4.Text = Str$(result(0) & result(1))
End Sub
Function CalcD(a, b, c As Double) As Double
CalcD = (b * b) - (4 * a * c)
End Function
Function CalcR(a, b, d As Double) As Variant
If d >= 0 Then
solutions(0) = (-b - Sqr(d)) / (2 * a)
If d > 0 Then
solutions(1) = (-b + Sqr(d)) / (2 * a)
Else
solutions(1) = solutions(0)
End If
End If
ClacR = solutions
End Function
På forhånd tak
/James
| |
Mads Chr. Olesen (15-08-2002)
| Kommentar Fra : Mads Chr. Olesen |
Dato : 15-08-02 10:54 |
|
> Public Sub CalcRoots_Click()
> Dim a, b, c, d As Double
Deklarerer a, b og c som variant, men d som double
> Function CalcD(a, b, c As Double) As Double
Forventer a og b er varianter og c er en double
> d = CalcD(a, b, c)
giver tre varianter som parametre...
Dit problem er at du ikke bare kan sige:
private function CalcD(a, b, c as Double)
Du skal sige:
private function CalcD(a as Double, b as Double, c as Double)
"James" <james@talent.dk> skrev i en meddelelse
news:ajejp4$t3i$1@eising.k-net.dk...
> Hej NG
> Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click() ikke
virker.
> Jeg er ikke helt sikker på min "CalcR" funktion så det kunne måske være
den.
> Jeg får denne meddelse:
> "Compile error:
> ByRef argument type mismatch"
>
> Private Sub CalcDeter_Click()
> Dim a, b, c As Double
> a = Val(Text1.Text)
> b = Val(Text2.Text)
> c = Val(Text3.Text)
> Text4.Text = Str$(CalcD(a, b, c))
> End Sub
> Public Sub CalcRoots_Click()
> Dim a, b, c, d As Double
> Dim result As Variant
> a = Val(Text1.Text)
> b = Val(Text2.Text)
> c = Val(Text3.Text)
> d = CalcD(a, b, c)
> result = CalcR(a, b, d)
> Text4.Text = Str$(result(0) & result(1))
> End Sub
> Function CalcD(a, b, c As Double) As Double
> CalcD = (b * b) - (4 * a * c)
> End Function
>
> Function CalcR(a, b, d As Double) As Variant
> If d >= 0 Then
> solutions(0) = (-b - Sqr(d)) / (2 * a)
> If d > 0 Then
> solutions(1) = (-b + Sqr(d)) / (2 * a)
> Else
> solutions(1) = solutions(0)
> End If
> End If
> ClacR = solutions
> End Function
>
> På forhånd tak
> /James
>
>
>
| |
James (15-08-2002)
| Kommentar Fra : James |
Dato : 15-08-02 11:25 |
|
Hej Mads
Det blev det lidt bedre af, men nu får jeg en runtime error. Hvis jeg
debug'er siger den at det er linien:
solutions(0) = (-b - Sqr(d)) / (2 * a)
der er noget galt med, men jeg kan ikke rigtig se hvad det skulle være.
Kan du/i ??
"Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
news:ajftit$oeg$1@sunsite.dk...
> > Public Sub CalcRoots_Click()
> > Dim a, b, c, d As Double
> Deklarerer a, b og c som variant, men d som double
>
> > Function CalcD(a, b, c As Double) As Double
> Forventer a og b er varianter og c er en double
>
> > d = CalcD(a, b, c)
>
> giver tre varianter som parametre...
>
> Dit problem er at du ikke bare kan sige:
> private function CalcD(a, b, c as Double)
>
> Du skal sige:
> private function CalcD(a as Double, b as Double, c as Double)
>
>
> "James" <james@talent.dk> skrev i en meddelelse
> news:ajejp4$t3i$1@eising.k-net.dk...
> > Hej NG
> > Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click() ikke
> virker.
> > Jeg er ikke helt sikker på min "CalcR" funktion så det kunne måske være
> den.
> > Jeg får denne meddelse:
> > "Compile error:
> > ByRef argument type mismatch"
> >
> > Private Sub CalcDeter_Click()
> > Dim a, b, c As Double
> > a = Val(Text1.Text)
> > b = Val(Text2.Text)
> > c = Val(Text3.Text)
> > Text4.Text = Str$(CalcD(a, b, c))
> > End Sub
> > Public Sub CalcRoots_Click()
> > Dim a, b, c, d As Double
> > Dim result As Variant
> > a = Val(Text1.Text)
> > b = Val(Text2.Text)
> > c = Val(Text3.Text)
> > d = CalcD(a, b, c)
> > result = CalcR(a, b, d)
> > Text4.Text = Str$(result(0) & result(1))
> > End Sub
> > Function CalcD(a, b, c As Double) As Double
> > CalcD = (b * b) - (4 * a * c)
> > End Function
> >
> > Function CalcR(a, b, d As Double) As Variant
> > If d >= 0 Then
> > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > If d > 0 Then
> > solutions(1) = (-b + Sqr(d)) / (2 * a)
> > Else
> > solutions(1) = solutions(0)
> > End If
> > End If
> > ClacR = solutions
> > End Function
> >
> > På forhånd tak
> > /James
> >
> >
> >
>
>
>
>
| |
Mads Chr. Olesen (15-08-2002)
| Kommentar Fra : Mads Chr. Olesen |
Dato : 15-08-02 13:12 |
|
Nu har du jo så smukt deklareret alle dine variabler... hvorfor så ikke
solutions ?
Hvis du deklarerer solutions som:
Dim solutions(0 to 1)
I starten af calcR så burde det virke....
tror jeg...
"James" <james@talent.dk> skrev i en meddelelse
news:PjL69.179347$0b6.1602981@news.easynews.com...
> Hej Mads
> Det blev det lidt bedre af, men nu får jeg en runtime error. Hvis jeg
> debug'er siger den at det er linien:
> solutions(0) = (-b - Sqr(d)) / (2 * a)
> der er noget galt med, men jeg kan ikke rigtig se hvad det skulle være.
> Kan du/i ??
>
> "Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
> news:ajftit$oeg$1@sunsite.dk...
> > > Public Sub CalcRoots_Click()
> > > Dim a, b, c, d As Double
> > Deklarerer a, b og c som variant, men d som double
> >
> > > Function CalcD(a, b, c As Double) As Double
> > Forventer a og b er varianter og c er en double
> >
> > > d = CalcD(a, b, c)
> >
> > giver tre varianter som parametre...
> >
> > Dit problem er at du ikke bare kan sige:
> > private function CalcD(a, b, c as Double)
> >
> > Du skal sige:
> > private function CalcD(a as Double, b as Double, c as Double)
> >
> >
> > "James" <james@talent.dk> skrev i en meddelelse
> > news:ajejp4$t3i$1@eising.k-net.dk...
> > > Hej NG
> > > Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click() ikke
> > virker.
> > > Jeg er ikke helt sikker på min "CalcR" funktion så det kunne måske
være
> > den.
> > > Jeg får denne meddelse:
> > > "Compile error:
> > > ByRef argument type mismatch"
> > >
> > > Private Sub CalcDeter_Click()
> > > Dim a, b, c As Double
> > > a = Val(Text1.Text)
> > > b = Val(Text2.Text)
> > > c = Val(Text3.Text)
> > > Text4.Text = Str$(CalcD(a, b, c))
> > > End Sub
> > > Public Sub CalcRoots_Click()
> > > Dim a, b, c, d As Double
> > > Dim result As Variant
> > > a = Val(Text1.Text)
> > > b = Val(Text2.Text)
> > > c = Val(Text3.Text)
> > > d = CalcD(a, b, c)
> > > result = CalcR(a, b, d)
> > > Text4.Text = Str$(result(0) & result(1))
> > > End Sub
> > > Function CalcD(a, b, c As Double) As Double
> > > CalcD = (b * b) - (4 * a * c)
> > > End Function
> > >
> > > Function CalcR(a, b, d As Double) As Variant
> > > If d >= 0 Then
> > > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > > If d > 0 Then
> > > solutions(1) = (-b + Sqr(d)) / (2 * a)
> > > Else
> > > solutions(1) = solutions(0)
> > > End If
> > > End If
> > > ClacR = solutions
> > > End Function
> > >
> > > På forhånd tak
> > > /James
> > >
> > >
> > >
> >
> >
> >
> >
>
>
| |
James (15-08-2002)
| Kommentar Fra : James |
Dato : 15-08-02 13:50 |
|
Yes det virkede også, men selvfølgelig er der flere problemer, nemlig når
jeg skal skrive ud.
Public Sub CalcRoots_Click()
Dim a As Double
Dim b As Double
Dim c As Double
Dim d As Double
Dim result As Variant ' har også prøvet med Dim result(0 to 1) As
Variant
a = CDbl(Text1.Text)
b = CDbl(Text2.Text)
c = CDbl(Text3.Text)
d = CalcD(a, b, c)
result = CalcR(a, b, d)
Text4.Text = result(0) & " " & result(1)
End Sub
Der kommer bare ikke rigtig noget i "result" og derfor brokker den sig over
når den skal udskrive result.
Ved du hvordan man kan udskrive dem ??
"Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
news:ajg5ln$emf$1@sunsite.dk...
> Nu har du jo så smukt deklareret alle dine variabler... hvorfor så ikke
> solutions ?
>
> Hvis du deklarerer solutions som:
> Dim solutions(0 to 1)
> I starten af calcR så burde det virke....
>
> tror jeg...
>
> "James" <james@talent.dk> skrev i en meddelelse
> news:PjL69.179347$0b6.1602981@news.easynews.com...
> > Hej Mads
> > Det blev det lidt bedre af, men nu får jeg en runtime error. Hvis jeg
> > debug'er siger den at det er linien:
> > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > der er noget galt med, men jeg kan ikke rigtig se hvad det skulle være.
> > Kan du/i ??
> >
> > "Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
> > news:ajftit$oeg$1@sunsite.dk...
> > > > Public Sub CalcRoots_Click()
> > > > Dim a, b, c, d As Double
> > > Deklarerer a, b og c som variant, men d som double
> > >
> > > > Function CalcD(a, b, c As Double) As Double
> > > Forventer a og b er varianter og c er en double
> > >
> > > > d = CalcD(a, b, c)
> > >
> > > giver tre varianter som parametre...
> > >
> > > Dit problem er at du ikke bare kan sige:
> > > private function CalcD(a, b, c as Double)
> > >
> > > Du skal sige:
> > > private function CalcD(a as Double, b as Double, c as Double)
> > >
> > >
> > > "James" <james@talent.dk> skrev i en meddelelse
> > > news:ajejp4$t3i$1@eising.k-net.dk...
> > > > Hej NG
> > > > Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click() ikke
> > > virker.
> > > > Jeg er ikke helt sikker på min "CalcR" funktion så det kunne måske
> være
> > > den.
> > > > Jeg får denne meddelse:
> > > > "Compile error:
> > > > ByRef argument type mismatch"
> > > >
> > > > Private Sub CalcDeter_Click()
> > > > Dim a, b, c As Double
> > > > a = Val(Text1.Text)
> > > > b = Val(Text2.Text)
> > > > c = Val(Text3.Text)
> > > > Text4.Text = Str$(CalcD(a, b, c))
> > > > End Sub
> > > > Public Sub CalcRoots_Click()
> > > > Dim a, b, c, d As Double
> > > > Dim result As Variant
> > > > a = Val(Text1.Text)
> > > > b = Val(Text2.Text)
> > > > c = Val(Text3.Text)
> > > > d = CalcD(a, b, c)
> > > > result = CalcR(a, b, d)
> > > > Text4.Text = Str$(result(0) & result(1))
> > > > End Sub
> > > > Function CalcD(a, b, c As Double) As Double
> > > > CalcD = (b * b) - (4 * a * c)
> > > > End Function
> > > >
> > > > Function CalcR(a, b, d As Double) As Variant
> > > > If d >= 0 Then
> > > > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > > > If d > 0 Then
> > > > solutions(1) = (-b + Sqr(d)) / (2 * a)
> > > > Else
> > > > solutions(1) = solutions(0)
> > > > End If
> > > > End If
> > > > ClacR = solutions
> > > > End Function
> > > >
> > > > På forhånd tak
> > > > /James
> > > >
> > > >
> > > >
> > >
> > >
> > >
> > >
> >
> >
>
>
| |
Mads Chr. Olesen (15-08-2002)
| Kommentar Fra : Mads Chr. Olesen |
Dato : 15-08-02 19:11 |
|
Ok, nu er vi langt ude, nu overvejer jeg at smide din kode ind i VB
Har et bud:
Ændrer:
result = CalcR(a, b, d)
til
result() = CalcR(a, b, d)
og så selvfølgelig
Dim result(0 to 1) As Variant
"James" <james@talent.dk> skrev i en meddelelse
news:FrN69.186881$0b6.1649123@news.easynews.com...
> Yes det virkede også, men selvfølgelig er der flere problemer, nemlig når
> jeg skal skrive ud.
>
> Public Sub CalcRoots_Click()
> Dim a As Double
> Dim b As Double
> Dim c As Double
> Dim d As Double
> Dim result As Variant ' har også prøvet med Dim result(0 to 1) As
> Variant
> a = CDbl(Text1.Text)
> b = CDbl(Text2.Text)
> c = CDbl(Text3.Text)
> d = CalcD(a, b, c)
> result = CalcR(a, b, d)
> Text4.Text = result(0) & " " & result(1)
> End Sub
>
> Der kommer bare ikke rigtig noget i "result" og derfor brokker den sig
over
> når den skal udskrive result.
> Ved du hvordan man kan udskrive dem ??
>
> "Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
> news:ajg5ln$emf$1@sunsite.dk...
> > Nu har du jo så smukt deklareret alle dine variabler... hvorfor så ikke
> > solutions ?
> >
> > Hvis du deklarerer solutions som:
> > Dim solutions(0 to 1)
> > I starten af calcR så burde det virke....
> >
> > tror jeg...
> >
> > "James" <james@talent.dk> skrev i en meddelelse
> > news:PjL69.179347$0b6.1602981@news.easynews.com...
> > > Hej Mads
> > > Det blev det lidt bedre af, men nu får jeg en runtime error. Hvis jeg
> > > debug'er siger den at det er linien:
> > > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > > der er noget galt med, men jeg kan ikke rigtig se hvad det skulle
være.
> > > Kan du/i ??
> > >
> > > "Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
> > > news:ajftit$oeg$1@sunsite.dk...
> > > > > Public Sub CalcRoots_Click()
> > > > > Dim a, b, c, d As Double
> > > > Deklarerer a, b og c som variant, men d som double
> > > >
> > > > > Function CalcD(a, b, c As Double) As Double
> > > > Forventer a og b er varianter og c er en double
> > > >
> > > > > d = CalcD(a, b, c)
> > > >
> > > > giver tre varianter som parametre...
> > > >
> > > > Dit problem er at du ikke bare kan sige:
> > > > private function CalcD(a, b, c as Double)
> > > >
> > > > Du skal sige:
> > > > private function CalcD(a as Double, b as Double, c as Double)
> > > >
> > > >
> > > > "James" <james@talent.dk> skrev i en meddelelse
> > > > news:ajejp4$t3i$1@eising.k-net.dk...
> > > > > Hej NG
> > > > > Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click()
ikke
> > > > virker.
> > > > > Jeg er ikke helt sikker på min "CalcR" funktion så det kunne måske
> > være
> > > > den.
> > > > > Jeg får denne meddelse:
> > > > > "Compile error:
> > > > > ByRef argument type mismatch"
> > > > >
> > > > > Private Sub CalcDeter_Click()
> > > > > Dim a, b, c As Double
> > > > > a = Val(Text1.Text)
> > > > > b = Val(Text2.Text)
> > > > > c = Val(Text3.Text)
> > > > > Text4.Text = Str$(CalcD(a, b, c))
> > > > > End Sub
> > > > > Public Sub CalcRoots_Click()
> > > > > Dim a, b, c, d As Double
> > > > > Dim result As Variant
> > > > > a = Val(Text1.Text)
> > > > > b = Val(Text2.Text)
> > > > > c = Val(Text3.Text)
> > > > > d = CalcD(a, b, c)
> > > > > result = CalcR(a, b, d)
> > > > > Text4.Text = Str$(result(0) & result(1))
> > > > > End Sub
> > > > > Function CalcD(a, b, c As Double) As Double
> > > > > CalcD = (b * b) - (4 * a * c)
> > > > > End Function
> > > > >
> > > > > Function CalcR(a, b, d As Double) As Variant
> > > > > If d >= 0 Then
> > > > > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > > > > If d > 0 Then
> > > > > solutions(1) = (-b + Sqr(d)) / (2 * a)
> > > > > Else
> > > > > solutions(1) = solutions(0)
> > > > > End If
> > > > > End If
> > > > > ClacR = solutions
> > > > > End Function
> > > > >
> > > > > På forhånd tak
> > > > > /James
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
| |
James (16-08-2002)
| Kommentar Fra : James |
Dato : 16-08-02 16:57 |
|
Så fandt jeg endelig ud af det....
Takker mange gange for hjælpen
mvh James
"Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
news:ajgqmq$ap4$1@sunsite.dk...
> Ok, nu er vi langt ude, nu overvejer jeg at smide din kode ind i VB
>
> Har et bud:
>
> Ændrer:
> result = CalcR(a, b, d)
> til
> result() = CalcR(a, b, d)
>
> og så selvfølgelig
> Dim result(0 to 1) As Variant
>
>
> "James" <james@talent.dk> skrev i en meddelelse
> news:FrN69.186881$0b6.1649123@news.easynews.com...
> > Yes det virkede også, men selvfølgelig er der flere problemer, nemlig
når
> > jeg skal skrive ud.
> >
> > Public Sub CalcRoots_Click()
> > Dim a As Double
> > Dim b As Double
> > Dim c As Double
> > Dim d As Double
> > Dim result As Variant ' har også prøvet med Dim result(0 to 1) As
> > Variant
> > a = CDbl(Text1.Text)
> > b = CDbl(Text2.Text)
> > c = CDbl(Text3.Text)
> > d = CalcD(a, b, c)
> > result = CalcR(a, b, d)
> > Text4.Text = result(0) & " " & result(1)
> > End Sub
> >
> > Der kommer bare ikke rigtig noget i "result" og derfor brokker den sig
> over
> > når den skal udskrive result.
> > Ved du hvordan man kan udskrive dem ??
> >
> > "Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
> > news:ajg5ln$emf$1@sunsite.dk...
> > > Nu har du jo så smukt deklareret alle dine variabler... hvorfor så
ikke
> > > solutions ?
> > >
> > > Hvis du deklarerer solutions som:
> > > Dim solutions(0 to 1)
> > > I starten af calcR så burde det virke....
> > >
> > > tror jeg...
> > >
> > > "James" <james@talent.dk> skrev i en meddelelse
> > > news:PjL69.179347$0b6.1602981@news.easynews.com...
> > > > Hej Mads
> > > > Det blev det lidt bedre af, men nu får jeg en runtime error. Hvis
jeg
> > > > debug'er siger den at det er linien:
> > > > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > > > der er noget galt med, men jeg kan ikke rigtig se hvad det skulle
> være.
> > > > Kan du/i ??
> > > >
> > > > "Mads Chr. Olesen" <MadsChrO@Yahoo.com> wrote in message
> > > > news:ajftit$oeg$1@sunsite.dk...
> > > > > > Public Sub CalcRoots_Click()
> > > > > > Dim a, b, c, d As Double
> > > > > Deklarerer a, b og c som variant, men d som double
> > > > >
> > > > > > Function CalcD(a, b, c As Double) As Double
> > > > > Forventer a og b er varianter og c er en double
> > > > >
> > > > > > d = CalcD(a, b, c)
> > > > >
> > > > > giver tre varianter som parametre...
> > > > >
> > > > > Dit problem er at du ikke bare kan sige:
> > > > > private function CalcD(a, b, c as Double)
> > > > >
> > > > > Du skal sige:
> > > > > private function CalcD(a as Double, b as Double, c as Double)
> > > > >
> > > > >
> > > > > "James" <james@talent.dk> skrev i en meddelelse
> > > > > news:ajejp4$t3i$1@eising.k-net.dk...
> > > > > > Hej NG
> > > > > > Er der nogen der kan fortælle mig hvorfor Sub CalcRoots_Click()
> ikke
> > > > > virker.
> > > > > > Jeg er ikke helt sikker på min "CalcR" funktion så det kunne
måske
> > > være
> > > > > den.
> > > > > > Jeg får denne meddelse:
> > > > > > "Compile error:
> > > > > > ByRef argument type mismatch"
> > > > > >
> > > > > > Private Sub CalcDeter_Click()
> > > > > > Dim a, b, c As Double
> > > > > > a = Val(Text1.Text)
> > > > > > b = Val(Text2.Text)
> > > > > > c = Val(Text3.Text)
> > > > > > Text4.Text = Str$(CalcD(a, b, c))
> > > > > > End Sub
> > > > > > Public Sub CalcRoots_Click()
> > > > > > Dim a, b, c, d As Double
> > > > > > Dim result As Variant
> > > > > > a = Val(Text1.Text)
> > > > > > b = Val(Text2.Text)
> > > > > > c = Val(Text3.Text)
> > > > > > d = CalcD(a, b, c)
> > > > > > result = CalcR(a, b, d)
> > > > > > Text4.Text = Str$(result(0) & result(1))
> > > > > > End Sub
> > > > > > Function CalcD(a, b, c As Double) As Double
> > > > > > CalcD = (b * b) - (4 * a * c)
> > > > > > End Function
> > > > > >
> > > > > > Function CalcR(a, b, d As Double) As Variant
> > > > > > If d >= 0 Then
> > > > > > solutions(0) = (-b - Sqr(d)) / (2 * a)
> > > > > > If d > 0 Then
> > > > > > solutions(1) = (-b + Sqr(d)) / (2 * a)
> > > > > > Else
> > > > > > solutions(1) = solutions(0)
> > > > > > End If
> > > > > > End If
> > > > > > ClacR = solutions
> > > > > > End Function
> > > > > >
> > > > > > På forhånd tak
> > > > > > /James
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> > > >
> > >
> > >
> >
> >
>
>
| |
|
|