Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Stringgrid Plus Minus Vergleich (https://www.delphipraxis.net/161269-stringgrid-plus-minus-vergleich.html)

fl63 25. Jun 2011 13:50

Delphi-Version: 5

Stringgrid Plus Minus Vergleich
 
Hallo

Ich habe folgendes Problem:

Delphi-Quellcode:
procedure TForm1.PlusMinus(Sender: TObject);
var
i :integer; k,l:Real;
begin

 JvSG1.Cells[9,1] := '00';
     begin
     For i:= 1 to JvSG1.RowCount-1 do //Plus Minus in die Spalte Einfügen
       begin
        k:= StrToFloat(JvSG1.Cells[2,i]); l:= StrToFloat(JvSG1.Cells[2,i+1]);
       If k > l then JvSG1.Cells[9,i+1] := '-1';
       If k < l then JvSG1.Cells[9,i+1] := '+1';
       If k = l then JvSG1.Cells[9,i+1] := '0';
       end;
     end;                                 // Plus Minus Einfügen beendet
  BerechneSummenspaltePlusMinus(Sender);
end;

procedure TForm1.BerechneSummenspaltePlusMinus(Sender:TObject);
var i,Summe :integer;

begin
Summe := 100; JvSG1.Cells[10,1] := '100'; //Startwerte
 Label1.Caption:=JvSG1.Cells[10,1];
   For i:= 1 to JvSG1.RowCount-1 do
      begin
      Summe := Summe + StrToInt(JvSG1.Cells[9,i]);
      JvSG1.Cells[10,i] := IntToStr(Summe);
      end;
end;
procedure PlusMinus ist fehlerfrei
erzeugt aus Vergleichswerten +1, 0 oder -1 in einer Spalte

procedure Berechne SummeSpalte... ist fehlerbehaftet
sämtliche Werte der PlusMinus Spalte sollen zu einem Startwert addiert werden und die Ergebnisse in einem Chart angezeigt werden.

Problem: keinerlei Anzeige in Spalte 10

Bitte um Hilfe

DeddyH 25. Jun 2011 14:02

AW: Stringgrid Plus Minus Vergleich
 
Spalte 10 oder Spalte 11? BTW: Wäre es nicht günstiger, Logik und Darstellung zu trennen? Ich würde mir ja ein 2-dimensionales Array (oder wenn es gemischte Zahlentypen sind, ein 1-dimensionales Array of record) deklarieren und da meine Zahlen reinpacken. Damit lässt es sich IMO viel besser rechnen, das StringGrid dient dann nur noch zur Darstellung des Array-Inhalts.

fl63 25. Jun 2011 15:19

AW: Stringgrid Plus Minus Vergleich
 
@DeddyH
Natürlich 11te Spalte.

Dennoch zeigt IndexSpalte 10 nichts an.

Trennung zwischen Logik und Anzeige ist für mein winziges Programm vielleicht nicht nötig.
Es interessiert mich dennoch. Im Anschluß an die Lösung dieses Problems, werde ich das ganze nochmals überdenken.

alfold 25. Jun 2011 15:34

AW: Stringgrid Plus Minus Vergleich
 
Und dies ist bei beiden korrekt?
Delphi-Quellcode:
If k > l then JvSG1.Cells[9,i+1] := '-1';
If k < l then JvSG1.Cells[9,i+1] := '+1';
If k = l then JvSG1.Cells[9,i+1] := '0';

 Summe := Summe + StrToInt(JvSG1.Cells[9,i]);// i+1 ???
Gruss alfold

fl63 25. Jun 2011 15:39

AW: Stringgrid Plus Minus Vergleich
 
Zitat:

Zitat von alfold (Beitrag 1108264)
Und dies ist bei beiden korrekt?
Delphi-Quellcode:
If k > l then JvSG1.Cells[9,i+1] := '-1';
If k < l then JvSG1.Cells[9,i+1] := '+1';
If k = l then JvSG1.Cells[9,i+1] := '0';

 Summe := Summe + StrToInt(JvSG1.Cells[9,i]);// i+1 ???
Gruss alfold

Bei beiden korrekt??
Was meinst du??

alfold 25. Jun 2011 15:59

AW: Stringgrid Plus Minus Vergleich
 
Zitat:

Zitat von fl63 (Beitrag 1108247)
....
sämtliche Werte der PlusMinus Spalte sollen zu einem Startwert addiert werden und die Ergebnisse in einem Chart angezeigt werden.

Weil Du einmal Zeile i+1 zum füllen angibst und dann nur mit Zeile i die Summe berechnest. Obwohl in Zeile
Delphi-Quellcode:
JvSG1.Cells[9,1] := '00'
'00' drinsteht?

Gruss alfold

fl63 25. Jun 2011 16:16

AW: Stringgrid Plus Minus Vergleich
 
Also die PlusMinus Prozedur funktioniert einwandfrei von der ersten bis zur letzten Zeile stehe Nullen plusEinsen oder MinusEinsen drin.

Die SummenProzedur hat den Startwert Summe= 100, und darauf sollen die Nullen usw. addiert werden Summe := Summe + InttoStr(Cell[9,i]).
Als Ergebnis soll in Cell[10,i] jeweils die Neue Summe stehen.

JvSG1.Cells[9,1] := '00' soll nur als Füllzeichen stehen, kann auch weggelassen werden.

Zitat:

Zitat von alfold (Beitrag 1108267)
Weil Du einmal Zeile i+1 zum füllen angibst und dann nur mit Zeile i die Summe berechnest.

Gruss alfold

Zeile i wird mit Zeile i+1 verglichen.
Der Quelltext ist vielleicht nicht modern aber korrekt.

alfold 25. Jun 2011 16:23

AW: Stringgrid Plus Minus Vergleich
 
Warum setzt Du nicht ein Breakpoint an der Stelle
Delphi-Quellcode:
 Summe := Summe + StrToInt(JvSG1.Cells[9,i]);
und dann step by step die Werte auslesen ob es stimmt was da passieren soll.

Gruss alfold

fl63 25. Jun 2011 16:34

AW: Stringgrid Plus Minus Vergleich
 
Neuer Quelltext:

Delphi-Quellcode:
procedure TForm1.PlusMinusGrafik2(Sender: TObject);
var
i,Summe :integer; k,l:Real;
begin
Summe := 100;
//JvSG1.InsertCol(9);
 JvSG1.Cells[9,1] := '00';
     begin
     For i:= 1 to JvSG1.RowCount-1 do //Plus Minus in die Spalte Einfügen
       begin
        k:= StrToFloat(JvSG1.Cells[2,i]); l:= StrToFloat(JvSG1.Cells[2,i+1]);
       If k > l then JvSG1.Cells[9,i+1] := '-1';
       If k < l then JvSG1.Cells[9,i+1] := '+1';
       If k = l then JvSG1.Cells[9,i+1] := '0';
      Summe := Summe + StrToInt(JvSG1.Cells[9,i]);
      JvSG1.Cells[10,i] := IntToStr(Summe);
       end;
     end;                                 // Plus Minus Einfügen beendet
//  BerechneSummenspaltePlusMinus(Sender);
end;
Jetzt habe ich mal die Zwei Prozeduren in eine geschrieben.

IndexZeile[10,i] wird jetzt bis auf die &&vorletzte&& Zeile ausgefüllt.

Zeile (RowCount-1)-1 ist die vorletzte Zeile und nicht RowCount-1.
Warum??

alfold 25. Jun 2011 16:57

AW: Stringgrid Plus Minus Vergleich
 
RowCount -1 ist die letzte Zeile. Verstehe deine Frage nicht.
Allerdings hätt es hier
Delphi-Quellcode:
JvSG1.Cells[9,i+1]
knallen müssen! Weil Du auf eine Zeile zugreifst die nicht da ist!?

Seeehr mergwürdig:shock:

Gruss alfold


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