AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign dynamische Verwaltung von Objekten - Fahrstuhlsteuerung
Thema durchsuchen
Ansicht
Themen-Optionen

dynamische Verwaltung von Objekten - Fahrstuhlsteuerung

Ein Thema von StuRic · begonnen am 11. Jun 2013 · letzter Beitrag vom 15. Jun 2013
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: dynamische Verwaltung von Objekten - Fahrstuhlsteuerung

  Alt 12. Jun 2013, 16:34
Kurze Grundlagen zu Klassen:

Klassen sind erstmal Typen und bekommen vor dem Namen ein T verpasst.

Der constructor heißt Create und sollte nach Möglichkeit auch so benutzt/benannt werden.
Delphi-Quellcode:
TMyObj = class
public
  constructor Create;
  constructor Init;
end;

constructor TMyObj.Create;
begin
  inherited;
  // irgendwas machen
end;

constructor TMyObj.Init;
begin
  inherited Create;
  // irgendwas machen
end;
Wird eine Klassen-Instanz erzeugt (mit dem constructor ) so liefert mir selbiger eine Referenz auf die Klasse (als einen Zeiger).

Ein Zeiger auf eine Klassen-Referenz-Variable liefert mir also nur den Zeiger auf den Zeiger der Klasse. Lustig, gell?
(Das hört sich nicht nur komisch an, es ist auch komisch)

Für die Verwaltung von Klassen-Instanzen (man spricht dabei von Objekten), also eine Liste mit Objekten, gibt es die Hier im Forum suchenTObjectList.

Delphi-Quellcode:
var
  MyList : TObjectList;
begin
  // Liste erzeugen ...
  MyList := TObjectList.Create( True );
  try
    // ... mit ein paar Objekten füllen ...
    MyList.Add( TMyObj.Create );
    MyList.Add( TMyObj.Create );
    MyList.Add( TMyObj.Create );
  finally
    // und wieder freigeben
    MyList.Free;
  end;
end;
Das gibt auch kein Speicherleck, da TObjectList.Create( True ) eine Liste erzeugt, die alle Objekte der Liste automatisch freigibt.

Somit solltest du deinen Ansatz mit dem ganzen Zeigergeraffel grundlegend über Bord werfen.

Zu deiner Klasse selber
Delphi-Quellcode:
TFahrtRichtung = ( frRunter, frHoch );

//FahrstuhlKabine = class
TFahrstuhlKabine = class
  // diese Felder sind alle published ... eher unvorteilhaft
  // Der Zugriff sollte über Properties geregelt werden
      F_id: cardinal;
      //fahrtrichtung: bool; // 1 = hoch // 0 = runter
      Fahrtrichtung : TFahrtRichtung;
      In_Benutzung: bool;
      Fahrtzeit: real;
      gewaehlteEtagen: pgewEt;
      speed: real;
      EtageV, EtageB, zulGewicht: integer;
      niAnEt: pNiAnEt;
    private
      F_position, F_tatsGewicht: real;
    public
      testvar:integer;
      property id: cardinal read F_id write F_id;
      property position:real read F_position write F_position;
      property tatsGewicht:real read F_tatsGewicht write F_tatsGewicht;
      constructor init(id_in:cardinal; zulGewicht_in, EtageV_in, EtageB_in: integer; sNiAnEt: string);

      // !!! NEIN !!!
      // destructor destruct();

      destructor Destroy; override;

      function zielAnfahren(Ziel:integer):bool;
      procedure set_Zieletage();
      procedure Notruf();
      function lastprobe():bool;
      function geschwindigkeitsmessung():bool;
      procedure notfallbremsen();
      function test():integer;
    end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (12. Jun 2013 um 16:48 Uhr)
  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 12:48 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