Autor Thema: GetEnvironmentValue schluckt doppelte Leerzeichen  (Gelesen 2476 mal)

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Hallo,

im Backend möchte ich eine Datei anhängen. Dafür übergebe ich den Dateinamen aus dem Frontend über das Environment an das Backend. Weil aber das immer wieder zu Problemen führte habe ich weiter geforscht und bin der jetzt der Meinung, dass zwei Leerzeichen hintereinander von GetEnvironmentValue durch ein Leerzeichen ersetzt werden. Das die Dateinamen mit zwei Leerzeichen nicht gut ist ist natürlich klar, aber die Anwender sind da sehr kreativ...

Folgenden Code habe ich mir jetzt zum Test geschrieben:
   Dim s As notessession
   
   Dim z1 As String
   Dim z2 As String
   Dim z3 As Variant
   
   Set s=New notessession
   Call s.SetEnvironmentVar("einLeer", "ein Leerzeichen", False)
   Call s.SetEnvironmentVar("zweiLeer", "zwei  Leerzeichen", False)
   
   z1=s.GetEnvironmentString("einLeer", False)
   Print "Ein Leerzeichen:" &z1

   z2=s.GetEnvironmentString("zweiLeer", False)
   Print "Zwei Leerzeichen:" &z2
   
   z3=Evaluate(|@environment("zweiLeer")|)
   Print "Zwei Leerzeichen:" &z3(0)

In der Debugger Ausgabe erscheint folgendes:
Ein Leerzeichen:ein Leerzeichen
Zwei Leerzeichen:zwei Leerzeichen
Zwei Leerzeichen:zwei Leerzeichen

Es fehlt das zweite Leerzeichen zwischen "zwei" und "Leerzeichen" in z2 und z3
Ist das normal?
Macht euer Notes das Gleiche? Ich arbeite mit 7.0.3

Für Hinweise bin ich dankbar, vielleicht kann ja sogar jemand mal den Code bei sich selbst laufen lassen und mit das Ergebnis mitteilen.

Bernd

« Letzte Änderung: 13.10.10 - 10:10:28 von Hatschi »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: GetEnvironmentValue schluckt doppelte Leerzeichen
« Antwort #1 am: 04.10.10 - 15:35:51 »
Merke: Verschmutze nicht die NOTES.INI.
Und ja: Du kannst nicht alles in Environment-Variable schreiben, was Du willst - da wird manches umgesetzt.

Nimm hierfür ein persönliches Profildokument o.a. geeignetere Orte. Dann bist Du auch vor Überraschungen und dem nächsten professionellen Admin sicher  ;)

Bernhard

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: GetEnvironmentValue schluckt doppelte Leerzeichen
« Antwort #2 am: 04.10.10 - 15:44:52 »
Hallo Bernhard,

ok. ich bin ein Nest ähh .iniBeschmutzer.

Fällt dir auf Anhieb noch ein was ausserdem noch umgesetzt wird?
Im aktuellen Fall wird halt ein Dateiname übergeben. Da können auch schon einmal ellenlange Pfade auftauchen. Gibt es da eine bekannte Grenze wieviele Zeichen ein Eintrag in der Notes.ini haben darf?
Oder hast du vielleicht eine Quelle was alles beim Einlesen verändert wird? Denn in der .ini selber stehen noch die zwei Leerzeichen. Das Schreiben in die ini funktioniert also wie gewünscht, lediglich beim Einlesen wirds es verändert.

Bernd

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: GetEnvironmentValue schluckt doppelte Leerzeichen
« Antwort #3 am: 04.10.10 - 15:55:33 »
Und was soll das mit "Frontend" und "Backend"? Beschreib doch mal den Ablauf etwas genauer ...
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: GetEnvironmentValue schluckt doppelte Leerzeichen
« Antwort #4 am: 04.10.10 - 16:29:53 »
Bernd, liest Du, was Dir andere Leute schreiben? Ich hatte explizit eine saubere Möglichkeit aufgeschrieben (auf deren Basis man sich auch weitere ausdenken kann).

Aus der Beantwortung von Martins Frage kann sich schon gleich die nächste Option auftun.

Bernhard

Offline Hatschi

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: GetEnvironmentValue schluckt doppelte Leerzeichen
« Antwort #5 am: 05.10.10 - 08:46:59 »
Guten Morgen Martin,
Guten Morgen Bernhard.

Ja, ich lese das was ihr mir schreibt und dafür bin ich euch sehr dankbar.
Wenn ich aber an einer über 18 Jahren gewachsenen und nicht von mir entwickelten Datenbank etwas nachbessere, dann möchte ich das mit möglichst geringen Veränderungen durchführen. Frei nach dem Motto "Never touch a running system". Ich bin ja froh überhaupt die Ursache für das Problem gefunden zu haben.
Wenn ich also die Grenzen von den Umgebungsvariablen wüsste, könnte ich mein Problem vielleicht mit ein oder zwei Zeilen lösen ohne gleich tiefer in das System eingreifen zu müssen.

Nun zu Frontend und Backend. Es gibt mehrere RTFs die mit der Büroklammer gefüllt werden können. Aber für ein RTF darf nur genau eine Datei angehangen werden. Dafür gibt es einen Schalter "Datei anhängen" in Formelsprache. Damit soll sichergestellt werden, dass eben nur eine Datei in diesem Feld angehangen werden kann und nicht mehr. Dafür wird das Dokument nach einer ganzen Menge von Prüfungen erst im Frontend gespeichert. Anschließend wählt man die Datei aus und der Dateiname wird in das Environment geschrieben. Jetzt wird ein weiterer Script-Agent aufgerufen. Der liest nun die Umgebungsvariablen aus und hängt die Datei an. Das funktioniert auch so weit, aber es gab halt immer wieder Probleme deren Ursache nicht klar war.

Nachdem ich nun weiß dass das Environment da einen Strich durch die Rechnung macht, bin ich ja schon einen Schritt weiter. Wenn die doppelten Leerzeichen die einzige Einschränkung wären, würde ich beim Speichern in die ini die doppelten Leerzeichen vielleicht durch die Zeichenfolge "$&%" ersetzen. Und beim Auslesen würde ich diese Zeichenfolge wieder durch zwei Leerzeichen zurück übersetzen. Treten jedoch beim Einlesen der Umgebungsvariablen mehrere nicht bekannte Umsetzungen auf, werde ich damit nur einen Teil der Probleme lösen und eher die Finger davon lassen. Dann ist doch zu überlegen, ob nicht doch auf den Vorschlag eines Profildokumentes zurückgreife.

Bernd

Offline Keydins

  • Aktives Mitglied
  • ***
  • Beiträge: 163
  • Geschlecht: Männlich
Re: GetEnvironmentValue schluckt doppelte Leerzeichen
« Antwort #6 am: 07.10.10 - 14:39:12 »
Ich gehe jetzt mal frecherweise davon aus, dass @Environment bzw. GetEnvironmentString eine @Trim-Funktion integriert hat (das würde das mit den Leerzeichen logisch erklären.)

Möglichkeit: Ersetze alle Leerzeichen beim Speichern durch ein Zeichen, das keines der bei euch verwendete Betriebsysteme für Dateinamen zuläßt. Somit kannst du nach dem Einlesen die Leerzeichenorgie eurer User sauber wiederherstellen.

(Bei Windows wären u.a. folgende Zeichen geeignet* : ? | )


Generell stimme ich Bernhard zu, es gibt elegantere Lösungen für das Problem, auch wenn die in einer seit Jahren bestehenden Lösung ggf. etwas mehr Aufwand bei der Umsetzung bedeuten.


Gruß
Dirk
« Letzte Änderung: 07.10.10 - 14:42:09 von Keydins »
Gruß Dirk

Aktuelle Notesumgebung
~800 BasicClients 9.0.1 FP9 SHF55
  10 FullClients 9.0.1 FP7 SHF143
    7 DominoServer 9.0.1 FP9 HF 139 / 64 Bit

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz