Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigener Typ bei Funktion als Rückgabe - aber wie am besten? (https://www.delphipraxis.net/102115-eigener-typ-bei-funktion-als-rueckgabe-aber-wie-am-besten.html)

Mazel 23. Okt 2007 18:49


Eigener Typ bei Funktion als Rückgabe - aber wie am besten?
 
Hallo,

ich habe einen Typ definiert den ich als Rückgabe einer Funktion verwende. Nun stellt sich bei mir aber die Frage, wie es richtig sein müsste. Folgendes Beispiel soll zeigen was ich meine:
Delphi-Quellcode:
type
 TEigenerTyp = record
    Wert1            : String[50];
    Wert2            : String[50];
  end;

function TForm1.FunktionAB: TEigenerTyp;
begin
 Result.Wert1 := 'AAAA';
 Result.Wert2 := 'BBBB';
end;

// Variante A
procedure TForm1.Button1Click(Sender: TObject);
begin
 Caption := FunktionAB.Wert1;
 Label1.Caption := FunktionAB.Wert2;
end;

// Variante B
procedure TForm1.Button1Click(Sender: TObject);
var
 EigenerTyp: TEigenerTyp;

begin
 EigenerTyp := FunktionAB;
 Caption := EigenerTyp.Wert1;
 Label1.Caption := EigenerTyp.Wert2;
end;
Die Frage ist sicherlich eindeutig zu erkennen: Sollte ich erst eine Variable deklarieren oder gleich den Wert aus der Funktion entnehmen? Was ist Resourcen schonender und was ist eigentlich der richtige Weg?

Gruß
Mazel

Dax 23. Okt 2007 18:51

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Der richtige und gleichzeitg resourcenschonende Weg ist der über die Variable.

SirThornberry 23. Okt 2007 18:52

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Variante2 ist besser da die Funktion dann nicht 2 mal aufgerufen wird. Stell dir vor deine Funktion würde umfangreiche Berechnungen machen, dann würdest du massig Rechenzeit verbraten.

Apollonius 23. Okt 2007 18:53

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Am allerbesten ist meiner Meinung nach die 3. Variante - mit With, welche bei eingeschalteter Optimierung allerdings gleichwertig zur Variante mit der Variable sein sollte.

Dax 23. Okt 2007 18:55

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Das ist sie bei deaktivierter Optimierung auch.. Allerdings ist das Delphi-With ziemlich krank und sollte vermieden werden ;)

Mazel 23. Okt 2007 19:01

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Danke für die schnellen Antworten.

In der Tat wird jede halbe Sekunde die Funktion verwendet und es müsste bei der Variante A alles schnell berechnet werden.

Ich konnte mir schon denken, dass Variante B logisch besser ist, aber aus irgend einen Grund hatte ich die Variante A ausprobiert und es ging, daher meine Überlegung.

Zitat:

Zitat von Dax
Das ist sie bei deaktivierter Optimierung auch.. Allerdings ist das Delphi-With ziemlich krank und sollte vermieden werden ;)

Ist Delphi-With unheilbar krank oder kann man da noch das ein oder andere retten? :cyclops:

Dax 23. Okt 2007 20:17

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Zitat:

Zitat von Mazel
Ist Delphi-With unheilbar krank oder kann man da noch das ein oder andere retten? :cyclops:

Mit rekonstruktiver Chirurgie a la Chrome lässt sich da noch was machen ;)

RavenIV 24. Okt 2007 08:03

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Zitat:

Zitat von Dax
Zitat:

Zitat von Mazel
Ist Delphi-With unheilbar krank oder kann man da noch das ein oder andere retten? :cyclops:

Mit rekonstruktiver Chirurgie a la Chrome lässt sich da noch was machen ;)

Ich finde auch, dass das with aus dem Sprachgebrauch gelöscht werden sollte.
Mach Dich mal auf die Suche hier im Forum und Du wirst die tollsten Kommentare lesen.
Es gibt Leute, die fast nur damit arbeiten. Dann gibt es wieder solche wie mich, die Magenkrämpfe bei jedem with bekommen.
Solange ich keinen Code von Dir zu Gesicht bekomme, sei es Dir überlassen, ob Du with nutzt oder nicht.

Apollonius 24. Okt 2007 14:49

Re: Eigener Typ bei Funktion als Rückgabe - aber wie am best
 
Zitat:

Es gibt Leute, die fast nur damit arbeiten.
Könnte durchaus sein, dass ich zu diesen Leuten gehöre. Ich will so viele lokale Variablen wie möglich vermeiden, und ich halte with gerade in so einem Fall wie hier für sehr praktisch.
So, und jetzt lyncht mich.


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