Konwersja StrtoInt oraz IntToStr z błędem

0

Witam.
Mam po napisania w sumie prostą procedurę która ma za zadanie:

  • zmienić string na integer z pola Edit
  • zmienić string na integer z pola StringGrid
  • zsumować bądź odjąć Edit od StringGrid w zależności od wybranego RadioButton a wynik zmienić na string i zapisać w StringGridzie.

Z moich wypocin wyszło coś takiego:

procedure TForm3.wykonaj;
var i,j,k:integer;
begin
  if Form3.RadioButton1.Checked=false then begin
    i:=StrtoInt(Form2.StringGrid1.Cells[1,1]);
    j:=StrToInt(Form3.Edit1.Text);
    k:=i+j;
    Form2.StringGrid1.Cells[1,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,1]);
    j:=StrToInt(Form3.Edit2.Text);
    k:=j+i;
    Form2.StringGrid1.Cells[2,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[3,1]);
    j:=StrToInt(Form3.Edit3.Text);
    k:=j+i;
    Form2.StringGrid1.Cells[3,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[4,1]);
    j:=StrToInt(Form3.Edit4.Text);
    k:=i+j;
    Form2.StringGrid1.Cells[4,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,1]);
    j:=StrToInt(Form3.Edit5.Text);
    k:=i+j;
    Form2.StringGrid1.Cells[2,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,2]);
    j:=StrToInt(Form3.Edit6.Text);
    k:=i+j;
    Form2.StringGrid1.Cells[2,2]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,3]);
    j:=StrToInt(Form3.Edit7.Text);
    k:=i+j;
    Form2.StringGrid1.Cells[2,3]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,4]);
    j:=StrToInt(Form3.Edit8.Text);
    k:=i+j;
    Form2.StringGrid1.Cells[2,4]:=IntToStr(k);
  end
  else begin
    i:=StrToInt(Form2.StringGrid1.Cells[1,1]);
    j:=StrToInt(Form3.Edit1.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[1,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,1]);
    j:=StrToInt(Form3.Edit2.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[2,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[3,1]);
    j:=StrToInt(Form3.Edit3.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[3,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[4,1]);
    j:=StrToInt(Form3.Edit4.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[4,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,1]);
    j:=StrToInt(Form3.Edit5.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[2,1]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,2]);
    j:=StrToInt(Form3.Edit6.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[2,2]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,3]);
    j:=StrToInt(Form3.Edit7.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[2,3]:=IntToStr(k);
    i:=StrToInt(Form2.StringGrid1.Cells[2,4]);
    j:=StrToInt(Form3.Edit8.Text);
    k:=i-j;
    Form2.StringGrid1.Cells[2,4]:=IntToStr(k);
   end;
  end;

Jednakże po wpisaniu liczb i próbie wykonania procedury wyskakuje EConvertError "" is not a valid integer value.
Dodam, że wartości w polach Edit są początkowo domyślnie ustawione na 0.
Moje pytanie brzmi: gdzie popełniłem błąd?

3

Wina leży w tym, że wartość którą chcesz ze stringa zmienić na integer nie jest liczbą całkowitą, a z tego co wklejasz jest pustym tekstem. Rozwiązanie to sprawdzać czy tekst nie jest równy '' albo posiłkować się procedurą Val (Val), ewentualnie TryStrToInt. Możłiwości jest wiele, trzeba tylko pokombinować.

0

W polach Edit na dzień dobry są wpisane 0. Nie wpisuję do nich ułamków, lecz liczby 1,2,4 itp. więc dlaczego błąd mówi, że tekst jest równy "?

Dzięki. Poradziłem sobie dzięki procedurze Val.

0
alucard321pl napisał(a):

W polach Edit na dzień dobry są wpisane 0. Nie wpisuję do nich ułamków, lecz liczby 1,2,4 itp. więc dlaczego błąd mówi, że tekst jest równy "?

Dzięki. Poradziłem sobie dzięki procedurze Val.
a w gridzie?

2

Moje pytanie brzmi: gdzie popełniłem błąd?

W następujących rzeczach:

  • Nie użyłeś tak podstawowego narzędzia jak debugger, który by ci pozwolił stwierdzenie źródła problemu w minutę.
  • Nie użyłeś tak zaawansowanych konstrukcji jak np. for który ułatwia zarządzanie kodem, skraca go i ułatwia czytanie.

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