Hallo.
Ich bin gerade dabei, eine
VCL zu erweitern. Dabei erhalte ich nun eine EAccessViolation bei folgender Funktion:
Delphi-Quellcode:
function TSortListColumns.Add: TSortListColumn;
begin
Result := TSortListColumn(inherited Add);
end;
Aufgedröselt kann ich erkennen, dass die
Exception scheinbar durch inherited verursacht wird:
Delphi-Quellcode:
function TSortListColumns.Add: TSortListColumn;
var
tmp: TListColumn;
tmp2: TSortListColumn;
begin
tmp :=
inherited Add;
// <-- EXCEPTION (wieso da?)
tmp2 := TSortListColumn(tmp);
Result := tmp2;
end;
Der vereinfachte Code, der die zusammenhänge zeigt:
Delphi-Quellcode:
type
TSortListColumns = class(TListColumns)
{...}
public
function Add: TSortListColumn;
end;
TSortListView = class(TListView)
{...}
published
property Columns: TSortListColumns read FSortListColumns write SetSortListColumns;
end;
Die
Exception wird ausgelöst bei dem Programmcode:
Delphi-Quellcode:
var tag_history: TSortListView;
tag_history := TSortListView.Create(TagForm);
{...}
with tag_history.Columns.Add
do // <-- Exception
begin
// ...
end;
Weiß jemand weiter? Ich kann mir absolut nicht vorstellen, was hier falsch sein soll, da ich Add() ja nur vererbe.
Ich kann ein kleines Testprogramm zur Verfügung stellen.
Gruß
blackdrake