AGB  ·  Datenschutz  ·  Impressum  







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

Berechnung im Stringgrid

Ein Thema von Bruce86 · begonnen am 20. Mär 2007 · letzter Beitrag vom 20. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#1

Berechnung im Stringgrid

  Alt 20. Mär 2007, 11:27
Delphi-Quellcode:
procedure TForm1.Button10Click(Sender: TObject);
var z,x,y,i:integer;
begin
x:=0;
y:=0;
for z := 1 to Stringgrid1.rowcount do
begin
  for i := 1 to 9
       do begin
         x := x + StrToInt (stringgrid1.Cells[i,1]);
          if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'')
          then y := y+1
          end;
  if y<>0 then
  Stringgrid3.Cells[0,z] := FloatToStr ((x/y)*0.6+(strtofloat(stringgrid1.cells[10,1])*0.4))
  else stringgrid3.cells[0,z]:= 'n.b.';
  end;
  end;
Hi Ihr seht hier mal mein code zur berechnung der Halbjahresdurchschnittes! dies geht auch für die erste zeite aber bei den anderen funktioniert es nicht! klar mit dem quellcode geht es auch net da nur der wert für die erste zeile berechnet wird doch wenn ich hier:

Delphi-Quellcode:
x := x + StrToInt (stringgrid1.Cells[i,1]);
if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'')
für "1" = "z" einsetze was ja dann eigentlich gehen müsste meckert er von wegen ungültiger integerwert oder der gleichen! Was ist falsch? Wo ist mein fehler? denn so wie ihr den quelllcode oben seht geht es ja!

MFG

Bruce86
Miniaturansicht angehängter Grafiken
berechnung_950.jpg  
  Mit Zitat antworten Zitat
Safti

Registriert seit: 30. Mär 2005
Ort: Freiburg im Breisgau
46 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 11:55
Hallo Bruce,

ab der 3. Zeile sind die Zellen in deinem Stringgrid leer. Du versuchst dann hiermit
x := x + StrToInt (stringgrid1.Cells[i,z]); einen Leerstring in ein Integer umzuwandeln, was natürlich nicht klappen kann.

Außerdem beginnen die Indizes für row und col bei 0 und enden bei rowcount-1 bzw. colcount-1. Die beiden Schleifenköpfe solltest du also auch anpassen.

Gruß
Safti
  Mit Zitat antworten Zitat
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#3

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 12:05
Zitat von Safti:
ab der 3. Zeile sind die Zellen in deinem Stringgrid leer. Du versuchst dann hiermit
x := x + StrToInt (stringgrid1.Cells[i,z]);...
Meinst du also ich muss schone inmal zuvor eine einschrenkung machen, dass er auch wenn felder leer sind rechnet? oder wie meinst du das?

also sollte diese einschrenkung :
Zitat:
if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'')
davor schon geschehen?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 12:26
if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'') sollte es nicht so heißen:

if (stringgrid1.Cells[i,1] <> inttostr(0)) and (stringgrid1.cells[i,1]<>'') Weil wenn StringGrid[i,1] <> 0 ist, ist das Statement auch wahr wenn StringGrid1[i,1] leer ist und da
Du die beiden Statements mit oder verknüpft sind ist der Ausdruck wahr.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Safti

Registriert seit: 30. Mär 2005
Ort: Freiburg im Breisgau
46 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 12:28
Zitat von Bruce86:
Meinst du also ich muss schone inmal zuvor eine einschrenkung machen, dass er auch wenn felder leer sind rechnet? oder wie meinst du das?

also sollte diese einschrenkung :
Zitat:
if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'')
davor schon geschehen?
Ja genau, so meine ich das.

Edit: Stimmt Klaus, und natürlich AND statt OR.
  Mit Zitat antworten Zitat
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#6

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 13:16
gut also habe jetzt die einschränkung davor geschriebn! nun besteht aber imme rnoch das problem das er nur die erste zeile ausrechnet aber nicht die zweite usw also jede zweile für sich! dazu sollte eigentlich die variable z dienen! wie kann ich das nun realisieren dass er jede zeile für sich rechnet und in das dritte stringgrid ausgibt? also das ist das, neben dem des 1HJ wo die noten drinne stehen! wie realisiere ich das jetzt? also ausgeben tut er es ja aber eben in jede zeile nur die lösung für die erste zeile! ist das zu verstehen?

Vielen dank im vorraus

Bruce86
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 13:31
Delphi-Quellcode:
procedure TForm1.Button10Click(Sender: TObject);
var z,x,y,i:integer;
begin
x:=0;
y:=0;
for z := 1 to Stringgrid1.rowcount do
  begin
    for i := 1 to 9 do
      begin
        x := x + StrToInt (stringgrid1.Cells[i,z]);
        if (stringgrid1.Cells[i,z] <> inttostr(0)) and (stringgrid1.cells[i,z]<>'') then
          y := y+1
      end;
    if y<>0 then
      Stringgrid3.Cells[0,z] := FloatToStr ((x/y)*0.6+(strtofloat(stringgrid1.cells[10,z])*0.4))
    else
      stringgrid3.cells[0,z]:= 'n.b.';
    x:=0;
    y:=0;
  end;
end;
Du solltest nach jeder Zeile x und y wieder auf 0 setzen.

Und vielleicht einmal darauf achten richtig einzurücken.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Bruce86

Registriert seit: 14. Apr 2006
Ort: Magdeburg
51 Beiträge
 
#8

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 13:59
Hi Klaus01

Danke das mich schon mal soweit gebracht hast dass er nun jede zeile für sich rechnet

ABER

er gibt mir wie im Anhang zu sehen folgende fehlermeldungen aus! und das wenn ich auf berechnen klicke!
Erst wenn ich dann ok drücke neu compaliere erscheint der ausgerechnete wert!!!!


Woran liegt das?

Es muss ja mit der Prozedur des "Berechnens" zusammenhängen habe den rest auch schon alles nachgeschaut und mal rausgenommen um zu schauen ob es wirklich nur daran liegt und muss wohl so sein!!!


P.S.: Einrücken war nie so mein fall einfahc alles untereinander und gut ist Werde es mir merken versprochen
Miniaturansicht angehängter Grafiken
fehler_a__597.jpg   fehler_b__129.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Tormentor32
Tormentor32

Registriert seit: 27. Okt 2005
Ort: Düsseldorf
369 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 14:02
Zu diesem Zeitpunkt scheinen deine Stringdrids leer zu sein, also kann er auch nicht damit rechnen...
Richard Mahr
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Berechnung im Stringgrid

  Alt 20. Mär 2007, 14:54
Hallo,

ich würde auch statt StrToInt TryStrToInt nehmen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:52 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