05. maj 2004 - 18:04Der er
8 kommentarer og 1 løsning
Blander sig i hinanden og springer ikke de forkerte pattern over
Hvad skyldes fejlen at de blander sig i hinanden, skriver jeg fx "2+2", klager den over at det ikke kan bruges i den første pattern og skriver jeg "ln(2)" brokker den sig i den næste osv. Den burde da bare springe til næste pattern, når det ikke passer?
Function Calc(Source) Dim Val1, Val2 As Double Calc = Source Set regEx = New RegExp regEx.Global = True regEx.IgnoreCase = True
Jeg må nøjes med en ide til noget cirka-kode, for vb6 er jeg overhovedet ikke hjemme i:
regEx.Pattern = "(.*)(ln\()(.+)(\))(.*)" if regEx.Replace(Source,"$1") & regEx.Replace(Source,"$5")<> "" then Calc = Calc(regEx.Replace(Source,"$1") & Calc(regEx.Replace(Source,"$2$3$4")) & regEx.Replace(Source,"$5"))
-- bemærk, at det jeg lægger op til er en rekursiv funktion, hvorfor jeg er nødt til at bruge det oprindelige input, og ikke kan bruge output-variablen ...
-- endvidere har jeg heller ikke i dette taget højde for, at du forsøger at returnere en ligning, hvor også resultatet er indeholdt, den skal du nok klare ved at have en 'ramme'funktion, som kalder den først tur ind, f.eks.
Function beregn(Source) beregn = Source & " = " & Calc(Source) End Function
Kan ikke helt hitte ud af det, så jeg hentede MagiCalc på www.planetsourcecode.com - Men hvis du ligger et svar, må du godt få point for din indsats :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.