Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi function mit zwei Rückgabewerten? (https://www.delphipraxis.net/75739-function-mit-zwei-rueckgabewerten.html)

3_of_8 24. Aug 2006 12:50

Re: function mit zwei Rückgabewerten?
 
Wie bitte? Du willst tatsächlich alles in einen String speichern? Du weißt schon, dass das unglaublich ineffezient ist? Erstmal muss Speicher für den String reserviert werden, dann wird der alte String in den neuen kopiert, dann wird der Wert (Integer, Float, wasweißich) nach String gecastet und in den String reingespeichert und beim auslesen das ganze nochmal umgekehrt und zusätzlich Schleifengefummel mit pos.

Das ist eine absolut unsaubere und langsame Methode. Benutze records oder vars, wobei ich eher zu records tendiere.

Wenn du eine Variable nicht ändern willst, dann deklariere den Parameter einfach ohne var. Oder, falls du var brauchst, deklariere dir eine Hilfsvariable, in die du den Wert speicherst.

Edit: @JasonDX: Das Wort ist "noobig".

Garfield 24. Aug 2006 14:07

Re: function mit zwei Rückgabewerten?
 
Zitat:

Zitat von ---Bernhard---
Du musst 'result' verwenden:

Man sollte Result verwenden. Es ist auch möglich den Namen der Funktion zu verwenden.

Neutral General 24. Aug 2006 14:57

Re: function mit zwei Rückgabewerten?
 
Zitat:

Zitat von Garfield
Zitat:

Zitat von ---Bernhard---
Du musst 'result' verwenden:

Man sollte Result verwenden. Es ist auch möglich den Namen der Funktion zu verwenden.

...was zu Pascal-Zeiten die einzige Möglichkeit war ;)
Hatte das weiter oben aus Zeitmangel bisschen falsch gehabt... :oops:

RavenIV 24. Aug 2006 15:17

Re: function mit zwei Rückgabewerten?
 
/ganz schön offtopic inzwischen

Zitat:

Zitat von JasonDX
Nee, ganz sicher nicht. with ist mehr eine Hilfe beim programmieren,

Meiner Meinung nach ist with eine Hilfe für schreibfaule Programmierer.
es ist kontraproduktiv, wenn ich erst schauen muss, zu welchem with die Variable jetzt gehört. Und ganz toll wird es bei verschachtelten with.

Und hast Du mal mit D7 debuggen müssen, wenn im Code einige with drin sind?
Der Debugger kann das dann nämlich nicht auflösen und zeigt beim drüberfahren keinen Wert für die Variable an.

Delphi-Quellcode:
with taMeineTabelle do
begin
  ...hier sind 20 Zeilen Code...
  Database := MeineDatenbank;
  TableName := MeineTabelle;
  Open;
  FieldByName ('MeinFeld').AsString := MeinString;
  ...hier ist nochmehr Code...
end;
ist das vielleicht übersichtlich?

JasonDX 24. Aug 2006 15:28

Re: function mit zwei Rückgabewerten?
 
Zitat:

Zitat von RavenIV
Zitat:

Zitat von JasonDX
Nee, ganz sicher nicht. with ist mehr eine Hilfe beim programmieren,

Meiner Meinung nach ist with eine Hilfe für schreibfaule Programmierer.
es ist kontraproduktiv, wenn ich erst schauen muss, zu welchem with die Variable jetzt gehört. Und ganz toll wird es bei verschachtelten with.

Klar, ich kann jedes Konstrukt so verwenden, dass ich den Code anschliessend nicht mehr lesen kann, aber fuer mich ist bspw. ein
Delphi-Quellcode:
with MyContactlist.GetPerson('') do
begin
  FirstName := '';
  SurName := '';
  Address := '';
  Age := 0;
  //...
end;
weitaus uebersichtlicher als das:
Delphi-Quellcode:
MyContactlist.GetPerson('').FirstName := '';
MyContactlist.GetPerson('').SurName := '';
MyContactlist.GetPerson('').Address := '';
MyContactlist.GetPerson('').Age := 0;//...
Wie immer geht es also darum, wann, wo und wie ich das ganze verwende, und bei welcher Anwendung die Vorteile ueberwiegen.

Um das nicht als Pure-OT-Post dastehn zu lassen:

IMO sind Delphi-Referenz durchsuchenvar/Delphi-Referenz durchsuchenout die beste Moeglichkeit, solangs nicht zu viele Parameter werden. Bei 2 gehts eigentlich noch ziemlich gut, aber wenn mehrere Rueckgabeparameter gebraucht werden, sollte ein Record verwendet werden. (Ob dies dann ueber CallByReference oder Rueckgabewert erledigt wird, bleibt dem Programmierer ueberlassen ;) )

greetz
Mike

PS: Gibts auch Programmierer, die nicht schreibfaul sind? :duck: ;)

himitsu 24. Aug 2006 15:39

Re: function mit zwei Rückgabewerten?
 
Zitat:

Zitat von JasonDX
weitaus uebersichtlicher als das:
Delphi-Quellcode:
MyContactlist.GetPerson('').FirstName := '';
MyContactlist.GetPerson('').SurName := '';
MyContactlist.GetPerson('').Address := '';
MyContactlist.GetPerson('').Age := 0;//...

nicht nur das ... ohne WITH wird auch MyContactlist.GetPerson('') mehrmals aufgerufen .... in deinem Beispiel nur einmal mit WITH und 4-mal ohne :warn:

Elvis 24. Aug 2006 16:11

Re: function mit zwei Rückgabewerten?
 
Zitat:

Zitat von himitsu
Zitat:

Zitat von JasonDX
weitaus uebersichtlicher als das:
Delphi-Quellcode:
MyContactlist.GetPerson('').FirstName := '';
MyContactlist.GetPerson('').SurName := '';
MyContactlist.GetPerson('').Address := '';
MyContactlist.GetPerson('').Age := 0;//...

nicht nur das ... ohne WITH wird auch MyContactlist.GetPerson('') mehrmals aufgerufen .... in deinem Beispiel nur einmal mit WITH und 4-mal ohne :warn:

Deshalb mag ich das hier:
Delphi-Quellcode:
with person := MyContactlist.GetPerson('') do
begin
  person.FirstName := 'blabla'
  person.BlaBla...
end;
Da Nick Hodges jetzt der Delphi PM ist könnte sowas oder etwas ähnliches bald Einzug in Delphi finden.[1]
Er hasst with wahrscheinlich sogar noch mehr als ich und bereits ich bekomme davon allergischen Ausschlag... ;)

[1]Wobei sie es ähnlich wie die Delphi.Net Generics, die ich bis jetzt gesehen habe absichtlich nicht wie in Chrome aussehen lassen werden. ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.
Seite 3 von 3     123   

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