Nun, die Sache mit Strings, die von der DLL zurückgegeben werden sollen:
Wenn du einen Leer-String erzeugst mit
MyString = new string(" ", 64)
und diese Stringadresse an die DLL weitergibts, kann die wunderbar ihr Zeugs drin ablegen. ABER:
Die Länge ist aus Sicht von VB nach wie vor 64, auch wenn eigentlich nur drei belegt wurden.
Daher hauen Vergleiche und andere Manipulationen nicht hin, weil (scheinbar) der String mit Blanks auf 64 Bytes aufgefüllt ist.
daher muß man aus dem einen String einen neuen machen, aber gleich in der richtigen Länge. Das macht man, indem man diese Blanks hinten abzwickt. (remove)
Das Problem hatten wir sofort beim Key-Value, bei den Registry-Sachen ist es nur noch nicht stinkig geworden.

Das Registry-Lesen, z.B
ppar = RnRegistNextPar(head, 0, ParName) ' get first param
geht ins Auge, wenn du dann z.b. vergleichst
if ParName = "SEMMELHUND" THEN
gassi_gehen()
Das funzt nicht so nicht
Was du brauchst, ist die tatsächliche Länge der strings und die liefert der DLL-Befehl
StrLen = RnRegistName(ppar, ParName)
DANN geht
passender_string = ParName.remove(StrLen, (64 - Strlen))
und jetzt haut es hin.

(Statt "64" nehmen wir aber den wert von ParName.Length, dann müssen wir nicht aufzupassen, was wir vorher bei "NEW" angegeben haben).


Besser ?