Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: nil kann nicht zu TRichEditStrings zugewiesen werden

  Alt 10. Okt 2014, 08:14
Was Sir Rufo meint: Dein Create ist als overload deklariert, das wird so nie aufgerufen, es muss override heißen.

Und wie schon gesagt, fehlt dort das inherited.
Zudem meine ich noch, dass die Konstruktoren völlig falsch gewählt sind und darum niemals aufgerufen werden.

Entweder man überschreibt den Konstruktor TCollectionItem.Create( Collection : TCollection );
Delphi-Quellcode:
TMyItem = class( TCollectionItem )
public
  constructor Create( Collection : TCollection ); override;
end;

constructor TMyItem.Create( Collection : TCollection );
begin
  inherited {Create( Collection )};
  ...
end;
oder, wenn einen die übergebenen Werte im Konstruktor egal sind, dann überschreibt man einfach TObject.AfterConstruction;
Delphi-Quellcode:
TMyItem = class( TCollectionItem )
public
  procedure AfterConstruction; override;
end;

procedure TMyItem.AfterConstruction;
begin
  inherited;
  ...
end;
Für das Ableiten von Klassen unterstützt einen die IDE ("Use the force, Luke!")

Im Deklarationteil der neuen Klasse drückt man beherzt <STRG>+<LEERTASTE> und bekommt (wie durch Zauberhand)
step1.png
Nun wählt man sich gemütlich eine (oder auch mehrere) Einträge aus und hämmert auf <ENTER>
step2.png
Ah, ja ... und nun? Ein weitere beherzter Druck auf <UMSCH>+<STRG>+C bringt uns zu
step3.png
Also so ein Hinweis "die Klasse ist noch neu, da habe ich das inherited noch weggelassen" dokumentiert nur die Unkenntnis im Umgang mit der IDE. Aber gegen Unkenntnis kann man etwas unternehmen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (10. Okt 2014 um 08:23 Uhr)
  Mit Zitat antworten Zitat