AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eigener Typ bei Funktion als Rückgabe - aber wie am besten?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Mazel · begonnen am 23. Okt 2007 · letzter Beitrag vom 24. Okt 2007
Antwort Antwort
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

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

  Alt 23. Okt 2007, 19:49
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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

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

  Alt 23. Okt 2007, 19:51
Der richtige und gleichzeitg resourcenschonende Weg ist der über die Variable.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

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

  Alt 23. Okt 2007, 19:52
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#4

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

  Alt 23. Okt 2007, 19:53
Am allerbesten ist meiner Meinung nach die 3. Variante - mit With, welche bei eingeschalteter Optimierung allerdings gleichwertig zur Variante mit der Variable sein sollte.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#5

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

  Alt 23. Okt 2007, 19:55
Das ist sie bei deaktivierter Optimierung auch.. Allerdings ist das Delphi-With ziemlich krank und sollte vermieden werden
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

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

  Alt 23. Okt 2007, 20:01
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 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?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#7

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

  Alt 23. Okt 2007, 21:17
Zitat von Mazel:
Ist Delphi-With unheilbar krank oder kann man da noch das ein oder andere retten?
Mit rekonstruktiver Chirurgie a la Chrome lässt sich da noch was machen
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

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

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

  Alt 24. Okt 2007, 09:03
Zitat von Dax:
Zitat von Mazel:
Ist Delphi-With unheilbar krank oder kann man da noch das ein oder andere retten?
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.
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
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

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

  Alt 24. Okt 2007, 15:49
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.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  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 02:17 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