AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Destruktor für verkettete Liste

Ein Thema von Teesäufer · begonnen am 10. Jan 2021 · letzter Beitrag vom 31. Jul 2021
Antwort Antwort
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Destruktor für verkettete Liste

  Alt 13. Jan 2021, 13:14
Hallo Stahli,

Das Freigeben und auf NIL setzen, kann man auch mit einem Rutsch erledigen: FreeAndNil(Person1)
Ja, das hatte ich auch so mitbekommen. Aber beinhaltet das dann auch die anderen Objekte (in dem Fall den Rest der Kette)
OK... Nochmal vom Anfang an.

Delphi-Quellcode:
TListe = class
    private
    inhalt: string;
    next: Tliste;
    public
    constructor create(wert: string);
    destructor destroy; override;
    function gibmirinhalt: string;

  end;
Klar kann man Objekte (Class) für eine verkettete Liste nehmen. Wie setzt du next?


Delphi-Quellcode:
Type
  PStringItem = StringItem;
  StringItem = Record
                  Inhalt : String;
                  Next : PStringItem;
                end;
var
  Root : PStringItem;

Währe eher mein Ansatz für eine verkette Liste. Oder:

Delphi-Quellcode:
Type
  IStringItem = Interface
   ['{CCB4015D-A7A8-44D1-910B-ADC1847C0BC4}']
    Function GetInhalt : String;
    Procedure SetInhalt(Const aValue : String);
    Property Inhalt : String read GetInhalt write SetInhalt;
  end;

  TStringItem = Class(TInterfacedObject,IStringItem)
    private
      Function GetInhalt : String;
      Procedure SetInhalt(Const aValue : String);
    private
      fInhalt : String;
    public
      Constructor Create(Const aInhalt : String);
  end;

var
  StringList : array of IStringItem;

Ein Setlength(StringList,0) löscht alle Deine Elemente...

Mavarik
  Mit Zitat antworten Zitat
Teesäufer

Registriert seit: 10. Jan 2021
18 Beiträge
 
#2

AW: Destruktor für verkettete Liste

  Alt 17. Jan 2021, 16:24
Hallo Mavarik,

zuerst einmal möchte ich mich für die späte Antwort entschuldigen. Aber ich habe zu viel anderen Kram, sodass ich mich ums Programmieren meistens nur einmal die Woche kümmern kann.


Klar kann man Objekte (Class) für eine verkettete Liste nehmen. Wie setzt du next?

procedure TListObjekt.ergaenze(neu: string);
var element: TListelement;
begin
element:=TListelement.Create(neu);
if start=nil then
begin
start:=element;
aktuell:=element;
end
else
begin
endeListe;
aktuell.next:=element;
aktuell:=aktuell.next;
end;
end;

Das mit Lazarus schaue ich mir bei Gelegenheit mal an ...
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Destruktor für verkettete Liste

  Alt 18. Jan 2021, 19:02
Hallo Mavarik,

Delphi-Quellcode:
procedure TListObjekt.ergaenze(neu: string);
var element: TListelement;
begin
  element:=TListelement.Create(neu);
  if start=nil then
  begin
    start:=element;
    aktuell:=element;
  end
  else
  begin
    endeListe;
    aktuell.next:=element;
    aktuell:=aktuell.next;
  end;
end;
Next ist ein privates Feld, Diese Feld kannst Du nur in der gleichen Unit erreichen... Das macht man so nicht!

Mavarik
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
730 Beiträge
 
Delphi XE5 Professional
 
#4

AW: Destruktor für verkettete Liste

  Alt 19. Jan 2021, 15:57
procedure TListObjekt.ergaenze(neu: string);
var element: TListelement;
begin
element:=TListelement.Create(neu);
if start=nil then
begin
start:=element;
aktuell:=element;
end
else
begin
endeListe;
aktuell.next:=element;
aktuell:=aktuell.next;
end;
end;
Hallo Teesäufer,
Du kannst Deinen QuellCode hier mit Hilfe des Delphi-Symbols (= Helm mit rotem Kamm gleich über der ersten Zeile im Editor) richtig formatieren, damit er besser lesbar ist.
Gruß, Andreas
PS: Das geht auch nachträglich über den Button "Bearbeiten"
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
EmWieMichael

Registriert seit: 28. Mär 2012
103 Beiträge
 
#5

AW: Destruktor für verkettete Liste

  Alt 19. Jan 2021, 09:00
...
Delphi-Quellcode:
Type
  PStringItem = StringItem;
  StringItem = Record
                  Inhalt : String;
                  Next : PStringItem;
                end;
var
  Root : PStringItem;
Da fehlt aber eine entscheidende Kleinigkeit : PStringItem = ^StringItem;
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.165 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Destruktor für verkettete Liste

  Alt 19. Jan 2021, 15:30
...
Delphi-Quellcode:
Type
  PStringItem = ^StringItem;
  StringItem = Record
                  Inhalt : String;
                  Next : PStringItem;
                end;
var
  Root : PStringItem;
Da fehlt aber eine entscheidende Kleinigkeit : PStringItem = ^StringItem;
Das ist richtig.. Ich braucht immer 2 Versuche um das "^" in den Source zu bekommen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 15:59 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