AGB  ·  Datenschutz  ·  Impressum  







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

Klasse mit vordefinierter Variable?

Ein Thema von moelski · begonnen am 10. Aug 2006 · letzter Beitrag vom 10. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:24
Moin !

Ich baue gerade den Inhalt einer Unit in eine Klasse um. Folgende Deklaration:
Delphi-Quellcode:
type
  TLVSpectraII = class(TObject)
    public
      function 1.....;
      function 2.....;
    private
      EnergieSumme: Double; // 1
      _LastZellenzahl : Byte = 0; // 2
  end;
Die Deklaration der Variable (1) geht ja ohne Probleme. Aber die bei (2) nicht.
Kann mir jemand sagen wie ich das am besten machen kann?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:27
zu (2):
das geht so nicht. Kannst aber im Constructor (MyClass.Create) den Wert zuweisen.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:40
mit properties kann man das per default-wert machen, geht dann IMO nicht private

Delphi-Quellcode:
  TLVSpectraII = class(TObject)
  private
    F_LastZellenzahl: Byte;
    procedure Set_LastZellenzahl(const Value: Byte);
  published
    property _LastZellenzahl : Byte read F_LastZellenzahl write Set_LastZellenzahl default 0;
  end;
oder kleiner

Delphi-Quellcode:
  TLVSpectraII = class(TObject)
  private
    F_LastZellenzahl: Byte;
  published
    property _LastZellenzahl : Byte read F_LastZellenzahl write F_LastZellenzahl default 0;
  end;
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#4

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:43
Du könntest auch einfach über der Klassendeklaration dir noch zusätzliche Konstanten deklarieren.
Delphi-Quellcode:
const
  _LastZellenzahl: Byte = 0;

type
  TLVSpectraII = class(TObject)
    public
      function 1.....;
      function 2.....;
    private
      EnergieSumme: Double; // 1
      //_LastZellenzahl : Byte = 0; // 2
  end;
Manuel
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:48
Moin !

Ich habe es jetzt mal so probiert:
Delphi-Quellcode:
type
  TLVSpectraII = class(TObject)
    public
      constructor Create(Owner: TObject); override;

      function 1....;
    private
      EnergieSumme: Double; //
      _LastZellenzahl : Byte; //
  end;
Delphi-Quellcode:
constructor TLVSpectraII.Create(Owner: TObject);
begin
  inherited Create(Owner); // Geerbten Konstruktor aufrufen.
  _LastZellenzahl := 0; // Variablen vor erster benutzung setzen
  _LastZyklus := 0;
  _LastStatus := 0;
  _LastTimeTicker := 0;
end;
Da kriege ich aber den Fehler "Eine statische Methode kann nicht überschrieben werden".

Lasse ich Override weg, dann kriege ich in constructor TLVSpectraII.Create... folgende Meldung "Zu viele Parameter".

Hmm, was ist hier nun falsch?

@H4ndy:
Könnte man machen. Aber was ist wenn ich ein neues Objekt über TLVSpectraII.Create erzeuge. Werden die Constanten dann auch neu angelegt?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:50
Der default Wert bei den Propertys ist KEIN Vorgabewert, der automatisch zugewiesen wird.

Der default Wert sagt nur dem Formulardesigner, bei welchem Wert er nichts in die Formularressource schreiben muss, weil es sowieso auf dem Vorgabewert ist.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:52
Zitat von 3_of_8:
Der default Wert bei den Propertys ist KEIN Vorgabewert, der automatisch zugewiesen wird.

Der default Wert sagt nur dem Formulardesigner, bei welchem Wert er nichts in die Formularressource schreiben muss, weil es sowieso auf dem Vorgabewert ist.

jetzt wo dus sagst. das kommt davon, wenn man dinge vorschlägt, die man selbst nicht nutzt.
Sven Harazim
--
  Mit Zitat antworten Zitat
Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.664 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:55
Zitat von moelski:
Hmm, was ist hier nun falsch?
lass override weg und im Create nur

inherited Create;
Sven Harazim
--
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:57
Moin !

@sh17:
Also kann ich doch im Create meine Variablen setzen?


Wie ist es mit dem
Delphi-Quellcode:
 const
  _LastZellenzahl: Byte = 0;

type
  TLVSpectraII = class(TObject)
  .......
Wird das pro Objekt angelegt?
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#10

Re: Klasse mit vordefinierter Variable?

  Alt 10. Aug 2006, 08:59
Zitat von moelski:
@H4ndy:
Könnte man machen. Aber was ist wenn ich ein neues Objekt über TLVSpectraII.Create erzeuge. Werden die Constanten dann auch neu angelegt?
Also eigentlich dürfte das immer im Kontext der Unit arbeiten,
in der du die Klasse deklariert hast. Da du ja zur Zugriff
auf die Konstante innerhalb der Klassen-Methoden brauchst,
sehe ich darin kein Problem das so zu machen.

Zitat von moelski:
Da kriege ich aber den Fehler "Eine statische Methode kann nicht überschrieben werden".
Lasse ich Override weg, dann kriege ich in constructor TLVSpectraII.Create... folgende Meldung "Zu viele Parameter".
Von TObject abgeleitet Klassen haben keinen Owner-Parameter.

Delphi-Quellcode:
TLVSpectraII = class(TObject)
    public
      constructor Create;

      function 1....;
    private
      EnergieSumme: Double; //
      _LastZellenzahl : Byte; //
  end;

constructor TLVSpectraII.Create;
begin
  inherited Create; // Geerbten Konstruktor aufrufen.
  _LastZellenzahl := 0; // Variablen vor erster benutzung setzen
  _LastZyklus := 0;
  _LastStatus := 0;
  _LastTimeTicker := 0;
end;
(Im Gegensatz zum Create musst du Destroy immer überschreiben, aber auch da das "inherited Destroy;" nicht vergessen)
Manuel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 07:48 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