Forum: Programmieren allgemein
Delphi
by jaenicke,
1. Okt 2016
Doch, Pointer(Msg)^ geht. Das liegt daran, dass ein String intern ein Pointer auf die Stelle im Speicher zwischen Referenzzähler, Stringlänge und dem Stringinhalt selber ist. Ein Cast auf Pointer ergibt daher den Pointer auf das erste Zeichen und durch dessen Dereferenzierung landet man beim ersten Zeichen. Das als Puffer übergeben funktioniert dann.
Forum: Programmieren allgemein
Delphi
by jaenicke,
1. Okt 2016
Erstens sind ein Nullzeichen SizeOf(Char) = 2 Byte, nicht nur 1 Byte, und zweitens ist das innerhalb einer Datei absolut unüblich ein Nullzeichen drin zu haben.
Bei mir nicht und ich hätte mich auch gewundert. Denn die Parameter für Move und WriteFile sehen da schon genauso aus.
Forum: Programmieren allgemein
Delphi
by jaenicke,
1. Okt 2016
// EDIT: hatte den Tab wohl zu lange offen, ich lasse es mal trotzdem so
Ich frage mich wie das jemals funktioniert hat. Vielleicht gab es vorher ein anderes Move als System.Move?
Move bekommt einen Puffer als ersten Parameter, d.h. du müsstest das erste Zeichen übergeben, nicht den String (was intern ja ein Pointer ist). Und warum das +1 bei der Größe? So schreibst du die eine Hälfte des...