kris98 Skrevet 22. juli 2008 Del Skrevet 22. juli 2008 (endret) HalloJeg holdt på å lage min tredje kalkulatorTakk!PS: Beklager hvis forklaringen var for vag Endret 26. august 2013 av kris98 Lenke til kommentar
DeadManWalking Skrevet 22. juli 2008 Del Skrevet 22. juli 2008 Hvordan ligger du sammen alt? Du må huske på regnerekkefølgen. Show me some code! Lenke til kommentar
kris98 Skrevet 22. juli 2008 Forfatter Del Skrevet 22. juli 2008 (endret) @echo off Endret 26. august 2013 av kris98 Lenke til kommentar
Manfred Skrevet 22. juli 2008 Del Skrevet 22. juli 2008 nesten kode for the daily WTF dette! Lenke til kommentar
kris98 Skrevet 22. juli 2008 Forfatter Del Skrevet 22. juli 2008 nesten kode for the daily WTF dette! Haha, godt mulig Lenke til kommentar
RulleRimfrost Skrevet 22. juli 2008 Del Skrevet 22. juli 2008 Så TextBox1.Text = Val(TextBox2.Text) betyr at strengen i TextBox2 skal konverteres til individuelle tall og operatorer, og resultatet legges i TextBox1 ? Tror muligens du må lage funksjonen Val først kanskje ? Er dersverre enda på det nivået at jeg ikke kan noen av biblotekene til vb.net utenat selv enda Lenke til kommentar
DeadManWalking Skrevet 22. juli 2008 Del Skrevet 22. juli 2008 nesten kode for the daily WTF dette! Derfor jeg styrte klar hehe, DU kan vel hjelpe? Lenke til kommentar
kris98 Skrevet 22. juli 2008 Forfatter Del Skrevet 22. juli 2008 (endret) har testet den Endret 26. august 2013 av kris98 Lenke til kommentar
aadnk Skrevet 23. juli 2008 Del Skrevet 23. juli 2008 Å snekre seg en Eval()-funksjon (hvilket tolker uttrykk) i et programmeringsspråk kan være en en svært givende og lærerik utfordring og noe jeg absolutt vil anbefale, men om kodeknapphet er et behov, er det ikke problematisk å finne alternative snarveier, eksempelvis den innebyggede kodekompilatoren i .NET: Imports System.TextImports System.CodeDom.Compiler Public Class EvalProvider Public Shared Function Eval(ByVal vbCode As String, ByVal ParamArray Assemblies() As String) As Object Dim Compiler As CodeDomProvider = CodeDomProvider.CreateProvider("VB") Dim Parameters As New CompilerParameters(Assemblies), Code As New StringBuilder With Parameters .ReferencedAssemblies.Add("system.dll") .CompilerOptions = "/t:library" .GenerateInMemory = True End With With Code .AppendLine("Imports System") .AppendLine("Imports System.Math") .AppendLine("Namespace Snippet") .AppendLine("Class Core") .AppendLine("Public Function EvalCode() As Object") .AppendLine(vbCode) .AppendLine("End Function") .AppendLine("End Class") .AppendLine("End Namespace") End With ' Compile and execute Return Compiler.CompileAssemblyFromSource(Parameters, Code.ToString). _ CompiledAssembly.CreateInstance("Snippet.Core").EvalCode End Function End Class Da kan du kalle EvalProvider.Eval("Return " & Text1.Text) for å tolke innholdet i en tekstboks som helt ordinær VB-kode. Lenke til kommentar
kris98 Skrevet 23. juli 2008 Forfatter Del Skrevet 23. juli 2008 (endret) har nesten vunnet no Endret 26. august 2013 av kris98 Lenke til kommentar
Moskus Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Å snekre seg en Eval()-funksjon (hvilket tolker uttrykk) i et programmeringsspråk kan være en en svært givende og lærerik utfordring og noe jeg absolutt vil anbefale Dette har jeg prøvd på, da jeg vil ha mulighet for å regne med litt mer avanserte uttrykk, som f.eks p = e^(j*pi) (altså å kunne bruke imaginære tall, til kompleks utregning av lydtrykk, etc). Men jeg vet jo ikke en gang hvor jeg skal begynne! Begynte å kikke på RegEx, men da ble jeg bare enda mer forvirret... Noen pointers her, Aadnk? Lenke til kommentar
aadnk Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Om du ikke har behov for all verdens nøyaktighet og funksjonalitet, burde de mange trivielle implementasjonene av komplekse tall-klasser på nettet være tilstrekkelig. Her er en VB.NET-variant jeg oversatte direkte fra C#: Imports SystemImports System.Diagnostics <DebuggerDisplay("{Real} + {Imag}i")> _ Public Structure Complex Public Real As Double Public Imag As Double Public Sub New(ByVal real As Double, ByVal imag As Double) Me.Real = real Me.Imag = imag End Sub Public ReadOnly Property Conjugate() As Complex Get Return New Complex(Real, -Imag) End Get End Property Public ReadOnly Property Norm() As Double Get Return Real * Real + Imag * Imag End Get End Property Public ReadOnly Property Modulus() As Double Get Return System.Math.Sqrt(Real * Real + Imag * Imag) End Get End Property Public ReadOnly Property Argument() As Double Get Return System.Math.Atan2(Imag, Real) End Get End Property Public Shared Function Polar(ByVal modulus As Double, ByVal argument As Double) As Complex Return New Complex(modulus * System.Math.Cos(argument), modulus * System.Math.Sin(argument)) End Function Public Shared Operator +(ByVal z1 As Complex, ByVal z2 As Complex) As Complex Return New Complex(z1.Real + z2.Real, z1.Imag + z2.Imag) End Operator Public Shared Operator -(ByVal z1 As Complex, ByVal z2 As Complex) As Complex Return New Complex(z1.Real - z2.Real, z1.Imag - z2.Imag) End Operator Public Shared Operator *(ByVal z1 As Complex, ByVal z2 As Complex) As Complex Return New Complex(z1.Real * z2.Real - z1.Imag * z2.Imag, z1.Real * z2.Imag + z1.Imag * z2.Real) End Operator Public Shared Operator /(ByVal z1 As Complex, ByVal z2 As Complex) As Complex Dim value As Double = z2.Real * z2.Real + z2.Imag * z2.Imag Return New Complex((z1.Real * z2.Real + z1.Imag * z2.Imag) / value, (z1.Imag * z2.Real - z1.Real * z2.Imag) / value) End Operator Public Shared Operator =(ByVal z1 As Complex, ByVal z2 As Complex) As Boolean Return (z1.Real = z2.Real AndAlso z1.Imag = z2.Imag) End Operator Public Shared Operator <>(ByVal z1 As Complex, ByVal z2 As Complex) As Boolean Return (z1.Real <> z2.Real OrElse z1.Imag = z2.Imag) End Operator Public Shared Function Cos(ByVal z As Complex) As Complex Dim z1 As Complex = Exp(New Complex(-z.Imag, z.Real)) Dim z2 As Complex = Exp(New Complex(z.Imag, -z.Real)) Return New Complex(0.5 * (z1.Real + z2.Real), 0.5 * (z1.Imag + z2.Imag)) End Function Public Shared Function Cosh(ByVal z As Complex) As Complex Dim z1 As Complex = Exp(z) Dim z2 As Complex = Exp(New Complex(-z.Real, -z.Imag)) Return New Complex(0.5 * (z1.Real + z2.Real), 0.5 * (z1.Imag + z2.Imag)) End Function Public Shared Function Sin(ByVal z As Complex) As Complex Dim z1 As Complex = Exp(New Complex(-z.Imag, z.Real)) Dim z2 As Complex = Exp(New Complex(z.Imag, -z.Real)) Return New Complex(0.5 * (z1.Imag - z2.Imag), 0.5 * (z2.Real - z1.Real)) End Function Public Shared Function Sinh(ByVal z As Complex) As Complex Dim z1 As Complex = Exp(z) Dim z2 As Complex = Exp(New Complex(-z.Real, -z.Imag)) Return New Complex(0.5 * (z1.Real - z2.Real), 0.5 * (z1.Imag - z2.Imag)) End Function Public Shared Function Tan(ByVal z As Complex) As Complex Return Sin(z) / Cos(z) End Function Public Shared Function Tanh(ByVal z As Complex) As Complex Return Sinh(z) / Cosh(z) End Function Public Shared Function Exp(ByVal z As Complex) As Complex Dim value As Double = System.Math.Exp(z.Real) Return New Complex(value * System.Math.Cos(z.Imag), value * System.Math.Sin(z.Imag)) End Function Public Shared Function Log(ByVal z As Complex) As Complex Return New Complex(System.Math.Log(z.Modulus), z.Argument) End Function Public Shared Function Pow(ByVal baseNumber As Complex, ByVal index As Complex) As Complex Return Exp(index * Log(baseNumber)) End Function Public Shared Function Sqrt(ByVal z As Complex) As Complex Dim value As Double = System.Math.Sqrt(z.Real * z.Real + z.Imag * z.Imag) + z.Real Return New Complex(System.Math.Sqrt(0.5 * value), System.Math.Sqrt(0.5 / value) * z.Imag) End Function Public Overloads Overrides Function ToString() As String Return ([string].Format("{0} + {1}i", Real, Imag)) End Function Public Overloads Overrides Function GetHashCode() As Integer Return Real.GetHashCode() Xor Imag.GetHashCode() End Function End Structure Ettersom strukturen anvender operator overloading, kan den brukes likså den var native (med plus, minus, ect.), slik at eventuelle utreninger forenkles. Den kan såklart òg brukes sammen med Eval()-funksjonen ovenfor, om det gis en referanse til Assembly'et den opptar. Lenke til kommentar
Wubbable Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click, Button1.Click, Button4.Click, Button3.Click, Button11.Click, Button10.Click, Button9.Click, Button14.Click, Button13.Click, Button12.Click, Button17.Click, Button16.Click, Button15.Click, Button20.Click, TextBox2.Text &= sender.Text() End Sub Plis, for ryddighetens skyld Lenke til kommentar
Manfred Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Det skal jeg begynne med også. Gi kontrollene mine navn med random nummer bak. Så når jeg trykker på Button15, så skal Function29 kjøres, som igjen trigger Event73, som oppdaterer teksten i Text784. Sånn bare for oversiktlighetens skyld. Lenke til kommentar
ze5400 Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Faktisk har du ett poeng der Manfred. Dette vil gjøre at om koden blir stjelt vil det være umulig for tyven å tyde koden. Lenke til kommentar
HDSoftware Skrevet 24. juli 2008 Del Skrevet 24. juli 2008 Faktisk har du ett poeng der Manfred. Dette vil gjøre at om koden blir stjelt vil det være umulig for tyven å tyde koden. Synes koden hans så bra ut jeg. Det står jo tross alt button, TextBox etc. Når jeg overtok næringsregnskaps programmet til daTax skal jeg si det var mye morro gitt. Der var det en fet blanding av globale og lokale implisitte (uten prototype) variabler som het a, b, c, d, e, f, g etc. og ja - disse blei brukt over alt!! Det programmet tok det sin tid å rydde opp i ;-) Skreiv om hele greia til OOP og fjernet alt som het a, b, c o.s.v. Lenke til kommentar
Manfred Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 Ja, jeg likte også godt at han hadde en funksjon for Button20 som la til teksten "0" og slikt også, i stedet for EN funksjon som bare legger til knappens tekst. Det gjorde det hele så oversiktlig og fint. Og det er jo ekstremt vanskelig å endre navnene på knappene også, så jeg skjønner jo hvorfor man vil beholde Button20!! Lenke til kommentar
Moskus Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 Dette fungerte tydeligvis ikke, så jeg får prøve igjen: //Setting new mode Persons("Manfred").Sarcasm = False Lenke til kommentar
Manfred Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 (endret) Sarcasm Property is ReadOnly Endret 25. juli 2008 av Manfred Lenke til kommentar
Moskus Skrevet 25. juli 2008 Del Skrevet 25. juli 2008 Pah... kan løses lett. Try Persons("Manfred").Sarcasm = False Catch ex as Exception Persons("Manfred").Dispose End Try Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå