Forum: Programmieren allgemein
by Uwe Raabe,
10. Feb 2019
Das kann nicht mal zu Zeiten von string = string funktioniert haben. Ein TArray<string> ist immer ein Array von Pointern und Sizeof(string) ist immer 4 (32 Bit) oder 8 (64 Bit). Das 1 Byte mehr macht hier definitiv nur Ärger. Es sorgt nämlich dafür, daß der letzte Array-Eintrag verfälscht wird.
Ich wäre in diesem Fall aber sowieso vorsichtig, was die Referenzzählung bei Strings betrifft. Die...
Forum: Programmieren allgemein
by Uwe Raabe,
9. Feb 2019
Der Code ist meiner Meinung nach falsch - eventuell nur falsch abgeschrieben.
Das Move erwartet im dritten Parameter die Anzahl Bytes. Hier wird aus unerfindlichen Gründen 1 Byte zuviel angegeben. Der korrekte Code müsste so lauten:
System.Move(AArray, AArray, (Length(AArray) - AIndex - 1) * SizeOf(string));
Forum: Programmieren allgemein
by Uwe Raabe,
9. Feb 2019
Wofür ist denn das + 1 am Ende?
System.Move(AArray, AArray, (Length(AArray) - AIndex - 1) * SizeOf(string) + 1);
Welche Delphi Version?