Wenn man die Längenangabe bei PeekS verwendet, wird ein NULL-Terminierungszeichen mitzurückgegeben.
Bei dem Einbinden einer DLL ist mir das jetzt aufgefallen.
Hier ist ein konstruierter Beispielcode der den Fehler zeigt:
Code: Alles auswählen
EnableExplicit
Dim char.a(10)
Define text.s
char(0) = 65
char(1) = 66
char(2) = 67
char(3) = 68
Debug PeekS(@char(0), 20, #PB_Ascii) + "E" ; ERROR: Unicode executable "ABCD" - Ascii executable "ABCDE"
Debug PeekS(@char(0), 8, #PB_Ascii) + "E" ; ERROR: Unicode executable "ABCD" - Ascii executable "ABCDE"
Debug PeekS(@char(0), -1, #PB_Ascii) + "E" ; OK: Unicode executable "ABCDE" - Ascii executable "ABCDE"
text = PeekS(@char(0), 20, #PB_Ascii)
text + "E"
Debug text ; OK: Unicode executable "ABCDE" - Ascii executable "ABCDE"
Da ich mich mit PureBasic noch nicht gut auskenne, kann das auch eine Eigenheit von PureBasic sein, aber mir kommt es falsch vor.
Peter