Hi himitsu,
du hast dich wohl vertan, du meinst wohl nullterminierte Strings.
Für Delphistrings gilt deine Aussage nicht.
Delphistrings haben immer eine #0 am Ende. (es sei denn man verbiegt/umgeht absichtlich die interne Speicherverwaltung oder hat einen buffer overrun)
ich übergebe als pchar*. Es ist also zunächst vollkommen unerbeblich ob das UTF8 oder sonst was ist.
Eigentlich habe ich gedacht, dass nullterminierte Strings in Delphi nullterminierteb Strings in C entsprechen.
Weit gefehlt.
In der
DLL (C) kommt der nullterminierte String um eins nach rechts verschoben an.
Pascal:
a0:array[0..79} of char;
'T','e','s','t',#0
in C (
DLL):
*,'T','e','s','t',#0
Ich muss dort also den ganzen Mist um eins nach links schieben.
Komischerweise funktioniert das solange ich #0#0 am Ende habe ansonsten nicht.
Hier die Funktion mit der ich verschiebe:
Code:
void wtic_pascal(char* Dest,char* Source)
{
for(int i = 0; i <= strlen(Source)+1; ++i)
Dest[i] = Source[i+1];
}
Frohe Weihnachten
Rainer