![]() |
Berechnung im Stringgrid
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
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:
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;
Delphi-Quellcode:
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!
x := x + StrToInt (stringgrid1.Cells[i,1]);
if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'') MFG Bruce86 |
Re: Berechnung im Stringgrid
Hallo Bruce,
ab der 3. Zeile sind die Zellen in deinem Stringgrid leer. Du versuchst dann hiermit
Delphi-Quellcode:
einen Leerstring in ein Integer umzuwandeln, was natürlich nicht klappen kann. ;)
x := x + StrToInt (stringgrid1.Cells[i,z]);
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 |
Re: Berechnung im Stringgrid
Zitat:
also sollte diese einschrenkung : Zitat:
|
Re: Berechnung im Stringgrid
Delphi-Quellcode:
sollte es nicht so heißen:
if (stringgrid1.Cells[i,1] <> inttostr(0)) or (stringgrid1.cells[i,1]<>'')
Delphi-Quellcode:
Weil wenn StringGrid[i,1] <> 0 ist, ist das Statement auch wahr wenn StringGrid1[i,1] leer ist und da
if (stringgrid1.Cells[i,1] <> inttostr(0)) and (stringgrid1.cells[i,1]<>'')
Du die beiden Statements mit oder verknüpft sind ist der Ausdruck wahr. Grüße Klaus |
Re: Berechnung im Stringgrid
Zitat:
Edit: Stimmt Klaus, und natürlich AND statt OR. |
Re: Berechnung im Stringgrid
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 |
Re: Berechnung im Stringgrid
Delphi-Quellcode:
Du solltest nach jeder Zeile x und y wieder auf 0 setzen.
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; Und vielleicht einmal darauf achten richtig einzurücken. Grüße Klaus |
Re: Berechnung im Stringgrid
Liste der Anhänge anzeigen (Anzahl: 2)
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 :P Werde es mir merken versprochen :???: :tongue: |
Re: Berechnung im Stringgrid
Zu diesem Zeitpunkt scheinen deine Stringdrids leer zu sein, also kann er auch nicht damit rechnen...
|
Re: Berechnung im Stringgrid
Hallo,
ich würde auch statt StrToInt TryStrToInt nehmen. Heiko |
Re: Berechnung im Stringgrid
Liste der Anhänge anzeigen (Anzahl: 1)
hi auf dem screenshot seht ihr dass dieses problem auch besteht wenn in den strings etwas steht zumal es ja bereits mit der if anweisung herausgenommen wurden dass wenn dort die zahl o oder '' steht er dann trotzdem rechnen soll
|
Re: Berechnung im Stringgrid
TryStrToInt ist doch für boolean was will nützt an dieser stelle mit ner wahr oder falsch aussage?
|
Re: Berechnung im Stringgrid
Ich muss hier doch mal einen harten Kommentar geben:
"der Sourcecode ist Schrott, denn es wird völlig planlos auf irgendwelche Zellen zugegriffen" Du hast ein Stringgrid und möchtest aus verschiedenen Zellen eine Zahl entnehmen um damit zu rechnen. Die Zellen können aber auch leer sein oder die Zellenposition ist ungültig. Also braucht man eine saubere Funktion, die alle Fehler abfängt:
Delphi-Quellcode:
Mit der obigen Funktion bekommt die Sache Hand und Fuss.
function GetFloatFromStringGrid(sg: TStringGrid; x,y:integer):extended;
begin Assert(Assigned(sg)); // Bereichsgrenzen prüfen if (x<sg.FixedCols) or (y<sg.FixedRows) or (x >= sg.ColCount) or (y>=sg.RowCount) then raise Exception.CreateFmt('GetFloatFromStringGrid(%s,%d, %d) - Position ungültig', [sg.name, x, y]); try // Umwandlung result := StrToFloat(sg.cells[x,y]); except on E:Exception do begin E.Message := Format('Fehler in %s.Cells[%d, %d]'#13#10 ,[sg.name, x,y])+E.Message; Raise; end; end; end; Du bekommst sofort eine saubere Fehlermeldung, die zeigt, wo's klemmt. |
Re: Berechnung im Stringgrid
Vielleicht die Schleife nur bis
Delphi-Quellcode:
laufen lassen.
for z := 1 to Stringgrid1.rowcount - 1 do
begin String Grids fangen bei Zeile 0 an, wobei bei Dir Zeile 0 die Überschrift ist. [edit] das muß ich shmia recht geben Grüße Klaus |
Re: Berechnung im Stringgrid
Hallo ...,
Zitat:
Zitat:
|
Re: Berechnung im Stringgrid
bei trystrtoint sag er mir aber "nicht genügend wirkliche parameter"!
Und sorry nur mal so ne frage wenn der code so schrott ist warum geht es dann für die erste zeile und nur nicht wenn ich mehrere fächer habe also wie du selber sagst shmia Zitat:
ich meine was kann ich dafür wenn wir dieses projekt bekommen! dachte nur in foren will man helfen! dafür sind sie ja eigentlich gedacht!!!!!!! um denen zu helfen die nicht so viel wissen haben! und sorry das meine stärken nicht im programmieren liegen das wir mit delphi arbeiten sollen und nicht mit vbs und dass wir nur codes neben dürfen die unser lehrer kennt und somit sind schon mal datenbanken xml etc pp verboten super den ganzen scheiß mit zeigern zu machen wisst irh wie toll das ist?! ich glaube schonihr wisst das und ich möchte doch nur um eure hilfe bitten! und ihr habt mir ja auch schon geholfen das will ich ja dmit gar nciht bestreiten nur was ich dann nicht verstehe ist das ihr dann irgendwie so kommt es grad rüber die hilfe für euch einschränkt! das ist etwas was ich nicht verstehe!!! udn ich weiß nicht ob ihr im informatik unterricht unterfordert gewesen seit udn ega was ihr gemacht habt 15 pkt hat ich meine ich habe auch 13 in info und bin damit zu frieden und ich kann eben auch nicht alles!!! |
Re: Berechnung im Stringgrid
Hallo ...,
[OT] meckern hilft aber auch nix! Ich hatte nie Informatik, über Sinn oder Unsinn von Hausaufgaben wurde hier schon oft debattiert, deswegen kann ich mir kein Urteil erlauben. [/OT] Zitat:
LG Mario |
Re: Berechnung im Stringgrid
ja ist doch auch nicht böse gemeint von mir! aber ich denke jeder kann sich vorstellen das wenn solche dinge die dann auch noch hilfreich sind damit meine ich jetzt wie datenbanken etc wenn das nicht erlaubt ist weil de rlehrer das net kann dann nervt das! ich will ja auch gar nicht meckern es ist einfach nur so dass ich dann solche aussagen nicht verstehen kann!!!
Ich meine ihr habt mir schon so oft geholfen und das find eich auch echt super aber ich kann doch nichts dafür das meine prozeduren manchmal nicht vollständig sind und fehler schleichen sich sicherlich auch bei den besten programmieren ein! sehen wir uns nur microsoft an oder???? :wink: :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 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