![]() |
AW: array als var-Parameter
OT:
Zitat:
Delphi-Quellcode:
Das ist nicht aufwendiger als
var1=var2=var3=var4=var5=0;
Delphi-Quellcode:
und man sieht unmittelbar, was gemacht wird.
zeroVars(var1,var2,var3,var4,var5);
|
AW: array als var-Parameter
Zitat:
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:
Und intern machen die Funktionen dann auch nichts anderes als einen Zeiger übergeben, welcher dann dereferenziert wird um den neuen Wert zu setzen.
SetToZero([@Val1,@Val2]);
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. |
AW: array als var-Parameter
Zitat:
![]() |
AW: array als var-Parameter
Zitat:
![]() |
AW: array als var-Parameter
|
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. |
AW: array als var-Parameter
Zitat:
|
AW: array als var-Parameter
Zitat:
Delphi-Quellcode:
Vorteil wäre auch, dass Du Dir die eckigen Klammern beim Aufruf der Procedure sparen kannst.
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 |
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 |
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 07:54 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