Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi [OOP] Eigenschaften werden gelöscht (https://www.delphipraxis.net/115624-%5Boop%5D-eigenschaften-werden-geloescht.html)

Desmulator 15. Jun 2008 07:56


[OOP] Eigenschaften werden gelöscht
 
Guten Morgen,
ich habe das Problem, dass Eigenschaften, die in einer Methode gesetzt werden, nach ihrem Aufruf fehlerhaft oder gar nicht gesetzt sind. Ich habe keine Ahnung woran es liegen könnte.

Aufruf:
Delphi-Quellcode:
  WndClass := TWindowClass.Create('Main');
  WndClass.RegisterClass;
  WndClass.NewWindow('Test',Wnd); //Um diese Methode handelt es sich
Methode:
Delphi-Quellcode:
procedure TWindowClass.NewWindow(Name : PAnsiChar; var Wnd : TWindow);
begin
  { Fehler abfangen }
  try
    { Prüfen ob Klasse erstellt ist }
    if self.ClassRegistered then begin
      { Neues Fenster erstellen }
      Wnd := TWindow.Create(self.ClassName,Name);
      { Speichern der neuen Anzahl }
      //self.ClassWindows := self.WindowsNumber + 1;
      Inc(self.ClassWindows); //Dieser Wert ist Anfangs richtig ( 1 )
      { Speichern des Handles }
      self.ClassWindowList[ClassWindows-1] := @Wnd; //Nach diesem Schritt ist er irgendwo im 150er Bereich
      ReadLn; //ClassWindowList enthält nur nils
      //ReadLn: Testzwecke...
    end else
      { Fehler ausgeben }
      raise EClassNotRegistered.Create;
  except
    { Erneut auswerfen }
    raise ;
  end;
end;
Objekt:
Delphi-Quellcode:
  TWindowClass = class(TObject)
  private
    { ClassWindows : Zählt die Anzahl der Fenster }
    ClassWindows : Byte;
    { ClassWindowList : Enthält alle Fenster der Klasse }
    ClassWindowList : TWindowList;
TWindowList
Delphi-Quellcode:
  { TWindowList : Stellt eine Liste von Fenstern da }
  TWindowList = array[1..256] of ^TWindow;
Ich hoffe ihr wisst wo da der Fehler liegt...

alzaimar 15. Jun 2008 08:01

Re: [OOP] Eigenschaften werden gelöscht
 
1.Array geht von 1..256, Du schreibst aber in Array[0] (so wird der counter überschrieben)
2.Objektinstanzen sind bereits Zeiger, Ergo schmeiss '^' und '@' raus.

Desmulator 15. Jun 2008 12:42

Re: [OOP] Eigenschaften werden gelöscht
 
Ahja, danke. :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:54 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