Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: DatenDuck am 14.04.05 - 14:14:57

Titel: "zero-terminated" String in LS verketten
Beitrag von: DatenDuck am 14.04.05 - 14:14:57
Hallo Leute,

eine kurze Frage in die Runde:

Eine C DLL benötigt einen verketteten "zero-terminated" String.
Wie kann ich so einen String nachbauen, bzw. wie bekomme ich das "\0" ans Ende jedes "Teilstrings"?
Reicht das evtl. schon so aus?

   Dim string1 As String
   Dim string2 As String
   Dim erg As String
   Dim nul As Variant
   
   string1 = "Eins"
   string2 = "Zwei"
   nul = Null
   
   erg = string1 & nul & string2




Vielen Dank schonmal für eure Hilfe

Bis dann,
-Moritz
Titel: Re: "zero-terminated" String in LS verketten
Beitrag von: Semeaphoros am 14.04.05 - 14:27:12
Wie?

Null und 0 (Zero) ist nicht dasselbe. Null stellt das NichtvorhandenseinirgendeinesDatums dar, während Zero einen Wert darstellt, eben den Wert 0, da ist also durchaus was vorhanden, auch wenn es sprachlich "nichts" ist.

Die Zeroterminated Strings in C sind relativ einfach herzustellen: am Schluss (aber wirklich ganz am Schluss) des Strings ist ein Chr$(0) anzuhängen.
Titel: Re: "zero-terminated" String in LS verketten
Beitrag von: DatenDuck am 14.04.05 - 14:35:32
Aber ist es in C nicht so, dass ein verketteter String zwischen den ursprünglichen Einzelstrings jeweils ein "\0" einbaut und auch danach als Trennzeichen entscheidet?
Titel: Re: "zero-terminated" String in LS verketten
Beitrag von: Semeaphoros am 14.04.05 - 14:37:17
Nein, ein \0 in einem C-String ist schlichtweg nicht möglch
Titel: Re: "zero-terminated" String in LS verketten
Beitrag von: DatenDuck am 14.04.05 - 14:47:04
Ok, also ist der Unterschied nicht, dass dieses Zeichen zwischen den Teilstrings hängt, sondern dass es von C als Abschluss benötigt wird, LS es aber standardmäßig nicht hintenan hängt.

Wenn ich da richtig liege, hab ich's begriffen ;)

Danke für die Hilfe!
Bis dann,
-Moritz
Titel: Re: "zero-terminated" String in LS verketten
Beitrag von: Semeaphoros am 14.04.05 - 14:49:09
LS hängt gar nichts hinten an, LS hat intern eine Datenstruktur, in der die Länge des Strings verzeichnet ist. C eben nicht.
Titel: Re: "zero-terminated" String in LS verketten
Beitrag von: Glombi am 14.04.05 - 14:57:18
In diesem Zusammenhang sei auf die Hilfe verwiesen:

Dim varName As String [* num]

The optional num argument specifies that varName is a fixed-length string variable of num characters. A fixed-length string variable is initialized to a string of null characters (the character Chr(0)).

When you assign a string to a fixed-length string variable, LotusScript truncates a longer string to fit into the declared length. It pads a shorter string to the declared length with trailing spaces.

Fixed-length strings are often used in declaring data structures for use in file I/O or C access.

An implicitly declared String variable is always a variable-length string variable.

Andreas