Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   array als var-Parameter (https://www.delphipraxis.net/185698-array-als-var-parameter.html)

Mikkey 30. Jun 2015 12:46

AW: array als var-Parameter
 
OT:

Zitat:

Zitat von BUG (Beitrag 1307192)
Nur mal so zum neidisch sein :stupid:

Da ist das garnicht nötig, denn es geht auch ohne Funktionsaufruf:

Delphi-Quellcode:
var1=var2=var3=var4=var5=0;
Das ist nicht aufwendiger als
Delphi-Quellcode:
zeroVars(var1,var2,var3,var4,var5);
und man sieht unmittelbar, was gemacht wird.

BadenPower 30. Jun 2015 13:27

AW: array als var-Parameter
 
Zitat:

Zitat von bernau (Beitrag 1307193)
Bei näherem hinsehen allergings ne tolle Lösung. :thumb:

Zum Hinsehen immer wieder ein Augeschmaus, wenn man einen Code von Sir Rufo betrachtet.:thumb:

Allerdings wieder einmal ein schönes Beispiel dafür, wie man eingentlich unnötig Speicher und Rechenleistung verschwenden kann, wenn man den Code wirklich näher betrachtet.

Und wirklich besser aussehen, oder lesbarer ist die Aufrufzeile auch nicht.
Delphi-Quellcode:
TValueSetter.Int.AddVar( Val1 ).AddVar( Val2 ).AddVar( Val3 ).SetValue( TargetValue );
Delphi-Quellcode:
SetToZero([@Val1,@Val2]);
Und intern machen die Funktionen dann auch nichts anderes als einen Zeiger übergeben, welcher dann dereferenziert wird um den neuen Wert zu setzen.

Es ist eben auch Geschmacksache, ob man lieber 1 Klasse + 2 Records + 4 Funktionen deklariert und schreibt, als 1 Funktion, welche 5 Zeilen umfasst und das gleiche ohne unnötige Zwischenschritte macht.

DeddyH 30. Jun 2015 14:00

AW: array als var-Parameter
 
Zitat:

Zitat von BadenPower (Beitrag 1307197)
Es ist eben auch Geschmacksache, ob man lieber 1 Klasse + 2 Records + 4 Funktionen deklariert und schreibt, als 1 Funktion, welche 5 Zeilen umfasst und das gleiche ohne unnötige Zwischenschritte macht.

Hello World :mrgreen:

BUG 30. Jun 2015 14:10

AW: array als var-Parameter
 
Zitat:

Zitat von DeddyH (Beitrag 1307206)
Hello World :mrgreen:

Noch dramatischer: FizzBuzz Enterprise Edition :stupid:

implementation 30. Jun 2015 17:33

AW: array als var-Parameter
 
Zitat:

Zitat von DeddyH (Beitrag 1307206)
Hello World :mrgreen:

Dazu: GNU hello ;)

Stevie 30. Jun 2015 19:58

AW: array als var-Parameter
 
Overengineering 500 bitte... :shock:

Zur Eingangsfrage: warum hast du einzelne Variablen, die offensichtlich zusammen gehören (sonst würdest du sie ja nicht gemeinsam auf 0 setzen wollen).

Wenn sie zusammen gehören, dann pack sie in ein Array oder einen Record und wuppdi, kannst die auch mit einem beherzten Einzeiler nullen.

BadenPower 30. Jun 2015 21:21

AW: array als var-Parameter
 
Zitat:

Zitat von Stevie (Beitrag 1307243)
Wenn sie zusammen gehören, dann pack sie in ein Array oder einen Record und wuppdi, kannst die auch mit einem beherzten Einzeiler nullen.

Auch nur dann, wenn er denn auch immer ALLE gleichzeitig auf den selben Wert setzen möchte.

Harry Stahl 30. Jun 2015 21:52

AW: array als var-Parameter
 
Zitat:

Zitat von bernau (Beitrag 1307174)
Danke für die Antworten. Ich habe es mir schon gedacht.

Habe nur gehofft, daß es etwas gibt, was ich noch nicht weis. Schade.

Dann halt wieder:

Delphi-Quellcode:
lMenge1 = 0;
lMenge2 = 0;
lMenge3 = 0;
lMenge4 = 0;
Statt

Delphi-Quellcode:
SetToZero([lMenge1,lMenge2,lMenge3,lMenge4]);

Falls es Dir wirklich nur darum geht, immer nur 2-4 Variablen mit einem Funktionsaufruf zu setzen, könntest Du statt einem Array eine Procedure mit Overload verwenden:

Delphi-Quellcode:
procedure ToZ (var i1, i2:Integer); overload;
procedure ToZ (var i1, i2, i3: Integer); overload;
procedure ToZ (var i1, i2, i3, i4: Integer); overload;

implementation

procedure ToZ (var i1, i2:Integer); overload;
begin
  i1 := 0; i2 := 0;
end;

procedure ToZ (var i1, i2, i3: Integer); overload;
begin
  i1 := 0; i2 := 0; i3 := 0;
end;

procedure ToZ (var i1, i2, i3, i4: Integer); overload;
begin
  i1 := 0; i2 := 0; i3 := 0; i4:= 0;
end;


// ... Programmablauf
var
  itest1, itest2, itest3, itest4: Integer;

begin
  iTest1 := 10;
  iTest2 := 20;
  iTest3 := 30;
  iTest4 := 40;

  ToZ (iTest1,iTest2); // gültiger Aufruf mit 2 Parametern
  ToZ (iTest1,iTest2,iTest3,iTest4); // gültiger Aufruf mit 4 Parametern
Vorteil wäre auch, dass Du Dir die eckigen Klammern beim Aufruf der Procedure sparen kannst.

hoika 1. Jul 2015 05:12

AW: array als var-Parameter
 
Hallo,
ich werfe mal in dein Raum,
dass die Variablen vielleicht schon mit 0 initialisiert sind.

Übrigens funktionieren die Generics-Beispiele in D2007 noch nicht.


Heiko

Dejan Vu 1. Jul 2015 07:07

AW: array als var-Parameter
 
Der Thread ist geil: Wir diskutieren, wie man Variablen initialisiert und schreiben sogar eine Klasse dafür.

Mir geht es in der Programmierung darum, eine Lösung einfach darzustellen. Einfach, klar und verständlich. Wenn ich einmal 20 Variablen auf 0 setzen muss (private property backing stores z.B.), dann schreibe ich mir eine private Methode 'InitializeValues' und dann besteht diese Methode eben aus 20 Zeilen 'Foo := 0'. Wo ist das Problem? Das ist die einfachste, klarste und direkteste Form, Variablen auf 0 zu setzen.

Als nächstes kommt jemand noch auf die Idee und will eine For-Schleife in eine Klasse packen, um diese dann per fluent-Interface ineinander zu schachteln. Kann man ja wiederverwenden.

Na ja. Nette Übung jedenfalls.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:49 Uhr.
Seite 3 von 5     123 45      

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