Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: array-variablen können nicht gesetzt werden

  Alt 21. Apr 2011, 10:03
(BTW: warum gibt mir der Compiler nicht sopfort ne fehlermeldung oder so?)
Weil dieses grundsätzlich kein falscher/fehlerhafter Code ist?

Man muß rückgabewerte nicht speichern (x := ... )
und man kann über x := variable.Create; ein neues Objekt vom internen Typ des Objektes in der Variable erstellen.
Nur wenn da kein kein Objekt in der Variable drin ist, dann knallt es natürlich.
Delphi-Quellcode:
var
  obj, obj2: TControl;
begin
  obj := TEdit.Create(Self);
  obj2 := obj.Create(Self);
  ShowMessage(obj2.ClassName);
In deinem Fall war wohl irgendein zufälliger Wert/Zeiger/Pointer in der Objektvariable drin, welcher so zeigte, daß anfangs noch "irgendwlecher" beschreibbarer Speicher vorlag und ab einer gewissen Stelle war dieser Speicher nicht mehr beschreibbar und es knallte.
Womöglich hätte es auch gut gehen können, z.B. wenn der Zeiger woandershin zeigte oder wenn dein Array kleiner wäre,
aber dann hätte es woanders knallen können, weil du ja auch einen wichtigen Speicherbereich hättest überschreiben können (eine Art von Buffer Overrun).
$2B or not $2B
  Mit Zitat antworten Zitat