Odczytanie wartości konkretnych pozycji z StringGrida

0

Szukam sposobu, aby pod przyciskiem mieć przypisaną procedurę liczenia średniej z ocen. Problem polega na tym, że oceny te mam powpisywane do stringgrida. Jak można wrzucić do procedury wartości z konkretnych komórek z stringgrida?. Chodzi mi o wyciągniecie 8 liczb z pierwszego wiersza (pierwsze pole tego wiersza ma nazwę przedmiotu wiec powinien być pominięty). Korzystałem już z przykładów w internecie ale albo nie do końca pasowały do mojego przypadku albo wywalało mi problemy z typami zmiennych ;(.

0

Przesłana procedura wypełnia mi całego stringgrida cyframi:D. A mi chodzi o odczyt wartości z konkretnych komórek. Jest jakiś sposób na taki odczyt?

1

Właściwość cells służy do odczytu i zapisu.

0

A można prosić o dokładniejsze wytłumaczenie?

0

Stworzyłem coś takiego, ale wg mnie jest tu coś kompletnie skopane;( Tylko się nie śmiać ;D.

procedure TForm1.Button3Click(Sender: TObject);
  var
  srednia:real;
  c1,c2,c3,c4,c5,c6,c7,c8: string;
  begin
     Caption:=StringGrid1.Cells[2,2];
     Caption:=StringGrid1.Cells[2,3];
     Caption:=StringGrid1.Cells[2,4];
     Caption:=StringGrid1.Cells[2,5];
     Caption:=StringGrid1.Cells[2,6];
     Caption:=StringGrid1.Cells[2,7];
     Caption:=StringGrid1.Cells[2,8];
     Caption:=StringGrid1.Cells[2,9];

     c1:= strtofloat(StringGrid1.Cells[2,2]);
     c2:= strtofloat(StringGrid1.Cells[2,3]);
     c3:= strtofloat(StringGrid1.Cells[2,4]);
     c4:= strtofloat(StringGrid1.Cells[2,5]);
     c5:= strtofloat(StringGrid1.Cells[2,6]);
     c6:= strtofloat(StringGrid1.Cells[2,7]);
     c7:= strtofloat(StringGrid1.Cells[2,8]);
     c8:= strtofloat(StringGrid1.Cells[2,9]);

     srednia:= (c1+c2+c3+c4+c5+c6+c7+c8)/8;
     srednia.text:=Floattostr(srednia);
end;

dodanie znacznika <code class="delphi"> - furious programming

0

Te wpisania do caption nie są potrzebne.
Czy słyszałeś może coś o magicznym tworze zwanym pętlą ?

procedure TForm1.Button3Click(Sender: TObject);
var avg:Double;
var I:Integer;
begin
  avg:=0;
  for I:=2 to 9 do avg:=avg+StrToFloat(StringGrid1.Cells[2,I]);
  srednia.text:=FloatToStr(avg/8);
end;
0

Słyszałem, ale jak dla mnie taka metoda jest lepsza. I tak programistą nie będę a przedmiot trzeba zaliczyć ;D To mówisz,że bez captionów tych? Bo mi tu jeszcze błąd typów wyskakuje. I krzyczy kompilator co linijkę ;( Mógłbyś mniej więcej napisać tą procedurę dla sumy dwóch komórek z wiersza a ja bym na twoim przykładzie bym rozwinął i zrobił średnią? Nie chce gotowca! A na przykładzie szybciej ogarnę ;)

Wprowadziłem tą procedurę co mi podałeś i wyskakuje błąd ;" '' in not a valid floating point value". ?

0

Ktorego słowa nie rozumiesz w zdaniu:

'' in not a valid floating point value
?

0

A kurcze działa sorry, ale ze mnie gapa. Po prostu nie miałem całego stringgrida wypełnionego i dlatego wywalało ' ". Zaraz zmodyfikuje to co podałeś, żeby liczyło dla jednego wiersza jeśli mi się uda:D Proszę o nie zamykanie wątku zaraz się jeszcze odezwę;D

Dziękuję serdecznie za pomoc:D wystarczyło zmienić StringGrid1.Cells[i,1]) na StringGrid1.Cells[1,i]); Teraz ładnie liczy średnią dla liczb w całym wierszu :)

Można watek zamknąć ;D

1 użytkowników online, w tym zalogowanych: 0, gości: 1