AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Werte von stringgrid zellen zusammenrechnen

Ein Thema von rhodan · begonnen am 2. Mai 2014 · letzter Beitrag vom 4. Mai 2014
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#1

Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 19:40
hi..

mit folgendem code addiere ich die werte von stringgrid zellen zusammen und weise sie einem editfeld zu:

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
Z1, Z2,z3: extended;
begin
  z1 := strtofloatdef(Grid.Cells[1,1], 1);
  z2 := StrTofloatdef(Grid.Cells[2,1], 1);
  z3 := StrTofloatdef(Grid.Cells[3,1], 1);
  edit1.text:= floattostr((z1+z2+z3));
end;
mein problem ist das die anzahl der Columns nicht feststehend ist, der user kann neue hinzufügen oder löschen...hat jemand eine idee wie ich das umsetzen kann? im prinzip muss die anzahl der bestehenen columns ausgelesen werden (in diesem falle 3) und die werte der drei addiert werden...wenns 5 sind eben der 5...etc...
könnt ihr mir nen tip geben?

ich schätze mal ich muss den grid.colcount einem integer zuweisen, aber bei dem rest steh ich auf dem schlauch.

lg

lg robin
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.618 Beiträge
 
Delphi 12 Athens
 
#2

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 19:47
hi..

ich schätze mal ich muss den grid.colcount einem integer zuweisen, aber bei dem rest steh ich auf dem schlauch.
Du musst grid.rowcount und grid.colcount auslesen (nicht zuweisen), damit die Grenzen bestimmen und dann alles zusammenrechnen, d.h. in jeder Zeile alls zusammenrechnen und das für alle Zeilen tun.
Vorher aber noch aufpassen, dass du eventuelle Kopftexte nicht mit zum Rechnen nutzt. Außerdem solltest du vorher prüfen, ob es überhaupt Zahlen sind.
Matthias
Es ist nie falsch das Richtige zu tun!
- Mark Twain

Geändert von zeras ( 2. Mai 2014 um 19:51 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 19:50
Die vorhandene Anzahl von Spalten kannst Du ermitteln, indem du Grid.ColCount abfragst.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  z: Extended;
  i: integer;
begin
  z := 0;
  for i := 0 to Grid.ColCount-1 do
  begin
    z := z + strtofloatdef(Grid.Cells[i,1], 1);
  end;
  edit1.text:= floattostr(z);
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#4

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 19:58
ich danke dir!
ich hab hier das problem das leere zellen als 1 komischerweise gezählt werden...ich löse das jetzt so das ich in der column jede leere zelle mit '0' fülle schätze ich.
es geht um die zeile "stunden pro woche", hier kriege ich eine 43 als ergebnis.

liebe grüße
Miniaturansicht angehängter Grafiken
r1.jpg  

Geändert von rhodan ( 2. Mai 2014 um 20:00 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 20:06
Einfach 0 als Standardwert statt 1.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von rhodan
rhodan

Registriert seit: 4. Okt 2005
Ort: Hamburg
150 Beiträge
 
Delphi 7 Personal
 
#6

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 20:11
danke dir !
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 2. Mai 2014, 21:17
Es ist keine gute Idee mit StrToFloatDif zu arbeiten. Damit vermeidest du zwar eine Fehlermeldung, aber die Fehlermeldung hat einen Sinn. Sie warnt davor wenn ein Fehler auftritt. Schreibt einer in Spalte Robin den Wert "321.45", bekommst du den Fehler gar nicht mit. Der Wert wird in StrToFloatDif genullt und taucht in der Statistik nicht auf. Wenn du nicht die Standardfehlermeldung haben willst, kannst du eine eigene schreiben. Hier zwei Beispiele:
Delphi-Quellcode:
function StrToFloatSG(const S: String; ACol, ARow: Integer): Extended; overload;
begin
  if StrToFloatDef(S, 0) <> StrToFloatDef(S, 1) then
    raise Exception.CreateFmt('Ungültiger Wert in Zelle [%d.%d]', [ACol, ARow]);

  Result := StrToFloat(S);
end;

function StrToFloatSG(const S, SCol, SRow: String): Extended; overload;
begin
  if StrToFloatDef(S, 0) <> StrToFloatDef(S, 1) then
    raise Exception.CreateFmt('Ungültiger Wert in Spalte "%s" und Zelle "%s"', [SCol, SRow]);

  Result := StrToFloat(S);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  z: Extended;
  i: integer;
begin
  z := 0;
  for i := 0 to Grid.ColCount-1 do
  begin
    //z := z + strtofloatdef(Grid.Cells[i,1], 1);
    //z := z + StrToFloatSG(Grid.Cells[i,1], 1, i);
    z := z + StrToFloatSG(Grid.Cells[i,1], Grid.Cells[1, 0], Grid.Cells[0, 1]);
  end;
  edit1.text:= floattostr(z);
end;
Die erste gibt die Zeile und Spalte als Wert zurück, bei der Zweiten kannst du die Überschriften angeben. Und lass dich von der bösen Fehlermeldung in der Entwicklungsumgebung nicht abschrecken. Stäter, aus der Exe heraus, sieht die harmloser aus.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 3. Mai 2014, 10:58
Da wäre TryStrToFloat aber erheblich zielführender und vor allem verständlicher.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 3. Mai 2014, 11:04
Ich würde auch eher versuchen falsche Eingaben zu verhindern
Markus Kinzler
  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
 
#10

AW: Werte von stringgrid zellen zusammenrechnen

  Alt 3. Mai 2014, 11:20
Generell ist es immer besser die Controls nicht als Werte-Speicher zu gebrauchen.

Die Intention ist Daten anzuzeigen und (wenn Eingaben möglich sind) Eingaben entgegen zu nehmen.
Diese Eingaben sollten dann direkt nach der Eingabe auf Plausibilität und Kontext geprüft werden und in einer Datenstruktur gespeichert werden. Im Control werden dann diese (geprüften) Werte wieder dargestellt.

Aggregate (z.B. Summenbildung) erfolgen dann über die Datenstruktur.
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
Seite 1 von 3  1 23      


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 00:49 Uhr.
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