Einzelnen Beitrag anzeigen

kmma

Registriert seit: 26. Jul 2010
9 Beiträge
 
Delphi 2 Desktop
 
#10

AW: Verständnisfrage offene Arrays, move und setlength

  Alt 7. Apr 2023, 21:37
Und genau sowas macht man eben nicht, vor allem nicht bei gemangeten Typen, welche intern auch noch auf Pointer basieren.
...

Und bei der einem Objekt (TStringList) hilft das alles sowieso nicht, da dort nichts managed ist.
Ich glaube Du hast noch nicht verstanden, was ich eigentlich will. Ich will mit der Stringlist überhaupt nichts anfangen. Die will ich ganz sauber von Hand abarbeiten und in ein Array die passenden Werte schreiben.
Ich will die vielen 1:1 übertragbaren Werte (integer, boolean etc.) in einem Rutsch in meine Datenstruktur übernehmen und frage mich einfach nur, ob der eine Pointer (der auf einen Speicherberiech zeigen wird, der sehr wahrscheinlich mir nicht gehört) zwischen "move" und "fillchar" irgenwann dereferenziert wird.

Also um die Frage auf ein Langwort runterzubrechen:
Delphi-Quellcode:
type TDings = packed record
  a: integer;
  b: integer;
end;
type TDingsArray = array of TDings;
var Dings: TDings; //sizeof(Dings) = 4;
var CardVal: Cardial;
var p: pointer;

p := @Dings;
move(Dings, CardVal, 4); // Cardval = 0
move(p, CardVal, 4); // eben die Adresse
move(p, Dings, 4); // passiert da jetzt irgendwas mit Speicher der mir nicht gehört?
fillchar(Dings, 4, 0); // um den Müll wieder loszuwerden
setlegth(Dings, 100);
move(Dings, CardVal, 4); // CardVal = Zeiger auf Array of TDings?
Ich glaube wenn ich die Zeile "move(p, Dings, 4);" weglasse sollte doch alles in Ordnung sein. Was ich wissen will ist, ob die Zeile "move(p, Dings, 4)" außer der Adresse @Dings .. @Dings + 3 noch einen Speicherbereich anspricht oder nicht.
  Mit Zitat antworten Zitat