Domino 9 und frühere Versionen > ND8: Entwicklung

String "vergisst" Zeichen in LotusScript

<< < (2/7) > >>

pram:
Sind in der notes.ini irgendwelche debug Parameter gesetzt (debug_ls_dump.... etc.)

Evtl. ist aber auch nur die Installation defekt.

Gruß Roland

eknori:
Nein, kein Debug. Bankenumfeld. Die machen keine Fehler bei der Installation / Konfiguration ...
Ich hätte dir Büchse auch am liebsten platt gemacht, Languagepack runter und Domino in einer anständigen englischen Version drübergebügelt ...

pram:

--- Zitat ---Nein, kein Debug. Bankenumfeld. Die machen keine Fehler bei der Installation / Konfiguration ...
--- Ende Zitat ---

Ja die Systeme sind relativ einheitlich eingerichtet, aber nicht immer fehlerfrei ;) Ich wüsste aber nicht, wie man ein System absichtlich falsch konfigurieren kann um das von dir beschriebene Verhalten zu reproduzieren und andere Kunden haben ja wohl exakt die gleichen Grundvoraussetzungen.

Ganz kann ich deiner Beschreibung aber noch nicht folgen. Ist das jetzt eine reine Servergeschichte (XPage?) oder ist auch ein Client beteiligt?

So wie ich dich verstanden habe, gibt es eine Klasse

--- Code: ---Public Class UserStructure
    public userName as String
....

--- Ende Code ---
Und an einer Stelle im code wird structure.userName="Blabla" gesetzt. Nun rufst du irgendwann (*) später eine Methode auf die "userName" auslesen will und da knallts. Oder wird der String zwischendurch mal in einem Dokument abgelegt und wieder ausgelesen. Kannst du mal etwas Beispielcode posten?

*)Passieren dazwischen vielleicht "böse" Dinge. API-Calls verwendest du ja nicht. LSI_Info hoffentlich auch nicht? Laufen vielleicht zeitgleich andere Agenten?




Wie stabil tritt denn der Fehler bei dem Kunden eigentlich auf? Irgendwas muss ja bei dem Kunden anders sein:

- Lässt er sich auf bestimmte User-IDs einschränken (z.B. mit Umlauten oder Unterstrichen oder einfach zu lang ;) )
- Passiert es auch, wenn die DB mit einer anderen ID signierst
- Virenscanner
- Kannst du testweise mal das Member in der Klasse verschieben (oder einfach davor einen "Private dummy as long" anlegen) damit es eine andere Speicherposition bekommt.
- Die Notes-ini wirst du ja schon "zerpflückt" haben, wurde sie vielleicht mal als UTF-8 abgespreichert und hat eine ByteOrderMark bekommen

Ansonsten hab ich jetzt auch keine Ideen mehr. Würd mich interessieren was es war, wenn du es findest. Bei solchen Fehler kann man nur "viel Glück" wünschen.

Gruß
Roland

eknori:
Wor reden hoer von "legacy" LotusScript. Kein XPages, nix von diesem modernen Zeugs.

Die Klasse enthält einen ganzen Haufen public members. Es werden keine Getter und Setter verwendet.

Eine Funktion in einer anderen ScriptLib ermittelt das Passwort und schreibt es in UserInfo.Password. Passwort ist als public Password as String definiert.

Dann wird diese Struktur im weiteren Verlauf verwendet. Muss heute noch gucken, ob andere Routinen im UserRegistrationProc noch in diese Struktur schreiben, bevor die Struktur schlussendlich ausgelesen wird.
Das Ganze ist eine sehr komplexe Angelegenheit, daher ist das mit dem Beispielcode etwas schwierig.

UserInfo.Password wird dann in einer weiteren Gunktion als Argument im Funktionskopf verwendet (funktion (szPwd as String) )

innerhalb dieser Funktion erfolgt noch einmal eine Übergabe an eine andere Funktion mach dem gleichen Schemaß Aöso Rückgabewert der ersten Funktion wird als Argument der zweiten Funktion verwendet .
An einer dieser Übergabepunkte erfolgt das Vergessen.

Bei dem Kunden ist IMMER das erste Zeichen NUL. Alle anderen Zeichen sind noch vorhanden. Der String kann aber nicht mehr angezeigt werden, weil das erste Zeichen ein Null Terminator ist.

Was bei dem Kunden auf dem Derver anders ist, erschliesst sich mir nicht. Ich persönlich sehe auch keinen fehler in der Programmierung. Die Routinen laufen seit Jahren so. Da ist nichts dran geändert worden.

Anpassen der Struktur werde ich mal testen. Momentan köammere ich mich an jeden Strohhalm.

 doe anderen von dir vorgeschlagenen Dinge habe ich schon durch, bzw. kann ich nicht ändern.
Das Gesamtürodukt hat eine enorme Komplexität. Sowohl in den Funktionalitäten, als auch im dahinterliegenden Code. Daher windert es mich umso mehr, dass der Fehler nur ein einer, sehr stark eingrenzbaren Stelle auftritt.

diali:
ist keine Lösung zur Bekämpfung der Ursache, aber ich würde an den Kennwort-String erst mal ein Leerzeichen voranstellen und schauen (natürlich bei der Registration wieder entfernen), ob dann zumindest die PWDs wieder vollständig lesbar sind.
Damit kann dann vorläufig gearbeitet werden und die Sache wird nicht zum Showstopper.

Die genaue Stelle im Script kennst du, an der der String kaputt geht?
Ansonsten würde ich pram Punkt 3 in Antwort #3 entschärfen und temp. Zwischenvariablen einführen.
Wurden die Scripte vollständig neu kompiliert?
Das Script läuft im Backend auf dem Domino?
Wurde an der Client/Domino-Version was geändert?
Schau auch mal die $Revisions an, ob irgendjemand den Code gespeichert hat, kurz bevor der Fehler auftrat (eventuell mit einer alten oder beta-Version).

Ansonsten würde ich den Code über die Zwischenablage in neue Agenten/Bibs kopieren und die alten Agenten/Bibs wegwerfen.

Gruß
Dirk

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln