Initialisieren eines "Object" [gelöst]

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Initialisieren eines "Object" [gelöst]

Beitrag von corpsman »

Servus zusammen
ich brauche da grad einen Record mit ein Paar funktionen und dachte ich nehme mal Kein TObject und all den OOP Gedöns, sondern mach mir das als Object (weil es so schön statisch ist und kein .free braucht ;), und der Stack ist ja groß genug )

Code: Alles auswählen

  TBoolStack = Object
    Stack: Array[0..2047] Of boolean;
    StackPtr: Integer; // Wie initialisiert man den ?
    Procedure Push(Value: Boolean);
    Function Pop(): Boolean;
  End;  
So die Deklaration meines Object und genutzt wird es natürlich ganz einfach:

Code: Alles auswählen

Procedure OnButtonClick(Sender:TObject);
var Stack:TBoolStack;
begin
  stack.StackPtr := -1; // Init des Stacks als Leer
  ..
  stack.push(true);
  ..
  stack.pop;
end;
Habe ich Hier überlesen wie das mit dem Init geht, oder geht das tatsächlich nicht ?
Zuletzt geändert von corpsman am Do 19. Aug 2021, 10:44, insgesamt 1-mal geändert.
--
Just try it

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1432
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Initialisieren eines "Object"

Beitrag von fliegermichl »

Normalerweise definiert man einen Constructor Init.
Dabei werden alle Felder initialisiert und eigene von 0 abweichende Initialisierungen macht man dann eben selbst

Code: Alles auswählen

type
 TBoolStack = object
    Stack: Array[0..2047] Of boolean;
    StackPtr: Integer; // Wie initialisiert man den ?
    constructor Init;
    Procedure Push(Value: Boolean);
    Function Pop(): Boolean; 
  end;
  
 constructor TBoolStack.Init;
 begin
  StackPtr := -1;
 end;
 
 var bs : TBoolStack;
 begin
  bs.Init;
  ...
 end.

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1496
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: Initialisieren eines "Object"

Beitrag von corpsman »

@fliegermichl
Thx, damit bestätigst du meine Meinung und im Forum ist nun dokumentiert wie man es machen sollte ;)
--
Just try it

Antworten