![]() |
Re: Exception EAccessViolation bei inherited add()
Hallo.
Man kann doch keine Grund-VCL verändern. Dann würde die VCL ja ohne diese Modifikation nicht laufen. Ist es so abnormal, eine TColumn durch Ableiten erweitern zu wollen? Kann ich denn nicht einfach relevante Stellen überschreiben, die auf dieses private-Symbol zugreifen? Ich verstehe außerdem das Problem nicht so ganz: Wenn ich Funktionen wie z.B. Add() überschreibe, den Vorgänger mit inherited aufrufe und dann innerhalb meiner Funktion eine Konvertierung TColumn -> TSortColumn durchführe, müsste doch alles klaro sein, oder? Wie sollte ich jetzt vorgehen? Bitte um Vorschläge. Gruß blackdrake |
Re: Exception EAccessViolation bei inherited add()
Wer hat denn gesagt, dass Du die VCL ändern sollst?
|
Re: Exception EAccessViolation bei inherited add()
Entschuldige, ich habe da etwas falsch verstanden. Du meinst also, ich solle alle Stellen überschreiben, die mit TListColumns verbunden sind? Wäre dann die EAccessViolation weg, oder ist das eine Vermutung?
|
Re: Exception EAccessViolation bei inherited add()
ADD:
Ich habe gerade bemerkt, dass ich diese Dinger bereits überschrieben habe:
Delphi-Quellcode:
TSortListView = class(TListView)
private FSortListColumns: TSortListColumns; procedure SetSortListColumns(Value: TSortListColumns); ... published property Columns: TSortListColumns read FSortListColumns write SetSortListColumns; ... end; |
Re: Exception EAccessViolation bei inherited add()
Was ich gemeint hatte war, den gesamten Source von TCustomListview zu kopieren, in dieser Kopie die relevanten Stellen zu ändern und die gewünschten Funktionalitäten zu ergänzen und das ganze dann als eigene Klasse zu speichern. Ist zwar viel Arbeit, aber eine saubere Lösung.
[edit] TCustomListview heißt das :oops: [/edit] |
Re: Exception EAccessViolation bei inherited add()
Hallo.
Reicht es denn nicht, die relevanten Stellen (die mit Column zu tun haben) in der Ableitung neu zu definieren? Ich habe ja wie bereits erwähnt die wichtigen Funktionen wie SetListColumns(), aber auch TLVColumnClickEvent ersetzt und neu definiert. Das ist doch der Sinn der Ableitung. Ich wüsste jetzt nicht genau, was ich noch neu definieren sollte, da ich alle Column-Bezogenen Dinge bereits neu definiert / überschrieben habe (anders wäre der Code unkompilierbar gewesen). Weißt du, wieso es zu der AccessViolation kommt? Für mich ist das immer noch ein Rätsel, da ich keinen Fehler und keine Ungereimtheit sehen kann. Gruß blackdrake |
Re: Exception EAccessViolation bei inherited add()
Schau Dir nochmal marabus Beitrag #7 an. Das kannst Du nicht ändern, da es als private deklariert ist.
|
Re: Exception EAccessViolation bei inherited add()
Ist es denn nicht egal, wenn die untergeordnete Klasse ihr FListColumns vom Typ TListColumns hat?
Meine Klasse hat schließlich ihr eigenes FSortListColumns vom Typ TSortListColumns. Wenn meine Klasse diese Eigenschaft selbstständig handelt, dann ist es doch egal, wenn die untergeordneten Klassen mit dem nicht-erweiterten Typ TListColumns arbeiten, oder? Verstehst du meinen Gedankengang? (Ist bestimmt absoluter Müll, was ich da denke) Entschuldige bitte mein großes Unwissen. Wie ich bereits schrieb, habe ich sehr wenig Ahnung von Vererbung und VCL... |
Re: Exception EAccessViolation bei inherited add()
Ach du meinst, Du lässt die Originalliste einfach stehen und biegst die Property Items um? Das könnte evtl. sogar klappen :gruebel:
[edit] Columns, nicht Items (ich bin so verstreut heute :stupid:) [/edit] |
Re: Exception EAccessViolation bei inherited add()
Irgendwelche Ergebnisse erzielen können? Bei mir negativ. Ich habe lediglich noch herausgefunden, dass die EXE nach der EAccessViolation sich noch ausführen lässt. Aber den Grund habe ich immer noch nicht rausbekommen :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz