AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert
Thema durchsuchen
Ansicht
Themen-Optionen

Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

Ein Thema von FriendOfDelphi · begonnen am 14. Okt 2010 · letzter Beitrag vom 15. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#1

Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 14. Okt 2010, 13:50
Delphi-Version: 5
Hallo Allerseits,

ich habe eine Frage zu Methoden mit Rückgabewert.

Ich hatte zunächst folgende Methode und Eigenschaft implementiert:
Delphi-Quellcode:
procedure SetzeBetriebsArt(iBetriebsArt: integer);

property BetriebsArt: integer read FiBetriebsArt write SetzeBetriebsArt;
Nun wollte ich, dass die Methode einen Rückgabewert liefert und habe die Prozedur in eine Funktion verändert:
Delphi-Quellcode:
function SetzeBetriebsArt(iBetriebsArt: integer): integer;

property BetriebsArt: integer read FiBetriebsArt write SetzeBetriebsArt;
Jetzt meldet der Compiler "Inkompatible Typen" in der Programmzeile, in der die property deklariert ist.

Was mache ich falsch?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 14. Okt 2010, 13:52
Der Setter ist immer eine procedure der Getter eine function

Wenn du was anderes haben möchtest, gerne, aber nicht mehr als Getter oder Setter
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)
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#3

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 14. Okt 2010, 15:17
Der Setter ist immer eine procedure der Getter eine function

Wenn du was anderes haben möchtest, gerne, aber nicht mehr als Getter oder Setter
Heißt das, dass ein Setter nur als Prozedur realisiert werden und daher keine Information zurück geben kann?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 14. Okt 2010, 15:20
So isses. Mach doch einmal spaßhalber folgendes: schreibe in den public- oder published-Abschnitt Deiner Klasse
property TestProp: integer read GetTestProp write SetTestProp; und drücke anschließend STRG-SHIFT-C. Nun solltest Du sehen können, wie das auszusehen hat.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#5

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 15. Nov 2010, 09:42
So isses. Mach doch einmal spaßhalber folgendes: schreibe in den public- oder published-Abschnitt Deiner Klasse
property TestProp: integer read GetTestProp write SetTestProp; und drücke anschließend STRG-SHIFT-C. Nun solltest Du sehen können, wie das auszusehen hat.
Durch die Tastenkombination wird ja automatisch die Struktur für den Getter und den Setter erstellt:
Delphi-Quellcode:
function TForm1.GetTestProp: integer;
begin

end;

procedure TForm1.SetTestProp(const Value: integer);
begin

end;
Aber warum ist der Getter eine Funktion und der Setter eine Prozedur und nicht umgekehrt?
Ich möchte doch eine Rückmeldung darüber haben, ob das Ändern von "TestProp" funktioniert hat, oder ob ein Fehler aufgetreten ist. Und das ginge doch nur über "result" in einer Funktion? Wo liegt hier mein Denkfehler?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 15. Nov 2010, 09:45
Der Getter gibt den aktuellen Wert der Property zurück (Funktion), der Setter soll den Wert neu setzen (Prozedur). Es steht Dir aber frei, im Setter ggf. eine Exception zu werfen, dann weißt Du, ob die Zuweisung funktioniert hat.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
FriendOfDelphi

Registriert seit: 21. Mai 2010
163 Beiträge
 
Delphi 5 Professional
 
#7

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 15. Nov 2010, 10:12
Der Getter gibt den aktuellen Wert der Property zurück (Funktion), der Setter soll den Wert neu setzen (Prozedur). Es steht Dir aber frei, im Setter ggf. eine Exception zu werfen, dann weißt Du, ob die Zuweisung funktioniert hat.
Wenn ich die Fehlerbehandlung über eine Exception abwickle, müsste ich z.B. eine öffentliche Variable "Error" einführen.
Dann würde dies innerhalb der Setter-Prozedur stehen:
Delphi-Quellcode:
try
 if (value<10) then
   begin
     TestProp := 1;
     Error :=0;
   end;
except
  Error := 1;
end;
Ich hätte aber lieber im aufrufenden Quellcode eine Rückmeldung wie:
Delphi-Quellcode:
[...]
Mache irgendwas...
Ergebnis:=SetTestProp(9); //Ergebnis soll dann gleich 0 sein

Ergebnis:=SetTestProp(99); //Ergebnis soll dann gleich 1 sein
[...]
Geht das auch?
Herzlichen Gruß
FriendOfDelphi
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 15. Nov 2010, 10:20
Nochmal: der Setter ist immer eine Prozedur. Du könntest aber verschiedene Exception-Klassen definieren und diese dann entsprechend auslösen. Im aufrufenden Programm brauchst Du dann einen try-except-Block. Ungetestet:
Delphi-Quellcode:
type
  EValueTooSmall = class(Exception);
  EValueTooLarge = class(Exception);

procedure TDeineKlasse.SetTestProp(const value: integer);
begin
  if value < 10 then
    raise EValueTooSmall.Create('Der Wert muss mindestens 10 betragen.')
  else if value > 100 then
    raise EValueTooLarge.Create('Der Wert darf maximal 100 betragen.')
  else
    FTestProp := value;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

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

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 15. Nov 2010, 10:21
Der Getter gibt den aktuellen Wert der Property zurück (Funktion), der Setter soll den Wert neu setzen (Prozedur). Es steht Dir aber frei, im Setter ggf. eine Exception zu werfen, dann weißt Du, ob die Zuweisung funktioniert hat.
Wenn ich die Fehlerbehandlung über eine Exception abwickle, müsste ich z.B. eine öffentliche Variable "Error" einführen.
Dann würde dies innerhalb der Setter-Prozedur stehen:
Delphi-Quellcode:
try
 if (value<10) then
   begin
     TestProp := 1;
     Error :=0;
   end;
except
  Error := 1;
end;
Ich hätte aber lieber im aufrufenden Quellcode eine Rückmeldung wie:
Delphi-Quellcode:
[...]
Mache irgendwas...
Ergebnis:=SetTestProp(9); //Ergebnis soll dann gleich 0 sein

Ergebnis:=SetTestProp(99); //Ergebnis soll dann gleich 1 sein
[...]
Geht das auch?
Dann schreib dir doch sowas ...

Es geht aber NICHT als Setter einer Property
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)
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Eigenschaften in Zusammenhang mit Methoden mit Rückgabewert

  Alt 15. Nov 2010, 13:23
Kleine Frage: Wie stellst du dir das vor? Wie willst du das "Ergebnis" bekommen?
Delphi-Quellcode:
// Normal, mit Procedure als Setter:
Klasse.Eigenschaft := 10;

// Ausgedacht, mit Funktion als Setter:
Ergebnis := Klasse.Eigenschaft := 10;
Denk doch mal kurz darüber nach.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  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 19:18 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