vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: String nach Zahlen (Formel) Teil1 
Autor: Martin01
Datum: 09.01.03 18:40


Option Strict Off
Option Explicit On

'Ich bin noch von VB6:
Imports VB = Microsoft.VisualBasic

'Vb6 VB.NET
'Len(expr) expr.Length
'Mid$(expr) expr.Substring
'?Case(expr) value.ToLower value.ToUpper
'Eval = Eval + value Eval += value
'Token = Token & meChar Token &= meChar

Public Class mrkEval

'Hier ist noch viel VB6 drin.
'Wer möchte und es NETter machen.

'Aufruf:
'
'Dim eval As New mrkEval()
'
'If eval.mrkEval("12^2+6^2") Then
' s = eval.Value
' Else
' s = 0
' ??? = eval.ErrorMessage
' End If
'
'Original VBn Vorlage von Aldo Vargas


Private propValue As Object
Private propErrorMessage As String

Public ReadOnly Property Value() As Object
Get
Return propValue
End Get
End Property

Public ReadOnly Property ErrorMessage() As String
Get
Return propErrorMessage
End Get
End Property

Public Function mrkEval(ByVal expr As String) As Boolean
'In der Fehlerbehandlung
'den Wert berechnen ermittlen
Try
propValue = Eval(expr.ToLower)
propErrorMessage = ""
Return True

Catch Ex As Exception
propErrorMessage = Ex.Message
Return False
End Try
End Function

Private Function Eval(ByVal expr As String) As Object
Dim value As Object
Dim operand As String
Dim pos As Short = 1

Do Until pos > Len(expr)

Select Case Mid(expr, pos, 3)

Case "not", "or ", "and", "xor", "eqv", "imp"
operand = Mid(expr, pos, 3)
pos = pos + 3
End Select

Select Case Mid(expr, pos, 1)

Case " "
pos = pos + 1

Case "&", "+", "-", "*", "/", "\", "^"
operand = Mid(expr, pos, 1)
pos = pos + 1

Case ">", "<", "="

Select Case Mid(expr, pos + 1, 1)

Case "<", ">", "="
operand = Mid(expr, pos, 2)
pos = pos + 1

Case Else
operand = Mid(expr, pos, 1)
End Select

pos = pos + 1

Case Else

Select Case operand

Case ""
value = Token(expr, pos)

Case "&"
Eval = Eval & value
value = Token(expr, pos)

Case "+"
Eval = Eval + value
value = Token(expr, pos)

Case "-"
Eval = Eval + value
value = -Token(expr, pos)

Case "*"
value = value * Token(expr, pos)

Case "/"
value = value / Token(expr, pos)

Case "\"
value = value \ Token(expr, pos)

Case "^"
value = value ^ Token(expr, pos)

Case "not"
Eval = Eval + value
value = Not Token(expr, pos)

Case "and"
value = value And Token(expr, pos)

Case "or "
value = value Or Token(expr, pos)

Case "xor"
value = value Xor Token(expr, pos)

Case "eqv"
value = VB6.Eqv(value, Token(expr, pos))

Case "imp"
value = VB6.Imp(value, Token(expr, pos))

Case "=", "=="
value = value = Token(expr, pos)

Case ">"
value = value > Token(expr, pos)

Case "<"
value = value < Token(expr, pos)

Case ">=", "=>"
value = value >= Token(expr, pos)

Case "<=", "=<"
value = value <= Token(expr, pos)

Case "<>"
value = value <> Token(expr, pos)
End Select

End Select

Loop

Eval = Eval + value
End Function
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
String nach Zahlen (Formel)168Raphael Scherer09.01.03 09:57
Re: String nach Zahlen (Formel)863IsoLizer09.01.03 15:47
Re: String nach Zahlen (Formel) Teil179Martin0109.01.03 18:40
Re: String nach Zahlen (Formel) Teil280Martin0109.01.03 18:41
Danke 61Raphael Scherer10.01.03 07:45
Re: String nach Zahlen (Formel)76Martin0112.01.03 22:20

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel