AGB  ·  Datenschutz  ·  Impressum  







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

Einfache proceduren/function sinnvoll?

Ein Thema von Chris30 · begonnen am 19. Nov 2020 · letzter Beitrag vom 20. Nov 2020
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#1

AW: Einfache proceduren/function sinnvoll?

  Alt 19. Nov 2020, 17:25
Jupp, statt einer Get-Methode und vielleicht auch noch einer setWert1AsReal, lässt sich ein Property bestimmt intuitiver nutzen.

Vor allem wenn man bedenkt, wo man noch alles etwas einsparen/kombinieren/vereinheitlichen kann.
Delphi-Quellcode:
type
  TTest = class
  private
    function GetWertAsReal(Index: Integer): Real;
    procedure SetWertAsReal(Index: Integer; Value: Real);
  public
    //Werte: array[1..2] of String;
    Wert1: String;
    Wert2: String;
    property Wert1AsReal: Real index 1 read GetWertAsReal write SetWertAsReal;
    property Wert2AsReal: Real index 2 read GetWertAsReal write SetWertAsReal;

    property WertAsReal[Index: Integer]: Real read GetWertAsReal write SetWertAsReal; // hier im Getter/Setter die Bereichsprüfung nicht vergessen
  end;

procedure TTest.GetWertAsReal(Index: Integer): Real;
{
begin
  Result := wandleStringZuReal(Werte[Index]);
end;
}

var
  S: String;
begin
  case Index of
    1: S := Wert1;
    2: S := Wert2;
  end;
  Result := wandleStringZuReal(S);
end;
{
begin
  case Index of
    1: Result := wandleStringZuReal(Wert1);
    2: Result := wandleStringZuReal(Wert2);
    else Result := 0; // wegen Compilerwarnung
  end;
end;
}
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (19. Nov 2020 um 17:32 Uhr)
  Mit Zitat antworten Zitat
Chris30

Registriert seit: 19. Nov 2020
6 Beiträge
 
#2

AW: Einfache proceduren/function sinnvoll?

  Alt 20. Nov 2020, 07:08
Guten Morgen,

erstmal vielen Dank an alle die bisher geantwortet haben.
Eine Frage zu Properties hätte ich jetzt noch.

Nutzt man diese um intuitiver arbeiten zu können?
Oder gibt es noch andere unterschiede zu Standard getter und setter Methoden wie man sie vielleicht aus Java kennt?
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.698 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Einfache proceduren/function sinnvoll?

  Alt 20. Nov 2020, 16:31
Eine Frage zu Properties hätte ich jetzt noch.

Nutzt man diese um intuitiver arbeiten zu können?
Oder gibt es noch andere unterschiede zu Standard getter und setter Methoden wie man sie vielleicht aus Java kennt?
Properties können noch als published deklariert werden, dann kann man per Runtime Type Information (RTTI) darauf zugreifen. Neuere Delphis können das auch für nicht-published Properties.

Aber das geht jetzt deutlch über die normale Verwendung von Properties hinaus.

Anders als bei Java kann aber eine Property auch direkt auf ein Feld verweisen oder ein Feld direkt lesen aber per Setter-Methode schreiben:
Delphi-Quellcode:
type
  TMyClass
  private
    FMyField: integer;
    procedure SetMyField(_Value: integer);
  public
    property MyField: integer read FMyField write SetMyField;
  end;

Ach ja, dann gibt es noch Array-Properties:

Delphi-Quellcode:
type
  TMyClass
  private
    function GetMyProperty(_Idx: integer): string;
    procedure SetMyProperty(_Idx: integer, const _Value: string);
  public
    property MyProperty[_Idx: integer]: string read GetMyProeprty write SetMyProperty;
Eine solche Array-Property kann auch noch als default deklariert werden, so das man beim Zugriff den Namen weglassen kann. Das wird z.B. bei TStringList verwendet, eigentlich muesste man da auf die Items-Property zugreifen, es geht aber auch so:

Delphi-Quellcode:
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add('bla');
  WriteLn(sl[0]);
  WriteLn(sl.Items[0]);
Thomas Mueller
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.119 Beiträge
 
Delphi 2009 Professional
 
#4

AW: Einfache proceduren/function sinnvoll?

  Alt 20. Nov 2020, 20:21
Nutzt man diese um intuitiver arbeiten zu können?
Prinzipiell ja.
Button1.Width := Button1.Width + 1; ist denke ich übersichtlicher als Button1.SetWidth(Button1.GetWidth() + 1); .

Wo die Grenze zwischen Funktionen und Eigenschaften liegt, frage ich mich aber auch manchmal, vor allem wenn ich eine Nur-Lesen-Eigenschaft habe. Spätestens, wenn ich eine Funktion einer Klasse schreibe, deren Name mit Get anfängt, muss ich mich unweigerlich fragen, warum ich das keine Eigenschaft ist. Vielleicht hat da ja einer eine Regel für sich.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.401 Beiträge
 
Delphi 12 Athens
 
#5

AW: Einfache proceduren/function sinnvoll?

  Alt 20. Nov 2020, 23:09
Von der Verwendung her sieht Funktion und Readonly-Property gleich aus.
Und vom compilierten Code her macht es auch keinen Unterschied.

Anders wird es, sobald es Parameter gibt, also ob ( ) oder [ ].
Hier wird es einfacher sich zu unterscheiden, also Anhand was da für Parameter rein gehn.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz