AGB  ·  Datenschutz  ·  Impressum  







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

Eigenen Typ in Klasse

Ein Thema von zer00 · begonnen am 15. Jul 2006 · letzter Beitrag vom 9. Aug 2006
 
Benutzerbild von zer00
zer00

Registriert seit: 7. Okt 2003
95 Beiträge
 
Delphi 2005 Professional
 
#13

Re: Eigenen Typ in Klasse

  Alt 22. Jul 2006, 09:20
Zitat von Elvis:
Wenn du < 20 Elemente hast, vielleicht. Aber wahrscheinlich nicht. Die Zeiten ändern sich, mit den flachen Adressräumen wurden linked Lists immer unbedeutender. Ein array-basierter Container wie die TList-Ableitungen wäre schon mehr als OK.
Du fährst aber definitiv besser wenn du deine Daten als Instanzen von Klassen abbildest. Records/Structs haben ihre Berechtigungen IMHO nur, wenn man mit einem Speicherbereich fixer Größe arbeiten muss, der in fest vorgechriebene Felder unterteilt wird. Zum Beispiel für API calls.
Eine Instanz einer Klasse kostet dich eigentlich nur ihren VMT-Pointer als Overhead, dafür gewinnst du neben Polymorphie noch einiges an Unterstützung des Compilers.
So ich habe versucht den Tip mit der Instanz der Klasse umzusetzen.
Ich hoffe ich habe das in etwa richtig gemacht.

Code Form1

Delphi-Quellcode:
implementation
uses Termin;
{$R *.dfm}

var Liste: TList;
    index: integer;

procedure TForm1.NewItem(name, nr: String);
begin
  Liste.Add(TTermin.Create(name,nr));
  Label2.Caption:= IntToStr(index);
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
  Liste:= TList.Create;
  index:= 0;
end;



procedure TForm1.Button1Click(Sender: TObject);
var name, nr: string;
begin
  name:= Edit1.Text;
  nr:= Edit2.Text;
  NewItem(name,nr);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  Edit1.Text:= TTermin(Liste[index]).name;
  Edit2.Text:= TTermin(Liste[index]).nr;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  Edit1.Clear;
  Edit2.Clear;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
  if(index < Liste.Count -1) then
    inc(index);
    Label2.Caption:= IntToStr(index);
    self.Button2.Click;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  if(index > 0) then
    dec(index);
    Label2.Caption:= IntToStr(index);
    Self.Button2.Click;
end;

Code der Klasse

Delphi-Quellcode:
unit Termin;

interface


type
  TTermin = class(TObject)
  private
    { Private-Deklarationen }
    FName: String;
    FNr: String;

  public
    { Public-Deklarationen }
    property Name: String read FName write FName;
    property nr: String read FNr write FNr;
    Constructor Create(Name, nr: String);
  end;

implementation

Constructor TTermin.Create(Name, nr: String);
begin
  inherited Create;
  FName:= Name;
  FNr:= nr;
end;

end.
Jetzt ist mir einfach nicht ganz klar wie ich die Instanzen wieder freigebe, reicht es wenn ich alle Objects in meiner Liste mit Free freigebe und anschliessend die Liste selbst mit Free freigebe?

grz zer00
sei kühn, sei immer kühn, sei nicht zu kühn
  Mit Zitat antworten Zitat
 


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:35 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