AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wieso kann man Listenelemente nicht kopieren?
Thema durchsuchen
Ansicht
Themen-Optionen

Wieso kann man Listenelemente nicht kopieren?

Offene Frage von "wonnebeekiwi"
Ein Thema von wonnebeekiwi · begonnen am 29. Mär 2009 · letzter Beitrag vom 29. Mär 2009
Antwort Antwort
Seite 2 von 2     12   
wonnebeekiwi

Registriert seit: 23. Mär 2009
16 Beiträge
 
#11

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 15:45
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?
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#12

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 15:47
Zitat von jbg:
Zitat von Andreas L.:
Leite TElement von TPersistent ab.
Das reicht nicht. Er muss auch noch die Assign-Methode für TElement umschreiben, denn sonst kommt nur "TElement kann nicht zu TElement zugewiesen werden".
Naja, da kommt man mit ein bisschen nachdenken auch selber drauf. Und in der Hilfe stehts auch:

Zitat:
In den meisten Anwendungen wird Assign überschrieben, um die Zuweisung von Eigenschaften aus ähnlichen Objekten vorzunehmen. Wenn das Zielobjekt die Zuweisung von Eigenschaften aus Source nicht behandeln kann, rufen Sie beim Überschreiben von Assign die geerbte Methode auf.
Zitat:
OK ... 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?
Wo bleibt der Debugger stehen? Vermutlich greifst du auf ein noch nicht erstelltes Objekt zu. Poste dochmal deine Klasse.
  Mit Zitat antworten Zitat
wonnebeekiwi

Registriert seit: 23. Mär 2009
16 Beiträge
 
#13

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 15:58
Delphi-Quellcode:
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;
Der debugger zeigt mir diese Zeile an: Text := baum.Wurzel.toString;
Die Klasse sieht so aus:
Delphi-Quellcode:
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;
Vorher lief das Programm genau so. An den Elementen die ich erstelle hab ich nicht mehr rumgepfuscht.
Im Anhang ist alles.
Angehängte Dateien
Dateityp: zip project_tree_483.zip (239,8 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#14

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 18:24
Ich würde mal sagen das die Eigenschaft Wurzel (ein Objekt) von Baum nicht erstellt wurde. Zeig doch mal den constructor von TAVLBaum.
  Mit Zitat antworten Zitat
wonnebeekiwi

Registriert seit: 23. Mär 2009
16 Beiträge
 
#15

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 20:54
constructor TAVLBaum.create;
begin
Wurzel := nil;
Balance := 0;
end;
  Mit Zitat antworten Zitat
Andreas L.
(Gast)

n/a Beiträge
 
#16

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 20:57
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;
  Mit Zitat antworten Zitat
wonnebeekiwi

Registriert seit: 23. Mär 2009
16 Beiträge
 
#17

Re: Wieso kann man Listenelemente nicht kopieren?

  Alt 29. Mär 2009, 21:01
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz