Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Ein Element eines Arrays löschen?

  Alt 31. Mär 2007, 22:47
Zitat von .chicken:
Was passiert denn bei Move, mit dem was vorher an der Position war?
Also wenn ich zB Element 6 an die 5. Stelle setze, was wird dann aus Element 5?
Move verschiebt einfach (ohne große Kontrolle) einen Speicherbereich. Du gibst einfach eine Zielposition, eine Startposition und eine Länge an. Die Position beziehen sich dabei direkt auf den Speicher und die Länge wird in Bytes angegeben. Move kopiert dann einfach die Daten und überschreibt alles an der Zielposition. Ob diese gültig ist oder nicht wird move auch nicht prüfen, darum solltest Du Dich tunlichst selbst kümmern (sonst gibt es unerwartete Exceptions, wobei man die hoffentlich nie erwartet).

Delphi-Quellcode:
var a: Array of Integer;
begin
 setLength(a, 6);
 // ...
 // Sei a = [1, 2, 3, 4, 5, 6]

 // Verschieben der Positionen a[4] und a[5] an den Anfang des Arrays
 // FALSCH move(a[0], a[4], 2*sizeOf(a[4]));
 // Korrigierte Version (danke @Hawkeye219)
 move(a[4], a[0], 2*sizeOf(a[4]));
 // neue Belegung von a = [5, 6, 3, 4, 5, 6]
 // verkleinern des Arrays
 setLength(a, 2);
 // neue Belegung von a = [5, 6]
end;
Gruß Der Unwissende

[edit]
Fehler Korrigiert, nochmal danke @Hawkeye219
[/edit]
  Mit Zitat antworten Zitat