Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: andrew22 am 17.06.05 - 10:24:23

Titel: String zusammensetzen
Beitrag von: andrew22 am 17.06.05 - 10:24:23
hi ho

Ich möchte gern nen Dateipfad zusammensetzen.

Dim test As String

test = "C:\Temp\t........csv"

da wo die Punkte sind kommt immer etwas anderes

sprich der Dateiname ändert sich nur z.B. die ersten 3 Buchstaben bleiben immer gleich und die Endung

wie mache ich das am besten ?!

thx
Titel: Re: String zusammensetzen
Beitrag von: Thomas Schulte am 17.06.05 - 10:27:10
test = "C:\Temp\T" + Variable + ".csv"
Titel: Re: String zusammensetzen
Beitrag von: m3 am 17.06.05 - 10:27:28
Aus der Lotus Notes Designer Online-Hilfe:
Zitat
Concatenate two expressions as strings.
Ampersand (&) operator
Syntax
expr1 & expr2
Elements
expr1, expr2
Any String expressions, or any of the following:
Numeric expression: LotusScript converts it to its text representation. In the case of Boolean data types, 0 becomes "False," and any other number becomes "True."
NULL: LotusScript treats it as an zero-length String value when concatenated with the other expression. If both expressions are NULL, the result is NULL.
EMPTY: LotusScript treats it as a zero-length String value.
Return value
The result is a String or a Variant of type String, if either of the operands is a Variant.
Usage
Use the ampersand (&) operator to ensure a concatenation operation. The plus (+) operator also concatenates two character strings, but LotusScript determines whether to interpret the plus as a concatenation operator or an addition operator on the basis of the operands in the expression in which it appears.
Examples
Dim x As Variant
x = 56 & " Baker St."
Print x                         ' Prints "56 Baker St."
anInt% = 123
aString$ = "Hello"
anotherString$ = "world"
varV = NULL
Print aString$ & ", " & anInt% & " " & varV & _
    anotherString$ & "."
' Output: Hello, 123 world.
Plus (+) operator
Syntax
expr1 + expr2
Elements
expr1, expr2
Any String expressions, or any of the following:
Numeric expression: LotusScript converts it to its text representation (if plus is interpreted as concatenation).
NULL: LotusScript treats it as NULL. If either expression is NULL, the result is NULL.
EMPTY: LotusScript treats it as a zero-length String value.
Return value
The result is a String or a Variant of type String, if either of the operands is a Variant.
Usage
Use the ampersand (&) operator to ensure a concatenation operation. The plus (+) operator  concatenates two character strings, but LotusScript determines whether to interpret the plus as a concatenation operator or an addition operator on the basis of the operands in the expression in which it appears.
For example:
Print 100 & "200"
' Output is 100200, because & is always
' a concatenation operator
while
Print 100 + "200"
' Output is 300, because + was interpreted
' as addition operator

Print "100" + "200"
' Output is 100200, because + was interpreted
' as concatenation operator
See Also
Table of string operators
Overview of expressions and operators
String relational(comparison) operators
Titel: Re: String zusammensetzen
Beitrag von: ctillmanns am 17.06.05 - 10:29:38
Dateiname = "Dateiname"
test = "C:\Temp\"+Dateiname+".csv"
Mist Thomas war wieder mal schneller.
Mit dem Hilfeauszug ist die Verwirrung jetzt dafür komplett.
Titel: Re: String zusammensetzen
Beitrag von: m3 am 17.06.05 - 10:31:21
Wenn Du sie nicht überzeugen kannst, verwirre sie. :D
Titel: Re: String zusammensetzen
Beitrag von: andrew22 am 17.06.05 - 10:38:10
vielen Dank für eure Postings ;)

ich hatte vergessen noch zu schreiben das der Zwischentext sozusagen nicht bekannt ist

sprich im script sollte es so stehen "tes+beliebig Zeichen etc.+.csv"

also im Prinzip wie "*.csv" nur das eben schon vom dateinamen die ersten 3 buchstaben vorhanden sind .
Titel: Re: String zusammensetzen
Beitrag von: m3 am 17.06.05 - 10:41:22
Du suchst also die sogenannte Kristallkugel-Funktion, oder wie?

Oder meinst Du etwa die sogenannten "Globs" wie etwa
test = "C:\Temp\t*.csv"
Titel: Re: String zusammensetzen
Beitrag von: ctillmanns am 17.06.05 - 10:44:19
Oder soll ein Benutzer etwas eingeben?

Zitat
Wenn Du sie nicht überzeugen kannst, verwirre sie.
Genau. Wir müssen in Zukunft sowieso zusammenhalten und allen Benutzern erzählen, dass Notes eigentlich schwarze Magie ist und nur geweite Domino-Priester überhaupt noch den Designer starten dürfen.
Titel: Re: String zusammensetzen
Beitrag von: m3 am 17.06.05 - 10:50:53
Zitat
Wenn Du sie nicht überzeugen kannst, verwirre sie.
Genau. Wir müssen in Zukunft sowieso zusammenhalten und allen Benutzern erzählen, dass Notes eigentlich schwarze Magie ist und nur geweite Domino-Priester überhaupt noch den Designer starten dürfen.
Vergiss nicht das obligate Tieropfer vor dem Start des Designers und die Opferung der Jungfrau, bevor man die Anwendung ausrollt. ;)  ;D
Titel: Re: String zusammensetzen
Beitrag von: andrew22 am 17.06.05 - 10:51:28
ja genau das suche ich ;)

test = "C:\Temp\t*.csv"

* = irgendwelche Buchstaben Zahlen etc.

man muss sich das so vorstellen. Das eine Datei ins Temp Verzeichnis gelegt wird und die dann vom Agent ausgelesen wird. Der Agent kennt aber nur die Dateiendung und die ersten 2 oder 3 zeichen / buchstaben der datei der rest ändert sich täglich.

und man soll nicht jedes mal in agentcode gehen und dateinamen setzen . deshalb dachte ich könnte man das doch so machen oder ?!
Titel: Re: String zusammensetzen
Beitrag von: m3 am 17.06.05 - 11:00:22
Globs gibts in Notes nicht.

Du musst das Directory händisch auslesen, die passenden Files suchen und dann weiterbehandeln.

Alle dafür notwendigen Funktionen findest Du in der Online-Hilfe.
Titel: Re: String zusammensetzen
Beitrag von: andrew22 am 17.06.05 - 11:06:12
also eine Datei kommt täglich .

am Montag heißt sie test123.csv
am Dienst heißt sie test654.csv

das mal als Beispiel.

und ich kann in Lotus Script nicht den pfadnamen so setzen das eben test und .csv fest ist und das was dazwischen steht eben variabel sozusagen ?! :(
Titel: Re: String zusammensetzen
Beitrag von: ctillmanns am 17.06.05 - 11:14:56
Wenn Du weisst, wie sie heisst. bzw. Du auch vorher schon sagen kannst wie sie heissen wird, dann kannst Du das doch auch programmieren. Das sollte dann kein Problem mehr sein.
So in etwa
Falls Montag dann Variable = "123"
Falls Dienstag dann Variable = "456"
.
.
usw.
Zitat
Wenn Du sie nicht überzeugen kannst, verwirre sie.
Genau. Wir müssen in Zukunft sowieso zusammenhalten und allen Benutzern erzählen, dass Notes eigentlich schwarze Magie ist und nur geweite Domino-Priester überhaupt noch den Designer starten dürfen.

Vergiss nicht das obligate Tieropfer vor dem Start des Designers und die Opferung der Jungfrau, bevor man die Anwendung ausrollt.
Und wo findet man heute noch Jungfrauen? Dann lügt da eine und prompt hast Du einen Servercrash. Das ist zu riskant. Wir müssen uns da auf etwas anderes einigen. Wie wäre es denn mit Managern? Je höher das Gehalt um so grösser ist die Chance, dass die Anwendung auch hält was sie verspricht.
Titel: Re: String zusammensetzen
Beitrag von: andrew22 am 17.06.05 - 11:16:43
genau das weiss ich ja nicht ;)

sondern ich weiss nur das immer test und endung .csv da ist ;)
Titel: Re: String zusammensetzen
Beitrag von: m3 am 17.06.05 - 11:22:20
Und wo findet man heute noch Jungfrauen? Dann lügt da eine und prompt hast Du einen Servercrash. Das ist zu riskant. Wir müssen uns da auf etwas anderes einigen. Wie wäre es denn mit Managern? Je höher das Gehalt um so grösser ist die Chance, dass die Anwendung auch hält was sie verspricht.
Manager? Auf keinen Fall, das wäre ja kein "Opfer" sondern eine Erleichterung. ;)
Man könnte ja auf CPUs ausweichen - "Oh, Cthulhu! Ich opfere Dir diesen Prozessor aus meinem 4 CPU Server, aber lass dieses Update funktionieren". Oder so in der Art.

@andrew22: Den Lösungsansatz hab ich Dir schon genannt.
Titel: Re: String zusammensetzen
Beitrag von: Thomas Schulte am 17.06.05 - 11:26:41
Ja Directory durchparsen und Pattern suchen. Alles was ins Muster passt wird sich gekrallt.
So was in der Richtung zum Bleistift:
Dim directorylist List As String
Dim startentryposition As Integer
Dim listofdoctypes List As String
Sub Initialize
   Dim session As New NotesSession
   Dim wksp As New NotesUIWorkspace
   Dim folder As Variant
   Dim ok As Integer
   Dim count As Integer
   
   Dim Basedir As String
   Dim extension As String
   
   listofdoctypes("doc") = "doc"
   listofdoctypes("xls") = "xls"
   listofdoctypes("ppt") = "ppt"
   listofdoctypes("txt") = "txt"
   listofdoctypes("xlt") = "xlt"
   listofdoctypes("dot") = "dot"
   listofdoctypes("rtf") = "rtf"
   
   basedir = Inputbox("Basisverzeichnis eintragen","Verzeichnis suchen","i;\")
   extension = Inputbox("Erweiterung eintragen","File Extension","xls")
   
   Startentryposition = 0
   directorylist(Cstr(startentryposition)) = basedir
   Startentryposition = startentryposition + 1
   ok = Messagebox ("folgende Daten wurden eingegeben: Verzeichnis " & basedir & " Erweiterung " & extension, 33 , "Diese Daten werden verwendet")
   If ok = 1 Then
      ' at first find all the directories
      Call finddirectories(basedir)
      ' for second get all the files in the previous found directories and rename them
      For Count = 0 To startentryposition-1
         Call renamefiles(directorylist(Cstr(Count)),extension)
      Next
      
   Else
      Messagebox "Verarbeitung wurde abgebrochen", 16 , "ACHTUNG"
   End If
End Sub
Sub finddirectories(basedir As String)
   ' finds all directory entries and subentries in a given path
   Dim filename As String
   Dim fileattribute As Integer
   Dim isdir As Integer
   Dim fromcount As Integer
   Dim setfirstentryposition As Integer
   Dim setlastentryposition As Integer
   Dim dircount As Integer
   Dim i As Integer
   
   On Error Resume Next
   
   ' save the entryposition due to the recursion
   setfirstentryposition = startentryposition   
   
   ' get the file names
   fileName = Dir$(basedir & "\*.*",16)
   Do While fileName$ <> ""
      fileattribute = Getfileattr (basedir + "\" + fileName )
      If fileattribute = 16 Then
         ' check if this is really a directory
         isdir = checkdir(basedir + "\" + Filename)
         If isdir = True Then
            If filename <> "." And filename <> ".." Then
               directorylist(Cstr(startentryposition)) = basedir & "\" & Filename
               startentryposition = startentryposition + 1
            End If
         End If
      End If
      filename = Dir$()
   Loop
   
   If setfirstentryposition < startentryposition Then
      setlastentryposition = startentryposition
      For i = setfirstentryposition To setlastentryposition -1
         Call finddirectories(directorylist(Cstr(i)))   
      Next
   End If
   
End Sub
Function checkDir( path As String ) As Integer
   
   On Error Resume Next
   
   CheckDir = False
   
   Chdrive Left( path, 1 )
   Chdir path
   
   If Curdir = path Then         
      CheckDir = True
   End If
   
End Function
Sub renamefiles(basedir,extension)
   Dim filename As String
   ' renames the files, appends the previous named extension if there is no other extension
   ' check if the 4 entry from the right side is a point
   ' get the file names
   fileName = Dir$(basedir & "\*.*",0)
   Do While fileName$ <> ""
      If Left(Right(filename,4),1) = "." Then
         If  Not Iselement(listofdoctypes(Lcase(Right(filename,3)))) Then
            Name basedir & "\" & Filename As basedir & "\" & filename & "." & Extension         
         End If
      Else
         Name basedir & "\" & Filename As basedir & "\" & filename & "." & Extension         
      End If
      filename = Dir$()
   Loop
End Sub
Titel: Re: String zusammensetzen
Beitrag von: ctillmanns am 17.06.05 - 11:29:48
Eine CPU opfern? Bist Du des Wahnsinns keckste Beute? Das ist doch konzentrierte dunkle Macht? Was könnte das auslösen?
Aber Manager geht nicht, da hast Du recht.
Lagerarbeiter gingen noch.

@andrew22: Wenn Du Die Angaben nicht weisst, dann musst Du sie eingeben. FileDialog gibt es ja schon. Notes ist ganz schlecht im Raten. Das muss ich meinen Usern auch im klar machen. Aber Thomas Lösung ist schon mal eine grosse Erleichterung.
Titel: Re: String zusammensetzen
Beitrag von: andrew22 am 17.06.05 - 12:22:19
fileName = Dir$(basedir & "\*.*",16)

schaut mal das funktioniert ;)

fileName = Dir$("C:\Temp" & "\test*.csv",0)

dat klappt ;)