Autor Thema: ' oder " oder | ??? will endlich verstehen  (Gelesen 4386 mal)

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
' oder " oder | ??? will endlich verstehen
« am: 10.02.05 - 11:47:00 »
Hallo ich habe wieder ein Problem und benötige die Meinung der Experte

ich will in ein Script mit der Evaluate Funktion arbeiten weiß allerdings nicht richtig wie ich es anstellen soll....
Bei mir egal was ich in der erste Zeile eingebe, läuft es auf Fehler.

strEval = "@ReplaceSubstring(" + uidb.Database.FilePath + "; "AV"; "AZ")"
dbName = evaluate(strEval)

ich habe irgendwo gesehen dass manche mit ' arbeiten andere mit |... Ich verstehe die Unterschied nicht. Könnte mir das jemand erklären oder mir ein Link geben wo man so was nachlesen kann.

Danke im Voraus

Glombi

  • Gast
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #1 am: 10.02.05 - 11:51:26 »
In Script kannst Du folgende Zeichen als Stringdelimiter verwenden
".... "
{ .... }
| ... |

Welche Variante Du nimmst, hängt natürlich auch davon aus, was Du in Evaluate brauchst. Wenn Du dort (d.h. dann in Formelsprachensyntax) eine Oder-Verknüpfung machst - mit | - dann darfst Du natürlich nicht | als String Delimiter nehmen, sondern " oder {}

Andreas
« Letzte Änderung: 10.02.05 - 11:57:04 von Glombi »

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #2 am: 10.02.05 - 11:52:47 »
Hi,

das | - Zeichen oder die  {} - Klammern kann man in Notes auch als Ersatz für " einsetzen. Das ist besonders hilfreich, wenn in einer Zeichenkette auf Anführungszeichen vorhanden sind.

In deinem Fall müsste es so gehen:

strEval = {@ReplaceSubstring(} + uidb.Database.FilePath + {; "AV"; "AZ")}
dbName = evaluate(strEval)


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomas Schulte

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #3 am: 10.02.05 - 11:56:39 »
Ich arbeite bei sowas immer mit {} oder | ... |
mit dem " arted sowas meistens in zähldochdeineAnführungszeichen Orgien aus und das muss denn nun nicht sein. Alles was innerhalb der geschweiften Klammern oder des Pipe delimiters steht interpretiert der Compiler als Gesamtstring und damit sind solche Konstruktionen wie:
strHeader =  "Firma""" + "," + """Name""" + "," + """Position""" + "," + """Anschrift""" + "," + """Ort""" + "," + """Briefanrede"
einfacher.
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #4 am: 10.02.05 - 12:27:31 »
ok habe vielleicht jetzt ein Stück mehr verstanden allerdings bei der Zeichenkette:
strEval = {@ReplaceSubstring(} + uidb.Database.FilePath + {; "AV"; "AZ")}

bekomme ich im Debug Modus: "@Replace(test\AVtest.nsf;""AV"";""AZ"")" zurück und das liefert mir ein Type mismatch Fehler zurück  :'(

ich denke dass ich auch die " vor und nach mein db Name brauche

habe dann probiert:
strEval = {@ReplaceSubstring("} + uidb.Database.FilePath + {"; "AV"; "AZ")}
bekomme dann: "@Replace(""test\AVtest.nsf"";""AV"";""AZ"")" mit dem gleichen Fehler

irgendwie fehlt da noch was...

darüber hinaus stört es nicht wenn ein Doppel "" steht? wie wird es dann interpretiert? wie nur ein?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #5 am: 10.02.05 - 12:38:17 »
Doppeltes " innerhalb eines Strings wird als ein einfaches " interpretiert und ist Bestandteil des Strings. Anders ausgedrückt, egal ob Du mit | oder {} arbeitest, intern wird das mit " dargestellt und weil ein einfaches " den String beenden würde, wird stattdessen ein "" genommen. Dein Type Mismatch hat damit aber wahrscheinlich nix zu tun. Wie sieht den die gesamte Zeile aus, in der die Fehlermeldung hochkommt?
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #6 am: 10.02.05 - 12:39:56 »
Hallo,

Das liegt wahrscheinlich am Rückgabetyp der Evaluierung. Dort wird ein Variant zurückgegeben.

Davon mußt Du Dir dann den (0)ten Wert holen.

Thomas
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #7 am: 10.02.05 - 12:42:42 »
Hi,

ich hab's mal so probiert:

   Dim strEval As String
   Dim dbName As Variant
   Dim ws As New NotesUIWorkspace
   Dim uidb As NotesUIDatabase
   
   Set uidb = ws.CurrentDatabase
   strEval = {@ReplaceSubstring("} + uidb.Database.FilePath + {"; "AV"; "AZ")}
   dbName = Evaluate(strEval)

So funktioniert's bei mir. Allerdings schmeisst er mir alle Backslashes raus. Man müsste vorher jeden \ im Pfadnamen durch einen \\ ersetzen.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #8 am: 10.02.05 - 12:47:28 »
Aus der Notes-Hilfe:

Return value
If the Lotus software application macro being executed returns a value, the Evaluate function returns a Variant containing that value. Otherwise, the function does not return a value.

Und das funktioniert bei Dir, Axel?

Edit: Na klar, ist ja ein Variant ;D. Wer lesen kann...

Thomas
« Letzte Änderung: 10.02.05 - 12:50:02 von Thomator »
+++To be human is more important than to be important!+++

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #9 am: 10.02.05 - 12:50:53 »
Thomas, Variant bedeutet nicht unbedingt einen Array of Variants, wie Du im vorletzten Posting angenommen hast. Wenn der Variant als Scalar vom Typ String zurückkommt, konvertiert das korrekt, ich nehme mal an, das ist, was bei Axel passiert.
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #10 am: 10.02.05 - 13:03:35 »
Jau, das is man richtig.

Aber der Versuch, von einer Evaluierung direkt an eine Variable vom Typ String zu übergeben wirft immer einen Type-Mismatch, wollte ich damit sagen.

Ich habe da angenommen, dass dbName bei Alois vom Typ String ist...

Thomas
+++To be human is more important than to be important!+++

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #11 am: 10.02.05 - 13:13:43 »
... eben nicht immer, sondern meistens ..... ( .... wirft es den Fehler ...)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Christopher

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.060
  • Geschlecht: Männlich
  • Dumm ist der, der dummes tut.
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #12 am: 10.02.05 - 13:27:51 »
So könnte es aussehen:

Function KillUmlaute ( s As String ) As String
   strformula = { @ReplaceSubString("} + s + {"; "ä":"ö":"ü":"ß":"Ä":"Ö":"Ü":"Prof.":"Dr.":".":"_":"-":" "; "ae":"oe":"ue":"ss":"Ae":"Oe":"Ue":"":"":"":"":"":"" ) }
   nStr = Evaluate( strformula )
   KillUmlaute = nstr(0)
End Function
Client & Server R 5.011
Principal Certified Lotus Professional R5 System Administration
Microsoft Certified Systems Engineer 2000
Microsoft Certified Systems Administrator 2000
Microsoft Certified Systems Administrator 2003
Microsoft Certified Systems Engineer 2003

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #13 am: 10.02.05 - 13:38:28 »
Danke an alle aber besonder an Thomator: er hat den richtigen Stichwort geschrieben "Variant". Ja stimmt ich hatte es in ein String gepackt... hmmm

jetzt funzt es fast.
"@Replace(""test\AVtest.nsf"";""AV"";""AZ"")" erscheint aber nach dem evaluate ist in mein (0)te Wert nicht test\AZtest.nsf wie erwartet sondern testAZtest.nsf.

Ich bin immer noch der Meinung dass die " irgendwie fehlerhaft sind oder hat das Zeichen \ eine Bedeutung und ich muss es zuerst durch / ersetzen?

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #14 am: 10.02.05 - 13:47:55 »
\ ist in Script Escape-Char und Du musst alle \ durch \\ ersetzen, das hat Axel schon weiter oben geschrieben
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #15 am: 10.02.05 - 13:49:24 »
Hi,

hast du meine Antwort #7 nicht gelesen? Dort habe ich im letzten Satz darauf hingewiesen.


Axel
 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Glombi

  • Gast
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #16 am: 10.02.05 - 13:50:25 »
uidb.Database.FilePath
liefert sowas wie
verzeichnis\date.nsf

In Evaluate brauchst Du aber ein
verzeichnis\\date.nsf

Also so
dim ret_eval as variant
dim path as string
ret_eval= Evaluate(|@ReplaceSubstring(@Subset(@DbName;-1);"\\";"\\\\")|)

path = ret_eval(0)

Dim strEval As String
   Dim dbName As Variant
   Dim ws As New NotesUIWorkspace
   Dim uidb As NotesUIDatabase
  
   Set uidb = ws.CurrentDatabase
   strEval = {@ReplaceSubstring("} + path + {"; "AV"; "AZ")}
   dbName = Evaluate(strEval)


Andreas

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: ' oder " oder | ??? will endlich verstehen
« Antwort #17 am: 10.02.05 - 14:03:05 »
Ups tut mir Leid, habe nicht gesehen gehabt  ;D

Thx an alle jetzt funzt

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz