![]() |
Re: Wieso kann man Listenelemente nicht kopieren?
OK :D... Das läuft jetzt.
Hat jemand irgenteine Idee wo plötzlich Access Violations herkommen können? Bei Sachen die vorher schon liefen? Gibt es nennenswerte Unterschiede zwischen TObject und TPersistent die soetwas beeinflussen können? |
Re: Wieso kann man Listenelemente nicht kopieren?
Zitat:
Zitat:
Zitat:
|
Re: Wieso kann man Listenelemente nicht kopieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
Der debugger zeigt mir diese Zeile an: Text := baum.Wurzel.toString;
procedure TForm1.BaumgraphAnzeigen (Baum: TAVLBaum; Tiefe,X,DX: integer);
var Text: string; XPos,YPos: integer; begin if not Baum.Leer then begin DX := DX div 2; XPos := X; YPos := Tiefe*40 + 20; Text := baum.Wurzel.toString; ImBaum.Canvas.Ellipse (XPos-10,YPos-5,XPos+24,YPos+15); ImBaum.Canvas.TextOut (XPos,YPos-3,Text); if not baum.rechts.Leer then begin ImBaum.Canvas.MoveTo (XPos+7,YPos+15); ImBaum.Canvas.LineTo (XPos+7+DX,YPos+40); end; BaumGraphAnzeigen (baum.rechts,Tiefe+1,X+DX,DX); if not baum.links.Leer then begin ImBaum.Canvas.MoveTo (XPos+7,YPos+15); ImBaum.Canvas.LineTo (XPos+7-DX,YPos+40); end; BaumGraphAnzeigen (baum.links,Tiefe+1,X-DX,DX); end; end; Die Klasse sieht so aus:
Delphi-Quellcode:
Vorher lief das Programm genau so. An den Elementen die ich erstelle hab ich nicht mehr rumgepfuscht.
type
TAVLBaum = class(TPersistent) private public Wurzel : TItem; Balance: Integer; links: TAVLBaum; rechts: TAVLBaum; constructor create();overload; constructor create(Werte: String);overload; constructor create(pItem: TItem);overload; function KntnFinden(pItem: TItem): Boolean; function Hoehe(): Integer; function toString():String; function Leer():Boolean; function KntnEinfuegen(pItem: TItem):boolean; procedure Assign(Source: TPersistent);override; procedure AssignTo(Dest: TPersistent);override; procedure Sortieren; procedure LLDrehung; procedure LRDrehung; procedure RRDrehung; procedure RLDrehung; end; Im Anhang ist alles. |
Re: Wieso kann man Listenelemente nicht kopieren?
Ich würde mal sagen das die Eigenschaft Wurzel (ein Objekt) von Baum nicht erstellt wurde. Zeig doch mal den constructor von TAVLBaum.
|
Re: Wieso kann man Listenelemente nicht kopieren?
constructor TAVLBaum.create;
begin Wurzel := nil; Balance := 0; end; |
Re: Wieso kann man Listenelemente nicht kopieren?
Ich weiß ja nicht was genau TItem (Wurzel) ist, aber probier mal das:
Delphi-Quellcode:
constructor TAVLBaum.create;
begin Wurzel := TItem.Create; Balance := 0; end; |
Re: Wieso kann man Listenelemente nicht kopieren?
TItem ist nur eine Puffer Klasse und Leitet auf TDaten weiter. Die Methoden sind alle abstrakt. Wenn ich das so implementiere kommt der Abstract Error.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:28 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