Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   C# Exception bei property-Deklaration (https://www.delphipraxis.net/43438-exception-bei-property-deklaration.html)

malo 4. Apr 2005 00:53


Exception bei property-Deklaration
 
Hier deklariere ich eine Eigenschaft:

Code:
public int Abfrage {
  get {
    return Abfrage;// Fehler
  }
  set {
    if (value != Abfrage) Abfrage = value;
  }
}
Jetzt wird bei der get-Zugriffsmethode aber eine Exceptioni ausgelöst...

Zitat:

Projekt Projekt4.exe traf auf die unbehandelte Exception-Klasse System.StackOverflowExcetion.
Warum passiert das???

Die Eigenschaft steht in einer selbst erstellten Klasse. Hier einmal die Instanzerzeugung:

Code:
einkauf Einkauf = new einkauf();
Ich hab auch schon in einem seperaten Projekt getestet, ob diese Eigenschaft oben eine Fehlermeldung gibt (da aber in der Hauptklasse). Da funktioniert es, nur hier nicht... :?




Hat jemand 'ne Idee, was das sein könnte?

Muetze1 4. Apr 2005 01:01

Re: Exception bei property-Deklaration
 
Moin!

Hmm, die Property heisst "Abfrage" - und wenn sie gelesen wird, dann soll sie den Wert der Property "Abfrage" zurückliefern, die wiederrum, wenn sie gelesen wird, den Wert der Property "Abfrage" zurückliefert, welche, wenn sie gelesen wird, den Wert der Property "Abfrage" zurückliefert, welche aber nur den Wert der Property "Abfrage" zurück gibt, diese gibt aber immer nur den Wert der Property "Abfrage" zurück....

Ich habe kein Bock und könnte hier aber noch seitenweise schreiben, bis die Message zu gross wird (vergleichbar mit dem System.StackOverflowExcetion...)

Alles klar?

Variablen immer anders benennen als die Properties. Der Compiler nimmt bei Namensgleichheit eh die am besten sichtbarste und die höchste Sichtbarkeit hat eine öffentliche Property - vor dem Klassenmember Variable...

MfG
Muetze1

malo 4. Apr 2005 01:17

Re: Exception bei property-Deklaration
 
Hm, danke... ich will aber nun die Property lesen können und den aktuellen Wert herauslesen. Eigentlich wollte ich statt der Property eine Variable nehmen, aber ich wurde im Chat beschimpft, als ich nach globalen Variablen in C# gefragt hab :mrgreen:

Deshalb hab ich das als Property umgeschrieben... und jetzt weiß ich nicht, wie ich den Wert ermitteln kann :?

Übrigens ist in meinem Buch "Die C# Programmiersprache" ein ähnliches Beispiel:

Code:
public int count {
  get { return count; }
}
Und da scheint sowas ja nciht aufzutreten :?

Hansa 4. Apr 2005 01:32

Re: Exception bei property-Deklaration
 
Zitat:

Zitat von malo
...aber ich wurde im Chat beschimpft, als ich nach globalen Variablen in C# gefragt hab...

Frage das doch im C-Forum. Die sind für so was zuständig. 8) Das nützt hier nur wenig, denn soweit ich das mitgekriegt habe, sollen hier Programme gemacht werden, die irgendwann auch funktionieren. :mrgreen:

malo 4. Apr 2005 01:54

Re: Exception bei property-Deklaration
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von malo
...aber ich wurde im Chat beschimpft, als ich nach globalen Variablen in C# gefragt hab...

Frage das doch im C-Forum. Die sind für so was zuständig. 8) Das nützt hier nur wenig, denn soweit ich das mitgekriegt habe, sollen hier Programme gemacht werden, die irgendwann auch funktionieren. :mrgreen:

Solche Sprüche sind immer schön und gut, aber dann biete doch wenigstens eine vernünftige Alternative, die auch irgendwann funktioniert ;)

Hansa 4. Apr 2005 02:21

Re: Exception bei property-Deklaration
 
Die Alternative habe ich doch beschrieben : C-Forum. Wenn Du das mit C machen willst, dann frage doch nicht in einem Delphi-Forum. Allerdings war so was schon zu erwarten mit der C# Auswahl. 8) Die C-Syntax bietet sehr viel Anlaß zum Nachfragen und ist sehr schwer zu lesen.

Edit : Mütze hat besser geguckt als ich. Trotz C ist der Code nicht astrein. In Delphi wäre es kaum besser. Wobei ich aber bezweifle, daß dann so was überhaupt compiliert würde.

MagicAndre1981 4. Apr 2005 08:20

Re: Exception bei property-Deklaration
 
Warum in einem C-Forum fragen.

Code:
private int abfrage = 0;
1. Deine variable abfrage definieren

Code:
public int Abfrage
{
    get
    {
         return abfrage;
    }
   
    set
    {
        if (value != abfrage)
            abfrage = value;
    }
}
2. das Property:
du hast immer dem Properety den neuen Wert zu gewiesen oder auslesen wollen, was falsch ist. Mit Propertties kommst du am private Variablen deiner Klasse ran. Du hast die Variable "abfrage" nicht mit dem Property "Abfrage" verwechselt.

Code:
MessageBox.Show(Abfrage.ToString());
Abfrage = 25;
MessageBox.Show(Abfrage.ToString());
3. Das Property nutzen. Jetzt weißt du deiner privaten Variable "abfrage" einen Wert zu oder rufst ihn ab ohne die Variable als public zu definieren.

André

MathiasSimmack 4. Apr 2005 08:40

Re: Exception bei property-Deklaration
 
Zitat:

Zitat von Hansa
Die Alternative habe ich doch beschrieben : C-Forum. Wenn Du das mit C machen willst, dann frage doch nicht in einem Delphi-Forum. Allerdings war so was schon zu erwarten mit der C# Auswahl.

Sorry, Hansa, aber da C# nun mal Teil von Delphi 2005 ist, gehören auch Fragen hier rein. Ich find´s gut, ich muss ja keinem erzählen, dass ich kein Delphi 2005 habe ... :mrgreen:

Zitat:

Die C-Syntax bietet sehr viel Anlaß zum Nachfragen und ist sehr schwer zu lesen.
Das stimmt nicht. Mit etwas Erfahrung in JavaScript, Perl, PHP, ... ist es eigentlich ganz einfach. Und selbst ohne diese Erfahrungen gewöhnt man sich schnell dran.

malo 4. Apr 2005 13:44

Re: Exception bei property-Deklaration
 
Ah, danke Leute! :thumb:


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