Wypisanie wyniku funkcji.

0

Okay, to muszę zrobić program okienkowy w Delphi. Ogólnie to chodzi o to, aby pokazywał liczby doskonałe z pewnego podanego przedziału. No i jako program konsolowy to zrobiłem, ale z okienkowym mam problem, bo nie wiem jak zrobić. Tutaj jest kod: http://pastebin.com/XFx8kvt5

Bo ja chcę zrobić tak żeby można było wpisać krańce przedziału w pola TEdit i potem po kliknięciu przycisku wykonało funkcję i wypisało wynik. ?. Bo np. InttoStr nie działa na funkcjach i sobie myślałem żeby zmienić tą funkcję żeby sama nie wypisywałaby tych liczb, ale nie mam pomysłu jak to zrobić i też nie wiem czy w ogóle Tlabel jest dobre do pokazania końcowego wyniku. Co robić?

0

Wykorzystaj TMemo.

Poza tym tego nie rozumiem:

for krok := A to B do
begin
Label2.Caption := InttoStr(funkcja(A));
A := A + 1;
end;

Dlaczego IntToStr(Funkcja(A)) i A := A+1; zamiast IntToStr(Funkcja(Krok))?

Oraz to: x/2 - to jest operator dzielenia liczb zmiennoprzecinkowych, a nie całkowitych.

0
Label2.Caption := InttoStr(funkcja(A));

mozesz sprobowac

Label2.Caption := Label2.Caption + #13#10 + IntToStr(Funkcja(a));
0
Patryk27 napisał(a):

Dlaczego IntToStr(Funkcja(A)) i A := A+1; zamiast IntToStr(Funkcja(Krok))?
.

W sumie to nie wiem, ale na to samo wyszło, nie?

Ogólnie mam taki problem, że po kliknięciu przycisku wyskakuje mi w TMemo losowa liczba i błąd: I/O Error 105.

mca64 napisał(a):

mozesz sprobowac

Label2.Caption := Label2.Caption + #13#10 + IntToStr(Funkcja(a));

Tutaj jakby działa, bo wypisuje kilka wyników(losowych, ale nadal).

Żeby komenda IntToStr zadziałała musiałem zmienić tą procedurę na funkcję i może dlatego zwraca jakieś dziwne wyniki, ale nie wiem.

0

Przede wszystkim język podajemy w tagach, a nie dodatkowo w temacie wątku. Kolejna rzecz, powodzenia z uzyskaniem działania Writeln w aplikacji bez konsoli. Najpewniej skończy się wyjątkiem.

Poza tym nie dziwota, że nie działa IntToStr(...), skoro funkcja o nazwie funkcja, funkcją w Twoim kodzie nie jest. Bo deklarujesz ją jako procedurę. Także ogarnij najpierw kurs z podstawami, może być kompemdium na 4p, dopiero wtedy bierz się za programowanie.

0

Przecież ten temat jest w dziale Newbie? I przecież właśnie napisałem, że zmieniłem tą procedurę na funkcję, to tych zarzutów też nie rozumiem. Kod z linka w pierwszym poście jest trochę nieaktualny.

0

po kliknięciu przycisku wyskakuje mi w TMemo losowa liczba i błąd: I/O Error 105.

Wrzuć aktualny kod.
Choć zgaduję, że masz w nim wciąż Writeln, którego nie może być w aplikacji okienkowej (chyba że dodasz {$APPTYPE CONSOLE}, ale nie do tego dążymy).

0

http://pastebin.com/eLn0z4tx

Ogólnie to mi się prawie udało. Wypisuje liczby ok, ale między nimi pojawiają się losowe liczby, czyli np. Dla [1;6] mam:

16788492
16994708
16935708
16964524
16634492
6

Ma ktoś jakiś pomysł?

0

Masz funkcję, lecz nie zwracasz z niej wyniku.

0

Tak, tak, naprawiłem to. Ale pojawia się problem, że wypisuje mi wszystko. Mam taki kod w pętli: if(x = a) then result := x; . Liczby, które są dobre dobrze wypisuje, ale też wypisuje liczby losowe, bo nie wie co zrobić w przypadku kiedy x =! a. Wypisuje wszystko dla Funkcja(1), funkcja(2) itd.

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