Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: daija am 23.08.12 - 15:36:38

Titel: Erase in IsElement gibt "튈ǽ튈ǽ퉘ǽ؄홀Ҹ" zurück
Beitrag von: daija am 23.08.12 - 15:36:38
Hallo,

ich habe ein berechnetes Feld (Mehrfachwerte), in welches Namen eingetragen werden (per Button).
Jetzt habe ich ein LS Button, der das Feld durchsuchen soll und den Names des aktullen Notes Users entfernen soll, sofern dieser in der Liste enthalten ist.
Wenn ich mir im Debugger den Ablauf anschaue, ist alles OK, aber im wenn ich mir dann das Ergebis anschaue, steht im Feld ein komischer Wert, die wie folgt aussieht: "튈ǽ튈ǽ퉘ǽ؄홀Ҹ"

Was ist denn hier kaputt?

Hier der LS Code:


Code

Set nam = New NotesName(s.UserName)
	Set item = doc.GetFirstItem("confirmed_worker")
	anz = 0
	
	Forall value In item.Values
		teilnehmer(item.Values(anz)) = item.Values(anz)
		anz = anz + 1	
	End Forall
	
	If Iselement(teilnehmer(nam.Common)) Then
		Erase teilnehmer(nam.Common)
	End If
	
	Call doc.ReplaceItemValue("confirmed_worker",teilnehmer)
	Call doc.Save(True,False)
	
Titel: Re: Erase in IsElement gibt "튈ǽ튈ǽ퉘ǽ
Beitrag von: Tode am 23.08.12 - 15:42:58
teilnehmer ist eine Liste. Soviel ich weiss, kann man Listen nicht in Felder speichern.. das was da bei Dir im Feld landet sind wahrscheinlich Pointer- Adressen oder sonstwas... Du musst Deine Liste erst wieder in ein Array wandeln, bevor Du das einem Feld zuweisen kannst...

Oder Du schreibst den Code so um, dass gar keine Liste verwendet wird...

Code
varTeilnehmer = doc.GetItemValue("confirmed_worker")
varTeilnehmer = FullTrim( replace( varTeilnehmer , nam.Common , "" ) )
call doc.ReplaceItemValue( "confirmed_worker" , varTeilnehmer )

EDIT: Ich habe die Version übersehen: in R5 gab es Replace noch gar nicht...
Dann musst Du doch mit einer For- Schleife durch:
Code
Dim teilnehmerNew() as String
varTeilnehmer = doc.GetItemValue("confirmed_worker")
k = 0
For i = 0 to ubound( varTeilnehmer )
  If varTeilnehmer(i) <> nam.Common then
    redim preserve teilnehmerNew(k) as String
    teilnehmerNew(k) = varTeilnehmer(i)
    k = k + 1
  End If
Next
Titel: Re: Erase in IsElement gibt "튈ǽ튈ǽ퉘ǽ؄홀Ҹ" zurück
Beitrag von: daija am 23.08.12 - 15:55:08
Ah' prima. Warum kompliziert wenn es auch einfach geht  :)

Vielen Dank. So klappt es viel besser!