Prompt einer MsgBox zerlegen

11/10/2008 - 16:13 von Günter Gerold | Report spam
Hallo NG,

mein vollautomatisches MsgBox in Tabelle für Mehrsprachigkeitsmonster geht in die Zielgerade. Jetzt möchte ich den Inhalt des Prompt und Title
zerlegen und Variablen durch Platzhalter ersetzen.

Der Parser beginnt links und schreibt jedes Zeichen in einen VariablenPuffer.
Stößt er auf ein " ignoriert er dieses und folgende Zeichen bis zum nàchsen "
Stößt er auf ein & und der Inhalt des Puffers ist nicht leer ist die erste Variable gefunden.
* + - / werden einfach mit in den Puffer geschrieben, eine Variable könnte also: a + b /c heißen.
Am Ende oder bei einem ' wird beendet.

Hab ich was vergessen? ausser eval() natürlich ;-)
 

Lesen sie die antworten

#1 Günter Gerold
11/10/2008 - 20:47 | Warnen spam
Hallo,

folgendes habe ich jetzt zusammengenagelt:

diese Funktion wird solange aufgerufen, bis keine Variable mehr zurückgegeben wird.
Unsicher bin ich noch, ob alle Eventualitàten berücksichtigt sind.

Aufruf:
k = 1
Do While fncSetPlatzhalter(strPrompt, "%Platzhalter" & k & "%", strPH1) = True
MsgBox strPrompt & " | ##" & strPH1 & "##"
k = k + 1
Loop


Public Function fncSetPlatzhalter(ByRef strText As String, ByVal strPlatzhalter As String, ByRef strVariable As String) As Boolean

Dim strArray() As String
Dim intStart As Integer
Dim intStop As Integer
Dim i As Integer
ReDim strArray(Len(strText))

For i = 1 To Len(strText)
strArray(i) = Mid$(strText, i, 1)
Next i
intStart = 1
For i = 1 To Len(strText)
Select Case strArray(i)
Case "'"
Exit For
Case Chr(34)
i = i + 1
Do While i < Len(strText)
If strArray(i) = Chr(34) Then
intStart = i
Exit Do
End If
i = i + 1
Loop
Case "%"
i = i + 1
Do While i < Len(strText)
If strArray(i) = "%" Then
intStart = i
Exit Do
End If
i = i + 1
Loop
Case "&"
If intStop > intStart Then
Exit For
Else
intStart = i + 2
End If
Case " "

Case Else
intStop = i
End Select
Next i
If intStop < intStart Then
fncSetPlatzhalter = False
Exit Function
End If
strVariable = Mid(strText, intStart, intStop + 1 - intStart)
If strVariable = "" Or strVariable = " " Then
fncSetPlatzhalter = False
Else
strText = Left(strText, intStart - 1) & strPlatzhalter & Right(strText, Len(strText) - intStop)
fncSetPlatzhalter = True
End If

End Function

Günter

Ähnliche fragen