Nie mogę dodać obliczeń do listboxu.

0

Witam.
Mam problem.
Czy mógłby ktoś spojrzeć na ten kod?

procedure TForm1.Button2Click(Sender: TObject);
var
i,ix:integer;
begin
i:=50;
ix:=100;
begin
form1.listbox1.Items.add(inttostr(i) / (inttostr(ix)));
end;
end; 

Nie chce mi to działać. Chciałem by podzieliło mi 50/100, jednak to nie działa. Ogarnia ktoś co jest nie tak ? Ja już próbowałem to zrobić jakiś czas i nie chce kompletnie działać.

Pisze mi dokładnie tak:
[Error] Unit1.pas(154): Operator not applicable to this operand type.

Proszę o pomoc, dzięki.

5

Chcesz dzielić napis przez napis więc nie ma się co dziwić. IntToStr zamienia liczbę całkowitą na napis (string). Operator /służy do dzielenia liczb rzeczywistych jeśli nie zależy ci na tym co jest po przecinku użyj div. poprawnie to co wyżej powinno wyglądać tak:

  form1.listbox1.Items.add( FloatToStr(i / ix));

FloatToStr konwertuje zmienną zmiennoprzecinkową na napis, który możesz dopiero dodać do listbox'a

1

Bo jak zwykle:

  1. nie myślisz co robisz,
  2. nie czytasz komunikatów kompilatora;
    Trudno, żeby takie instrukcje w ogóle się skompilowały, dlatego że próbujesz przekonwertowane łańcuchy podzielić przez siebie, a operator / nie pozwala na dzielenie łańcuchów:
(inttostr(i) / (inttostr(ix)

Jeśli do komponentu ma zostać dodany wynik dzielenia dwóch liczb, to przekonwertować musisz wynik dzielenia, a nie próbować to robić już po konwersji; Po drugie operator / nie służy do dzielenia całkowitego, więc wynikiem dzielenia nie będzie liczba całkowita; Jeżeli chcesz wykorzystać dzielenie całkowite, z odciętą resztą, to wykorzystaj operator Div:

Form1.Listbox1.Items.Add(IntToStr(i div ix));

A jeśli wynikiem ma być liczba zmiennoprzecinkowa, z jakąś dokładnością dzielenia, to wtedy skorzystaj z operatora /, ale do konwersji musisz użyć innej funkcji, np. FloatToStr:

Form1.Listbox1.Items.Add(FloatToStr(i / ix));

Na przyszłość jednak polecam zacząć się uczyć programowania i czytać komunikaty kompilacji, bo nie są po to wyświetlane żeby Cię wkurzać, a wyjaśniają dokładnie co jest błędnie zapisane w kodzie;


Edit: Spóźniłem się nieco.

0

Dziękuję. Można zamknąć.

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