AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Einem Array of double einen Wert 0 zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Einem Array of double einen Wert 0 zuweisen

Ein Thema von Natcree · begonnen am 9. Dez 2013 · letzter Beitrag vom 9. Dez 2013
Antwort Antwort
bcvs

Registriert seit: 16. Jun 2011
729 Beiträge
 
Delphi 12 Athens
 
#1

AW: Einem Array of double einen Wert 0 zuweisen

  Alt 9. Dez 2013, 19:28
Kauf dir mal ein gutes Buch über Delphi.

Aber ich will ja nicht so sein:


Delphi-Quellcode:
var
i: integer;
Zahl: array[1..49] of double;
begin
  for i:=1 to 49 do
  begin
   zahl[i]:=0;
  end;
end;
Außerdem:
Zitat:
Delphi-Quellcode:
    
    if eltreestringgrid1.cells[5,i]='2110then Length(eltreestringgrid1.Cells[2,i]);
    if eltreestringgrid1.cells[5,i]='2110then s := eltreestringgrid1.Cells[2,i];
    if eltreestringgrid1.cells[5,i]='2110then setlength(e,length(s)-2);
    if eltreestringgrid1.cells[5,i]='2110then copymemory(e,@s[1],length(e));
    if eltreestringgrid1.cells[5,i]='2110then eltreestringgrid1.Cells[2,i]:=(string(e));
    if eltreestringgrid1.cells[5,i]='2110then gesamtzahl:=gesamtzahl + strtofloat(eltreestringgrid1.cells[2,i]);
    if eltreestringgrid1.cells[5,i]='2110then eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'else;
Schon mal was von begin /end gehört? Warum nicht so?
Delphi-Quellcode:
if eltreestringgrid1.cells[5,i]='2110then begin
  Length(eltreestringgrid1.Cells[2,i]);
  s := eltreestringgrid1.Cells[2,i];
  setlength(e,length(s)-2);
  copymemory(e,@s[1],length(e));
  eltreestringgrid1.Cells[2,i]:=(string(e));
  gesamtzahl:=gesamtzahl +strtofloat(eltreestringgrid1.cells[2,i]);
  eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
end;
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.344 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Einem Array of double einen Wert 0 zuweisen

  Alt 9. Dez 2013, 19:37
Delphi-Quellcode:
var
i: integer;
Zahl: array[1..49] of double;
begin
  for i:=1 to 49 do
  begin
   zahl[i]:=0;
  end;
end;
Oder wenn man die Grenzen nicht zweimal angeben will:
Delphi-Quellcode:
var
  i: integer;
  Zahl: array[1..49] of double;

begin
  for i := low(Zahl) to high(Zahl) do
    begin
     zahl[i]:=0;
    end;
end;
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#3

AW: Einem Array of double einen Wert 0 zuweisen

  Alt 9. Dez 2013, 19:53
Delphi-Quellcode:
if eltreestringgrid1.cells[5,i]='2110then begin
  Length(eltreestringgrid1.Cells[2,i]);
  s := eltreestringgrid1.Cells[2,i];
  setlength(e,length(s)-2);
  copymemory(e,@s[1],length(e));
  eltreestringgrid1.Cells[2,i]:=(string(e));
  gesamtzahl:=gesamtzahl +strtofloat(eltreestringgrid1.cells[2,i]);
  eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
end;
Delphi-Quellcode:
if eltreestringgrid1.cells[5,i]='2110then begin
  Length(eltreestringgrid1.Cells[2,i]); // macht nix, da niemand das Result auswertest
  s := eltreestringgrid1.Cells[2,i];
  setlength(e,length(s)-2);
  copymemory(e,@s[1],length(e)); // den, der das mal nach Unicode umstellen soll ... :waffe_in_ecke_stell:, damit der sich gleich erschießen kann
  eltreestringgrid1.Cells[2,i]:=(string(e)); // wozu das Char-Array
  gesamtzahl:=gesamtzahl +strtofloat(eltreestringgrid1.cells[2,i]); // wenn man hier E nimmt, dann kann ist die nächste Zeile sinnlos
  eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
end;
Delphi-Quellcode:
if ElTreeStringGrid1.Cells[5, i] = '2110then begin
  s := ElTreeStringGrid1.Cells[2, i];
  SetLength(s, Length(s) - 2); // Copy oder Delete gingen auch
  Gesamtzahl := Gesamtzahl + StrToFloat(s);
  ElTreeStringGrid1.Cells[2, i] := s + '';
end;
Und die vielen weiteren IFs machen doch das Selbe? (ist ja nicht so gut erkennbar)
Also kann man die zusammenfassen und in eine Schleife oder Funktion verschieben, wo die Konstanten und Komponentennamen entsprechend angepasst werden.


Ach ja, eine halbwegs ordentliche Codeformatierung, Groß-/Kleinschreibung und ordentliche Namen für Komponenten machen den Code gleich viel lesbarer.

Der Vorschlag von bcvs sollte besser mal beherzigt werden.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 9. Dez 2013 um 19:57 Uhr)
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#4

AW: Einem Array of double einen Wert 0 zuweisen

  Alt 9. Dez 2013, 20:33
So Habe den Code Jetzt wie folgt geändert:


Delphi-Quellcode:
procedure TForm1.LMDSpeedButton2Click(Sender: TObject);
var
Gesamtzahl:double;
Gesamtzahlen: array[1..48] of double;
i:integer;
s : String;
begin
  Gesamtzahl:=0;
  for i := Low(Gesamtzahlen) to High(Gesamtzahlen) do Gesamtzahlen[i] := 0;
  for i:=1 to eltreestringgrid1.RowCount-1 do begin
    if eltreestringgrid1.cells[5,i]='2110then begin
      s := ElTreeStringGrid1.Cells[2,i];
      SetLength(S, Length(s) - 2);
      Gesamtzahl := Gesamtzahl + StrToFloat(S);
      ElTreeStringGrid1.Cells[2,i] := S + '';
    end;
    if eltreestringgrid1.cells[5,i]='3221then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[1]:=gesamtzahlen[1] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='2303then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[2]:=gesamtzahlen[2] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='2400then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[3]:=gesamtzahlen[3] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='2750then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[6]:=gesamtzahlen[6] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='2900then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[7]:=gesamtzahlen[7] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='4110then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[12]:=gesamtzahlen[12] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='4150then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[13]:=gesamtzahlen[13] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='4230then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[14]:=gesamtzahlen[14] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='4900then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[17]:=gesamtzahlen[17] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='5020then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[21]:=gesamtzahlen[21] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='5250then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[22]:=gesamtzahlen[22] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='5872then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[24]:=gesamtzahlen[24] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='5650then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[25]:=gesamtzahlen[25] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='8028then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[41]:=gesamtzahlen[41] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='7100then begin
      s := eltreestringgrid1.Cells[2,i];
      setlength(e,length(s)-2);
      gesamtzahlen[42]:=gesamtzahlen[42] + strtofloat(eltreestringgrid1.cells[2,i]);
      eltreestringgrid1.Cells[2,i]:=eltreestringgrid1.Cells[2,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='8150then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[45]:=gesamtzahlen[45] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;
    if eltreestringgrid1.cells[5,i]='7358then begin
      s := eltreestringgrid1.Cells[3,i];
      setlength(e,length(s)-2);
      gesamtzahlen[46]:=gesamtzahlen[46] + strtofloat(eltreestringgrid1.cells[3,i]);
      eltreestringgrid1.Cells[3,i]:=eltreestringgrid1.Cells[3,i]+'';
    end;

Form9.Label2110.Caption := 'Mitgliedsbeiträge:';
Form9.Edit1.text := Format('%f €', [Gesamtzahl]);
Form9.Label3221.Caption := 'Spenden:';
Form9.Edit2.text := Format('%f €', [Gesamtzahlen[1]]);
Form9.Label2303.Caption := 'Zuschüsse:';
Form9.Edit3.text := Format('%f €', [Gesamtzahlen[2]]);
Form9.Label2400.Caption := 'sonstige Einnahmen:';
Form9.Edit4.text := Format('%f €', [Gesamtzahlen[3]]);
Gesamtzahlen[4] := Gesamtzahl + Gesamtzahlen[1] + Gesamtzahlen[2] + Gesamtzahlen[3];
Form9.LabelGesamt.Caption := 'Summe Einnahmen:';
Form9.Edit5.text := Format('%f €', [Gesamtzahlen[4]]);

Gesamtzahlen[5]:=0;
Form9.Edit6.text := Format('%f €', [Gesamtzahlen[5]]);
Form9.Edit7.text := Format('%f €', [Gesamtzahlen[6]]);
Form9.Edit8.text := Format('%f €', [Gesamtzahlen[7]]);
Gesamtzahlen[8] := Gesamtzahlen[5] + Gesamtzahlen[6] + Gesamtzahlen[7];
Form9.Edit9.text := Format('%f €', [Gesamtzahlen[8]]);
Form9.Edit10.text := Format('%f €', [Gesamtzahlen[8]]);

Gesamtzahlen[9] := Gesamtzahlen[4]-Gesamtzahlen[8];
Form9.Edit21.text := floattostr(gesamtzahlen[9]);
Form9.Edit11.text := Format('%f €', [Gesamtzahlen[9]]);

Form9.Edit12.text := Format('%f €', [Gesamtzahlen[12]]);
Form9.Edit13.text := Format('%f €', [Gesamtzahlen[13]]);
Form9.Edit14.text := Format('%f €', [Gesamtzahlen[14]]);
Gesamtzahlen[15] := Gesamtzahlen[12] + Gesamtzahlen[13] + Gesamtzahlen[14];
Form9.Edit15.text := Format('%f €', [Gesamtzahlen[15]]);

Gesamtzahlen[16]:=0;
Form9.Edit16.text := Format('%f €', [Gesamtzahlen[16]]);
Form9.Edit17.text := Format('%f €', [Gesamtzahlen[17]]);
Gesamtzahlen[18] := Gesamtzahlen[16] + Gesamtzahlen[17];
Form9.Edit18.text := Format('%f €', [Gesamtzahlen[18]]);
Gesamtzahlen[19] := Gesamtzahlen[18];
Form9.Edit19.text := Format('%f €', [Gesamtzahlen[19]]);
Gesamtzahlen[20] := Gesamtzahlen[15]-Gesamtzahlen[18];
Form9.Edit22.text := floattostr(gesamtzahlen[20]) ;
Form9.Edit20.text := Format('%f €', [Gesamtzahlen[20]]);

Form10.Edit1.text := Format('%f €', [Gesamtzahlen[21]]);
Form10.Edit2.text := Format('%f €', [Gesamtzahlen[22]]);
Gesamtzahlen[23] := Gesamtzahlen[21] + Gesamtzahlen[22];
Form10.Edit3.text := Format('%f €', [Gesamtzahlen[23]]);

Form10.Edit4.text := Format('%f €', [Gesamtzahlen[24]]);
Form10.Edit5.text := Format('%f €', [Gesamtzahlen[25]]);
Gesamtzahlen[26] := Gesamtzahlen[24] + Gesamtzahlen[25];
Form10.Edit6.text := Format('%f €', [Gesamtzahlen[26]]);

Form10.edit7.text := Format('%f €', [Gesamtzahlen[26]]);
Gesamtzahlen[27] := Gesamtzahlen[23] - Gesamtzahlen[26];
Form10.Edit9.text := floattostr(gesamtzahlen[27]);
Form10.edit8.text := Format('%f €', [Gesamtzahlen[27]]);

Form11.edit1.text := Format('%f €', [Gesamtzahlen[31]]);
Form11.edit2.text := Format('%f €', [Gesamtzahlen[32]]);
Form11.edit3.text := Format('%f €', [Gesamtzahlen[33]]);
Form11.edit4.text := Format('%f €', [Gesamtzahlen[34]]);
Form11.edit5.text := Format('%f €', [Gesamtzahlen[35]]);
Form11.edit6.text := Format('%f €', [Gesamtzahlen[36]]);
Form11.edit7.text := Format('%f €', [Gesamtzahlen[37]]);
Form11.edit8.text := Format('%f €', [Gesamtzahlen[38]]);
Form11.Edit10.text := floattostr(gesamtzahlen[39]);
Form11.edit9.text := Format('%f €', [Gesamtzahlen[39]]);

Form12.edit1.text := Format('%f €', [Gesamtzahlen[41]]);
Form12.edit2.text := Format('%f €', [Gesamtzahlen[42]]);
gesamtzahlen[43] := Gesamtzahlen[41] + Gesamtzahlen[42];
Form12.edit3.text := Format('%f €', [Gesamtzahlen[43]]);

Form12.edit4.text := Format('%f €', [Gesamtzahlen[44]]);
Form12.edit5.text := Format('%f €', [Gesamtzahlen[45]]);
Form12.edit6.text := Format('%f €', [Gesamtzahlen[46]]);
gesamtzahlen[47] := Gesamtzahlen[44] + Gesamtzahlen[45] + Gesamtzahlen[46];
Form12.edit7.text := Format('%f €', [Gesamtzahlen[47]]);
Form12.edit8.text := Format('%f €', [Gesamtzahlen[47]]);
Gesamtzahlen[48] := Gesamtzahlen[43] - Gesamtzahlen[47];
Form12.Edit10.text := floattostr(gesamtzahlen[48]);
Form12.edit9.text := Format('%f €', [Gesamtzahlen[48]]);
Form13.Show;
end;
end;
  Mit Zitat antworten Zitat
Natcree

Registriert seit: 5. Mär 2013
502 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Einem Array of double einen Wert 0 zuweisen

  Alt 9. Dez 2013, 20:45
Zitat:
Also kann man die zusammenfassen und in eine Schleife oder Funktion verschieben, wo die Konstanten und Komponentennamen entsprechend angepasst werden.
Wie machen ich das am besten?

Diese Procedure wird ja nur einmal im jahr ausgeführt. Hier werden die Daten ausen einem Kassenbuch nach Kostenstellen aufgelistet und in die entsprechenden Fenster zur Einnahmen/Ausgaben Überschussrechnung fürs Finanzamt zum Druck vorbereitet.

Daher Frag ich mich ob es Sinn macht und wenn ja Warum?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Einem Array of double einen Wert 0 zuweisen

  Alt 9. Dez 2013, 22:20
Ja wenn die nur einmal im Jahr aufgerufen wird, dann macht das ja nix.

Ist ja nur fürs Finanzamt ... warum sollte man da vernünftig (übersichtlich, KISS, DRY, etc.) programmieren.
Würd ja auch gar nicht zum Rest passen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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