Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Übergebenes Array: low() immer 0? (https://www.delphipraxis.net/49084-uebergebenes-array-low-immer-0-a.html)

negaH 5. Jul 2005 12:57

Re: Übergebenes Array: low() immer 0?
 
oder noch besser:

Delphi-Quellcode:
var
  C: array[Boolean] of Integer;
  I: Integer;
  J: Boolean;
begin
  C[False] := 0;
  C[True] := 0;
  J := False;
  for I := Low(Array) to High(Array) do
  begin
    Inc(C[J], Array[I]);
    J := not J;
  end;
  Result := C[False] + C[True] * 3;
end;
Wichtig ist

1.) Multiplikation mit *3 wird nur einmalig durchgeführt
2.) es gibt in der Schleife nur Additionen
3.) es gibt in der Schleife KEINE bedingten Sprünge, sprich Abfragen wie IF THEN und somit keine unnötigen Branches in der CPU, ergo der Code kann wesentlich schneller ausgeführt werden
4.) durch das separate J ist der Algo. unabhängig von der Array[] Deklaration
5.) durch J: Boolean muß auf J keinerlei zeitraubende Operation durchgeführt werden, ein simples NOT reicht aus
6.) durch die separate Addition auf 2 Elementesummen halbiert sich die Gefahr eines Integer-Überlaufes und erst am Ende der Schleife kann es eine ERangeCheck Exception geben

Gruß Hagen

Thanatos81 5. Jul 2005 13:14

Re: Übergebenes Array: low() immer 0?
 
Danke für eure Ideen! Vor allem die Lösung vion negaH sagt mir wirklich zu.

Auch wenn, oder viel mehr gerade weil, ich mich erstmal reindenken und es an meine Bedürfnisse anpassen musste ;-)

negaH 5. Jul 2005 13:48

Re: Übergebenes Array: low() immer 0?
 
Zitat:

Auch wenn, oder viel mehr gerade weil, ich mich erstmal reindenken und es an meine Bedürfnisse anpassen musste
Ich kaue dir doch nicht die fertige Lösung vor ;)

Gruß Hagen

Thanatos81 5. Jul 2005 14:06

Re: Übergebenes Array: low() immer 0?
 
Zitat:

Zitat von negaH
Zitat:

Auch wenn, oder viel mehr gerade weil, ich mich erstmal reindenken und es an meine Bedürfnisse anpassen musste
Ich kaue dir doch nicht die fertige Lösung vor ;)

Gruß Hagen

Eben, wo würde denn da der Spaß bleiben :-D Vom Lerneffekt ganz zu schweigen :wink:

Schönen Gruß,
Thomas


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

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