Einzelnen Beitrag anzeigen

Jinchuuriki

Registriert seit: 18. Sep 2017
7 Beiträge
 
#1

Ablauf verzögert sich

  Alt 21. Okt 2017, 15:40
Hallo,

ich habe ein Problem bei folgender Aufgabe:
Ich habe eine Spalte und möchte bei einer Eingabe überprüfen, ob die Eingabe eine Zahl oder nicht.
Sollte sie keine Zahl sein, erscheint ein Hinweis, dass nur Zahlen eingegeben werden sollen.
Am Ende der Spalte sollen alle Werte addiert werden.
Delphi-Quellcode:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
var Summe,i:Integer;
begin
    //Wenn die gedrückte Tastarturtaste im Bereich von 0 bis 9 liegt
    if not (Key in ['0'..'9',Char(VK_BACK)]) then //VK(Virtual-Key)_BACK = Backspace
    begin
        //Die Falsche Eingabe wird mit der Backspace-Taste(#0) gelöscht
        Key := #0;
        Label1.Caption := 'NUR ZAHLEN';
    end;

    //Variable wird initialisiert mit Startwert
    Summe := 0;
    //Tabellenspalte wird durchlaufen
    for i := 1 to StringGrid1.RowCount -2 do
    begin
        //Wenn das Feld leer ist, soll er mit der Abfrage weitermachen
        if StringGrid1.Cells[1,i] = 'then
        Continue
        else
        //Ist das Feld nicht leer, soll der Wert in die Variable addiert werden
        Summe :=Summe + StrToInt(StringGrid1.Cells[1,i]);
        //Letztes Feld kriegt die Summe aller Felder
        StringGrid1.Cells[1,StringGrid1.RowCount -1] := IntToStr(Summe);
    end;
end;
1.Zeile der Spalte ist beschriftet und fixed, deshalb startet die FOR-Schleife mit 1.

Problem:
Der ganze Ablauf, mit dem Zählen, verzögert sich um eine Ausführung.
Bsp:
Feld1= 1 Summe= ist leer
Feld2= 3 Summe= 1
Feld3= 6 Summe= 4

Was habe ich übersehen oder nicht bedacht?

MfG
  Mit Zitat antworten Zitat