Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Mit Arrays rechnen (https://www.delphipraxis.net/130261-mit-arrays-rechnen.html)

Mysterio08 5. Mär 2009 15:58


Mit Arrays rechnen
 
Guten Tag,
folgende Situation:
Ich möchte, dass man in ein StringGrid Umsätze von einem ganzen Jahr eingeben kann (Januar, Februar...bis Dezember). Dafür habe ich folgende Zeilen geschrieben:
Delphi-Quellcode:
procedure TForm1.Button_BerechnenClick(Sender: TObject);
var
  Umsatz: Array [1..12] of Single;
begin
  for i := 1 to 12 do
    Umsatz[i] := StrToFloat (StringGrid1.Cells[1,i]);
end
Nun möchte ich, dass der Jahresumsatz errechnet wird. Klar, ich könnte mir das ganze viel einfacher machen und direkt mit den StringGrid-Zellen rechnen, das möchte ich aber nicht.
Wenn ich dann alle Umsätze zugewiesen habe-wie rechne ich dann?
Delphi-Quellcode:
Gesamtumsatz := Umsatz[1] + Umsatz[2]..... + Umsatz[12]
Ich glaube da, würde ich mich dumm und dämlich schreiben, und es soll ja Fälle geben, in denen vielleicht tausende Arrays zusammengerechnet werden, ich habe schon bei Delphi-Treff.de geschaut, aber da habe ich nichts Brauchbares gefunden.
Danke schonmal im Vorraus.
mfg. Mysterio08

jaenicke 5. Mär 2009 16:11

Re: Mit Arrays rechnen
 
Wie wäre es so? ;-)
Delphi-Quellcode:
var
  MySum: Double;
  i: Integer;
begin
  MySum := 0;
  for i := Low(Umsatz) to High(Umsatz) do
    MySum := MySum + Umsatz[i]
// EDIT:
Und mit SetLength und dynamischen Arrays wärst du wohl auch besser bedient.

Mysterio08 5. Mär 2009 16:21

Re: Mit Arrays rechnen
 
Nur ich habe mich weder mit dynamischen Arrays beschäftigt, noch mit SetLength. Ich weiß nur, dass man damit Positionen von Strings herausfinden kann, aber das man das auch zum Rechnen nehmen kann, habe ich nicht gewusst.
Könntest du mir das vielleicht mal so posten, würde mich mal interessieren.

himitsu 5. Mär 2009 16:39

Re: Mit Arrays rechnen
 
Zitat:

Zitat von Mysterio08
Nur ich habe mich weder mit dynamischen Arrays beschäftigt, noch mit SetLength. Ich weiß nur, dass man damit Positionen von Strings herausfinden kann, aber das man das auch zum Rechnen nehmen kann, habe ich nicht gewusst.

mit SetLength kann man die Position eines Strings finden? :shock:
ließ am Besten nochmal in deiner Delphi-Hilfe nach, was das wirklich macht.

Mysterio08 5. Mär 2009 16:46

Re: Mit Arrays rechnen
 
OMG, na klar, du hast Recht. Ich habe SetLength mit Length verwechselt.....
Aber ich habe noch eine andere Möglichkeit - eine wie ich finde eine viel einfachere - gefunden:
Delphi-Quellcode:
  for i := 1 to 12 do
    Gesamtumsatz := Gesamtumsatz + Umsatz[i]
Nur eine Sache ist jetzt noch offen: In meinem StringGrid soll der Nutzer die Umsätze direkt eingeben - die Eigenschaft goEditing in den Options habe ich auf True gesetzt. Nur kann der Nutzer nun auch Zahlen in den prozentualen Anteilen "verfälschen", das gefällt mir gar nicht.
Gibt es die Möglichkeit, nur einzelne Zellen anzusprechen und nicht gleich das ganze StringGrid?

mkinzler 5. Mär 2009 17:39

Re: Mit Arrays rechnen
 
Einfach die Eingabe überwachen.

Mysterio08 5. Mär 2009 17:48

Re: Mit Arrays rechnen
 
Zitat:

Zitat von mkinzler
Einfach die Eingabe überwachen.

Und wie genau kann ich das machen?

mkinzler 5. Mär 2009 17:51

Re: Mit Arrays rechnen
 
Z.B. im KeyDown- oder KeyPress-Event

jaenicke 5. Mär 2009 19:09

Re: Mit Arrays rechnen
 
Zitat:

Zitat von Mysterio08
Aber ich habe noch eine andere Möglichkeit - eine wie ich finde eine viel einfachere - gefunden:
Delphi-Quellcode:
  for i := 1 to 12 do
    Gesamtumsatz := Gesamtumsatz + Umsatz[i]

Genau das habe ich doch geschrieben, um aber nicht bei einer Änderung der Anzahl von Werten im Array überall das 1 to 12 ändern zu müssen, solltest du die saubere Variante benutzen, die ich geschrieben habe. Die schaut ja automatisch wie groß das Array ist, ist also deutlich einfacher.

DeddyH 5. Mär 2009 19:12

Re: Mit Arrays rechnen
 
Oder man nimmt gleich math.Sum() :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:17 Uhr.
Seite 1 von 2  1 2      

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