Kolejny post.
Bardzo proszę o pomoc.
Otóż:
Tworzę niewielki program do szkoły. Polega on mniej więcej na czymś w rodzaju testu, sprawdzianu czy quizu (jakby go nie nazwać).
Gracz ma za zadanie wybrać właściwą odpowiedź (RADIObutton), a nastepnie nacisnąć przycisk Reply zatwierdzający wybór i przenoszący do kolejnego pytania. Wykonałem projekt, który możecie zobaczyć poniżej, ale gdy chciałem go przekompilować na program pojawił się problem.
Projekt nie chce się skompilować.
Podświetlił się fragment tekstu (zmiana koloru bg) procedure Ttest.formCreate (Sender: TObject);
Domyślam się, ze oznacza to bład w procedurze.
Więc teraz mam do Was proźbę o wskazanie, a najlepiej poprawę błedu i umieszczenie poprawnego kodu w poście. Byłbym bardzo wdzięczny, gdyz słabo znam się na programowaniu.
Oto kod:
unit z;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, jpeg;
type
Ttest = class(TForm)
panelPytanie: TPanel;
panelOdpowiedzi: TPanel;
panelStatystyka: TPanel;
tekstPytanie: TLabel;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
tekstLiczbaPytan: TLabel;
tekstLiczbaPoprawnych: TLabel;
tekstLiczbaNiepoprawnych: TLabel;
radioOdpowiedz1: TRadioButton;
radioOdpowiedz2: TRadioButton;
radioOdpowiedz3: TRadioButton;
przyciskOdpowiedz: TButton;
MainMenu1: TMainMenu;
Game1: TMenuItem;
Reply1: TMenuItem;
N1: TMenuItem;
Quit1: TMenuItem;
Author1: TMenuItem;
Image1: TImage;
procedure Quit1Click(Sender: TObject);
procedure Author1Click(Sender: TObject);
procedure przyciskOdpowiedzClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const liczbaPytan= 10;
var
test: Ttest;
pytania: array [1..liczbaPytan] of string;
odpowiedzi1: array[1..liczbaPytan]of string;
odpowiedzi2: array[1..liczbaPytan]of string;
odpowiedzi3: array[1..liczbaPytan]of string;
poprawne: array[1..liczbaPytan] of integer;
aktualnePytanie:integer;
liczbaPoprawnych:integer;
implementation
uses unit2;
{$R *.dfm}
procedure Ttest.formCreate (Sender: TObject);
begin
pytania[1]:='(Kto jest najlepszym angilkiem');
odpowiedzi1[1]:=('Rowan Atkinosn');
odpowiedzi2[1]:=('ktos inny');
odpowiedzi3[1]:=('nie ma takiego');
poprawne[1]:=1;
pytania[1]:=('Kto jest angielksim pisarzem');
odpowiedzi1[2]:=('J. Bush');
odpowiedzi2[2]:=('Ruswell');
odpowiedzi3[2]:=('Tolkien');
poprawne[1]:=3;
pytania[1]:=('Kto ma na imie john');
odpowiedzi1[3]:=('Atkinson');
odpowiedzi2[3]:=('Cleese');
odpowiedzi3[3]:=('Van damme');
poprawne[1]:=2;
liczbaPoprawnych:=0;
aktualnePytanie:=1;
uaktualnijNapisy(aktualnePytanie);
end;
procedure Ttest.Quit1Click(Sender: TObject);
begin
close;
end;
procedure uaktualnijNapisy(numerPytania:integer);
begin
test.Caption:=Quiz "The Famous British People". Pytanie'+intToStr(aktualnePytanie)+'/'+intToStr(liczbaPytan);
test.tekstPytanie.Caption:=pytania[numerPytania]
test.radioOdpowiedz1.Caption:=odpowiedzi1[numerPytania];
test.radioOdpowiedz2.Caption:=odpowiedzi2[numerPytania];
test.radioOdpowiedz3.Caption:=odpowiedzi3[numerPytania];
test.tekstLiczbaPytan.Caption:=intToStr(aktualnePytanie - 1 );
test.tekstPytanie.LiczbaPoprawnych.Caption:=intToStr(liczbaPoprawnych) ;
test.tekstLiczbaNiepoprawnych.Caption:=intToStr(aktualnePytanie - liczbaPoprawnych -1 );
end;
procedure Ttest.Author1Click(Sender: TObject);
begin
form2.Showmodal;
end;
function ktoraOdpowiedzWybrano: integer;
begin
if test.radioOdpowiedz1.Checked then
begin
test.radioOdpowiedz1.Checked:=false;
ktoraOdpowiedzWybrano:=1;
end
else if test.radioOdpowiedz2.Checked then
begin
test.radioOdpowiedz2.Checked:=false;
ktoraOdpowiedzWybrano:=2;
end
else if test.radioOdpowiedz3.Checked then
begin
test.radioOdpowiedz3.Checked:=false;
ktoraOdpowiedzWybrano:=3;
end
else
ktoraOdpowiedzWybrano:=1;
end;
procedure Ttest.przyciskOdpowiedzClick(Sender: TObject);
var wybranaOdpowiedz:integer;
begin
wybranaOdpowiedz:= ktoraOdpowiedzWybrano();
if wybranaOdpowiedz=-1 then
showMessage ('Select answer')
else
begin
if wybranaOdpowiedz=poprawne[aktualnePytanie] then
liczba Poprawnych:=liczbaPoprawnych+1;
aktualnePytanie:=aktualnePytanie+1;
if aktualnePytanie<=liczbaPytan then
uaktualnijNapisy(aktualnePytanie)
else
begin
test.tekstLiczbaPytan.Caption:=intToStr(liczbaPytan );
test.tekstLiczbaPoprawnych.Caption:=intToStr(liczbaPoprawnych) ;
test.tekstLiczbaNiepoprawnych.Caption:=intToStr(liczbaPytan - liczbaPoprawnych );
showmessage('You reply for all questions');
close;
end;
end;
end;
end.
Proszę o nie wyrzucanie do kosza tego tematu, dopóty, dopóki nie zostanie poprawiony błąd