![]() |
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; |
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...
|
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 |
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; |
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; |
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; |
Re: stringgrid addieren
vielen dank...
es klappt fast, beim ersten klick auf den button wird alles ausgerechnet bis auf das zusammenzählen der stringgridzellen. ![]() wenn ich weitere zahlen eingebe wird nicht mehr gerechnet. ![]() grüße horst |
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; |
Re: stringgrid addieren
habs nun verstanden
es funktioniert :) :) :) :) vielen dank |
Re: stringgrid addieren
hallo...versuche nun schon eine ganze weile herauszufinden warum das gesamt-ergebnis nicht stimmt.
bekomme bei dieser rechnung als ergebnis 83 ![]()
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 11:00 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