Domino 9 und frühere Versionen > Entwicklung
Eingabeumsetzung nur einmalig ausfuehren?
mh70220:
Mit dem Ausfuehren des Exiting Events hast du recht. Kann ich dem ganzen Abhilfe schaffen, indem ich diese Formel in das "QuerySave" Event packe?
Matthias
Axel:
Hi,
yoo, kannst du. Ich mache meine Validierungen schon Jahr und Tag im QuerySave-Event der Maske.
Axel
koehlerbv:
Den von Matthias geposteten Code sollte man nicht übernehmen, um MAC-Adressen zu normieren. Das Verfahren bietet keinerlei sichere Umsetzung - so "billig" geht es (leider) nicht. Genau deswegen hatte ich auch angefragt, was als Eingabe erwartet wird und was zum Schluss wieder herauskommen soll.
Die Verwendung von "+" als String-Concenator ist syntaktisch inkorrekt - hierfür ist "&" zu verwenden.
Eine Änderung des Feldes wird verworfen, wenn an achter Position ein "-" steht. Dieser Zustand wird niemals erreicht.
Der Algorithmus sollte eher wie folgt aussehen:
- Entferne aus der MAC-Adresse alle unzulässigen Zeichen (alles ausser "0..9" und "A".."F"
- Länge <> 10 ? Fehler ! Achtung - einige Programme bieten bereits weitsichtig 12stellige MACAdressen an bzw. lesen diese aus und bieten sie so an.
- Loope durch die so erhaltene "eingedampfte" MAC-Adresse und baue den String neu auf. Nach jeweils zwei Zeichen füge ein "-" ein.
HTH,
Bernhard
mh70220:
Ich weis das der Quell Code nicht perfekt ist. Das kann man von einem Anfänger in LotusScript ja auch nicht erwarten. Oder?
--- Zitat von: koehlerbv am 21.01.05 - 20:55:35 ---- Entferne aus der MAC-Adresse alle unzulässigen Zeichen (alles ausser "0..9" und "A".."F"
- Loope durch die so erhaltene "eingedampfte" MAC-Adresse und baue den String neu auf. Nach jeweils zwei Zeichen füge ein "-" ein.
--- Ende Zitat ---
Die Idee mit dem Entfernen aller unzulaessingen Zeichen ist mir auch schon gekommen, nur kenne ich den Befehl in LotusScript nicht, um dies realisieren.
Das Geleiche gilt fuer das einfuegen eines "-" nach jedem zweiten Zeichen.
Kann da jemand mal ein Beispiel geben.
Matthias
koehlerbv:
--- Zitat von: mh70220 am 22.01.05 - 14:46:50 ---Ich weis das der Quell Code nicht perfekt ist. Das kann man von einem Anfänger in LotusScript ja auch nicht erwarten. Oder?
--- Ende Zitat ---
Genau deswegen habe ich ja auch zweimal angefragt: Was wird als Eingabe erwartet, und was soll unten wieder herauskommen ? Gerade als Anfänger sollte man die Postings, für die sich andere immerhin Zeit genommen und Mühe gegeben haben, schon genau lesen.
Hier ein Beispiel (!) für das Normalisieren einer 10stelligen MAC-Adresse. Um das Testen zu erleichtern, ist der Code für einen Button bestimmt und liest den Inhalt des Feldes MACAddress aus. Das ganze liesse sich leicht in eine Function auslagern und somit auch variabler gestalten (zum Beispiel hinsichtlich der erlaubten Länge der MACAddress oder der einzufügenden Zeichen und so weiter.
Die Prüfung / Umsetzung würde ich im PostRecalc-Event durchführen.
HTH,
Bernhard
--- Code: ---Sub Click (Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidocCurrent As NotesUIDocument
Dim docCurrent As NotesDocument
Dim szOrig As String
Dim szTemp As String
Dim szNormalized As String
Dim iLoop As Integer
On Error Goto ErrorRoutine
'Get the field value:
Set uidocCurrent = ws.CurrentDocument
Set docCurrent = uidocCurrent.Document
szOrig = docCurrent.MACAddress (0)
If szOrig = "" Then
Exit Sub
End If
'Switch to Uppercase only:
szOrig = Ucase (szOrig)
'Remove all characters which can't belong to a MAC address:
szTemp = ""
For iLoop = 1 To Len (szOrig)
If Instr ("01234567890ABCDEF", Mid$ (szOrig, iLoop, 1)) > 0 Then
szTemp = szTemp & Mid$ (szOrig, iLoop, 1)
End If
Next
If Len (szTemp) <> 10 Then
Messagebox "This MAC address is invalid !"
Exit Sub
End If
'Build the normalized MAC address:
szNormalized = ""
For iLoop = 1 To Len (szTemp)
szNormalized = szNormalized & Mid$ (szTemp, iLoop, 1)
If (iLoop / 2 = Int (iLoop / 2)) And (iLoop < Len (szTemp)) Then
szNormalized = szNormalized & "-"
End If
Next
Messagebox szNormalized
Exit Sub
ErrorRoutine:
Messagebox "An run-time error occured: " & Error$ & " (no. " & Cstr (Err) & " in line " & Cstr (Erl) & ")"
Exit Sub
End Sub
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln