Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi stringgrid addieren (https://www.delphipraxis.net/36312-stringgrid-addieren.html)

horst 18. Dez 2004 13:10


stringgrid addieren
 
wie kann man zum multiplizieren zusätzlich das addieren hinzuzufügen, es gelingt mir nicht...

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  i, y, x: integer;
  sum, m1, m2: real;
  nr, s, sMyExpression: string;
begin
  for y := 1 to 22 do
  begin
    sum := 0;
    for i := 1 to 12 do
    begin
      if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
        end
        else
        begin
          nr := StringGrid1.Cells[i, y];
          nr := nr;
          sum := sum + strtofloat(nr);
        end;
        sMyExpression := FloatToStr(sum);
        stringgrid1.Cells[13, y] := sMyExpression;
      end;
    end;
  end;
end;

ibp 18. Dez 2004 13:28

Re: stringgrid addieren
 
was willst du denn multiplizieren :gruebel: kram nach kristallkugel.... und was willst du überhaupt machen ? es wäre einfacher einen kurzen text zu schreiben, was deine prozedur machen soll, damit man es nicht selber heraustüfteln muss...

horst 18. Dez 2004 13:54

Re: stringgrid addieren
 
hallo...
es geht um ein stringgrid.
wenn in einer stringgridzelle z.b. 3*4 steht dann wird das ergebnis (12) in zelle 23 eingetragen.
zusätzlich soll das (addieren)
berücksichtigt werden, also wenn 12+2 in einer zelle steht soll in zelle 23 eingetragen werden
ich bekomme bei meinen versuchen immer nur 2 rechenmöglichkeiten realisiert, nie alle 3 auf einmal.

der betreffende teil des scripts liegt hier.

Delphi-Quellcode:
if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
        end

ibp 18. Dez 2004 16:59

Re: stringgrid addieren
 
hoffe, dass ich dich richtig verstanden habe...
.. aber so sollte es gehen (nicht getestet)...

Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var
  i, y, x: integer;
  sum, m1, m2: real;
  nr, s, sMyExpression: string;
begin
  for y := 1 to 22 do
  begin
    sum := 0;
    for i := 1 to 12 do
    begin
      if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
        end

        x := pos('+', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + m1 + m2;
        end;
      end;
    end;
    sMyExpression := FloatToStr(sum);
    stringgrid1.Cells[23, y] := sMyExpression; ' <- hier sollte wohl 23 stehen oder?
  end;
end;

horst 18. Dez 2004 20:18

Re: stringgrid addieren
 
@ibp
ich danke dir für dein Interesse...
leider passiert nix, ich habs nochmal angepasst, es funktioniert jetzt zar das addieren und das zusammenzählen der zellen aber das multipizieren klappt nun nicht mehr.

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  i, y, x: integer;
  sum, m1, m2: real;
  nr, s, sMyExpression: string;
begin
  for y := 1 to 22 do
  begin
    sum := 0;
    for i := 1 to 12 do
    begin
      if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
        end;

        x := pos('+', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + m1 + m2;
        end
        else
        begin
          nr := StringGrid1.Cells[i, y];
          nr := nr;
          sum := sum + strtofloat(nr);
        end;
        sMyExpression := FloatToStr(sum);
        stringgrid1.Cells[13, y] := sMyExpression;
      end;
    end;
  end;
end;

ibp 18. Dez 2004 22:01

Re: stringgrid addieren
 
Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  i, y, x: integer;
  sum, m1, m2: real;
  nr, s, sMyExpression: string;
begin
  for y := 1 to 22 do
  begin
    sum := 0;
    for i := 1 to 12 do
    begin
      if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
        end;

        x := pos('+', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + m1 + m2;
        end
   {    ... das weglassen!
         else
        begin
          nr := StringGrid1.Cells[i, y];
          nr := nr;
          sum := sum + strtofloat(nr);
        end;
  }
        sMyExpression := FloatToStr(sum);
        stringgrid1.Cells[13, y] := sMyExpression;
      end;
    end;
  end;
end;

horst 18. Dez 2004 23:28

Re: stringgrid addieren
 
vielen dank...
es klappt fast, beim ersten klick auf den button wird alles ausgerechnet bis auf das zusammenzählen der stringgridzellen.
http://www.hamiltons-versand.de/delphi/fehler_a.jpg

wenn ich weitere zahlen eingebe wird nicht mehr gerechnet.
http://www.hamiltons-versand.de/delphi/fehler.jpg

grüße
horst

ibp 19. Dez 2004 10:09

Re: stringgrid addieren
 
... nun habe ich verstanden was du machen willst :thumb:, manchmal sagen bilder mehr als tausend worte :wink:

... so sollte es funktionieren!...
- für die gesamtsumme brauchst du noch eine variable, da sum ja bei jedem zeilendurchlauf gelöscht wird!

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  i, y, x: integer;
  sum, m1, m2, gesamtsum: real;
  nr, s, sMyExpression: string;
begin
  gesamtsum:=0;
  for y := 1 to 22 do
  begin
    sum := 0;
    for i := 1 to 12 do
    begin
      if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
        end
        else
        begin
          x := pos('+', nr);
          if x > 0 then
          begin
            m1 := strtofloat(copy(nr, 1, x - 1));
            m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
            sum := sum + m1 + m2;
          end
          else
            sum := sum + strtofloat(nr);
        end;

        sMyExpression := FloatToStr(sum);
        stringgrid1.Cells[13, y] := sMyExpression;
        gesamtsum:= gesamtsum + sum;
      end;
    end;
  end;
  stringgrid1.Cells[13, 23] := FloatToStr(gesamtsum);
end;

horst 19. Dez 2004 10:36

Re: stringgrid addieren
 
habs nun verstanden
es funktioniert :) :) :) :)

vielen dank

horst 20. Dez 2004 09:28

Re: stringgrid addieren
 
hallo...versuche nun schon eine ganze weile herauszufinden warum das gesamt-ergebnis nicht stimmt.
bekomme bei dieser rechnung als ergebnis 83
http://www.hamiltons-versand.de/delphi/fehler_a.jpg

Delphi-Quellcode:
procedure TForm1.Button7Click(Sender: TObject);
var
  i, y, x: integer;
  sum, m1, m2, gesamtsum: real;
  nr, s, sMyExpression: string;
begin
  gesamtsum:=0;
  for y := 1 to 22 do
  begin
    sum := 0;
    for i := 1 to 12 do
    begin
      if STringGrid1.Cells[i, y] <> '' then
      begin
        nr := StringGrid1.Cells[i, y];
        x := pos('*', nr);
        if x > 0 then
        begin
          m1 := strtofloat(copy(nr, 1, x - 1));
          m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
          sum := sum + (m1 * m2);
         
        end
        else
        begin
          x := pos('+', nr);
          if x > 0 then
          begin
            m1 := strtofloat(copy(nr, 1, x - 1));
            m2 := strtofloat(copy(nr, x + 1, length(nr) - x));
            sum := sum + m1 + m2;

          end
          else
          begin
            nr := StringGrid1.Cells[i, y];
            nr := nr;
            sum := sum + strtofloat(nr);

          end;
        end;

        sMyExpression := FloatToStr(sum);
        stringgrid1.Cells[13, y] := sMyExpression;
        gesamtsum:= gesamtsum + sum;
      end;
    end;
  end;
  stringgrid1.Cells[13, 23] := FloatToStr(gesamtsum);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 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