Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Boolean-Wert ändern (https://www.delphipraxis.net/67589-boolean-wert-aendern.html)

faux 17. Apr 2006 11:23

Re: Boolean-Wert ändern
 
Zitat:

Zitat von fkerber
@marabu und 3_of_8:
Warum eigentlich ne Funktion? Der Rückgabewert ist doch unnötig, oder?

Nicht nur das, imho ist er sogar falsch bei marabus Lösung.

Grüße
Faux

fkerber 17. Apr 2006 11:25

Re: Boolean-Wert ändern
 
Hi!

Nö, wieso?
Bei marabu steht nachher der negierte Wert in der Variable, sodass ein aufruf mit negate(x) möglich ist.
Bei 3_of_8 bewirkt negate(x) gar nix. Da müsste es dann x:=negate(x) heißen, was aber gänzlich unnötig wäre.


Ciao Frederic

faux 17. Apr 2006 11:27

Re: Boolean-Wert ändern
 
Zitat:

Zitat von fkerber
Bei marabu steht nachher der negierte Wert in der Variable, sodass ein aufruf mit negate(x) möglich ist.

...und der Rückgabewert ist nicht negiert.
Er hat zwar keine Anleitung mitgeliefert, aber ich finde es verwirrend, wenn dann der nichtnegierte Wert zurück kommt.

Grüße
Faux

fkerber 17. Apr 2006 11:29

Re: Boolean-Wert ändern
 
Hi!

Das iss richtig, aber weiter oben steht ja, dass der aufruf mit Negate(x) erfolgen solle.
Imho iss aber ein Rückgabewert hier sowieso unnötig.


Ciao Frederic

SirThornberry 17. Apr 2006 11:29

Re: Boolean-Wert ändern
 
eine funktion für soetwas ist alles andere als sinnvoll. Durch den Aufruf einer Funktion werden erst wieder die ganzen Dinge auf den Stack gepackt, dann wird zur Funktion hingesprungen etc. Also ein recht großer Performanceverlust und das nur wegen schreibfaulheit.

faux 17. Apr 2006 11:31

Re: Boolean-Wert ändern
 
Zitat:

Zitat von fkerber
Imho iss aber ein Rückgabewert hier sowieso unnötig.

Dazu habe ich mich noch garnicht geäußert. ;)
Ich finde das ganze Vorhaben etwas unnötig. :P Vorallem weil Negate(a); a:=not a; gleichviel, wenn nicht sogar mehr schreibaufwand ist. ;)

Grüße
Faux

Martin K 17. Apr 2006 11:48

Re: Boolean-Wert ändern
 
Um hier mal einzugreifen, ich meine ja eine Prozedur und keine Funktion, da man hier wirklich keinen Rückgabewert benötigt.
Inc() ist ja schließlich auch eine Prozedur und keine Funktion !

Delphi-Quellcode:
procedure Inc(var X: Integer);
begin
  X := X + 1;
end;

//analog dazu:
procedure Negate(var X: Boolean);
begin
  X := not X;
end;
Aber so eine Prozedur wollte ich ja gar nicht selber machen, sondern nur wissen, ob es sowas vielleicht in Delphi schon gibt.
Da dies aber nicht der Fall zu seien scheind, habe ich bereits:
Delphi-Quellcode:
X := not X;
in meinem Quelltext verwendet.

Eine Prozedur Negate scheint dann überflüssig zu sein, genauso wie Inc() in Delphi überflüssig ist, wenn man immer
Delphi-Quellcode:
X := X + 1;
verwendet !

Da es aber Inc() bereits in Delphi gibt, hätte es ja sein können, dass es auch so was wie Negate() schon gibt.
Eigentlich war ja nur das meine ursprüngliche Fragestellung !

Aber trotzdem finde ich es interessant, was sich für eine ausfürliche Diskussion aus dieser simplen Frage eintwickelt,
die eigentlich lediglich mit 'Ja' oder 'Nein' zu beantworten war.

faux 17. Apr 2006 11:52

Re: Boolean-Wert ändern
 
btw:

Die Inc Prozedur kann dann doch etwas mehr:

Delphi-Quellcode:
procedure Incx(var X: Ordinal; const N: Integer = 1);
begin
  X := X + N;
end;
Grüße
Faux

fkerber 17. Apr 2006 11:54

Re: Boolean-Wert ändern
 
Hi!

Zitat:

Zitat von Martin K
Eine Prozedur Negate scheint dann überflüssig zu sein, genauso wie Inc() in Delphi überflüssig ist, wenn man immer
Delphi-Quellcode:
X := X + 1;
verwendet !

Ich wage mal zu behaupten, dass die Funktion inc etwas anders funktioniert als x+1; und somit eine Performance-Steigerung bewirkt.


Ciao Frederic

marabu 17. Apr 2006 11:56

Re: Boolean-Wert ändern
 
Ja Martin, dass ist der Mehrwert eines Forums. Ja und Nein kann man anhand der Online-Hilfe klären, aber diese Diskussionen machen ein Forum interessant.

Die von mir gezeigte Funktion speichert den alten Wert, bevor sie den neuen Wert setzt - mit einer Zeile Code. Dadurch kann in einer Zeile der vorherige Wert ausgelesen und später wieder korrekt restauriert werden. So richtig sinnvoll ist das aber erst bei Typen, die mehr als zwei diskrete Werte kennen. Dort ist eine combined access method sehr angenehm, bei Boolean nehme auch ich in der Regel einfach den NOT Operator. Ihr müsst lernen das Wesentliche zu erkennen, auch wenn ihr nicht mit der Nase darauf gestoßen werdet.

Zum Thema Performanz: es dauert Jahre, bis man mit einer Programmiersprache ein Projekt in lesbarem und wartbarem Code formulieren kann. Für das Tuning kann ich Kollegen einsetzen, die die Fähigkeit lesbaren Code zu schreiben nicht besitzen. In den letzten 10 Jahren hatte ich nur zwei Projekte, bei denen explizites Tuning erforderlich war. Ihr dürft das Thema Performanz nie überbewerten. Erst muss eine Anwendung existieren, dann muss sie untersucht (Profiler) werden und dann werden die richtigen Stellen hand-optimiert - und nur die.

Freundliche Grüße vom marabu


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:07 Uhr.
Seite 2 von 3     12 3      

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