#1 6. Mai 2007 Psychologietest Also bis jetzt sieht mein Code wie folgt aus: Code: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm2 = class(TForm) Label1: TLabel; Label2: TLabel; label_vorname: TLabel; label_nachname: TLabel; Button1: TButton; label_text: TLabel; Button2: TButton; label_frage: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); //Tfrage = array[0..1] of string; private { Private-Deklarationen } public { Public-Deklarationen } Seite:integer; dummy:integer; i:integer; e_depressiv,e_zwanghaft,e_hysterisch,e_dummy,e_luegen,e_schizoid:integer; end; var Form2: TForm2; type TFragen = record Frage: string; Kategorie: byte; IndexDerFrageZumGegenrechnen:integer; GewaehlteAntwort:byte; end; const depressiv = 0; hysterisch = 1; zwanghaft = 2; schizoid = 3; dummy = 4; luegen = 5; var Fragen: array [0..50] of TFragen; implementation uses Unit1, Unit3; {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin form1.close; end; procedure TForm2.FormCreate(Sender: TObject); begin //form2.Button2.SetFocus; Radiobutton1.Hide; Radiobutton2.Hide; Radiobutton3.Hide; Radiobutton4.Hide; Radiobutton5.Hide; label4.Hide; label3.Hide; label_text.caption:= 'Lieber Testteilnehmer,'+#13+#10+'Liebe Testteilnehmerin,'+#13+#10+#13+#10+ 'dies ist ein Test, der Ihr Freizeitverhalten untersuchen wird. Ich bitte Sie, alle Fragen so zu ' +#13+#10+ 'beantworten, dass Ihre Antworten am besten Ihrer Einstellung entsprechen. Neben jeder Frage '+#13+#10+'sehen Sie fünf Antwortmöglichkeiten. Die Kästchen dazwischen geben jeweils Zwischenwerte an,'+#13+#10+ ' damit Sie ihre Antworten'+#13+#10+'besser abstufen können. Lassen Sie bitte keine Frage aus und entscheiden Sie spontan, welche '+#13+#10+ 'Antwort am besten zu Ihnen passt.'; fragen[0].Frage:='Bei Diskussionen halte ich mich her zurück. '; fragen[0].Kategorie:= 0 ; fragen[1].Frage:='Die meisten Menschen sind mir zu neugierig. '; fragen[1].Kategorie:= 3 ; fragen[2].Frage:='Ich habe viele Klamotten im Schrank, die mir zum Anziehen zu schade sind.'; fragen[2].Kategorie:= 2 ; fragen[3].Frage:='Ich spiele gerne Fußball.'; fragen[3].Kategorie:= 4 ; fragen[4].Frage:='Ich werde bestimmt mal im Lotto gewinnen.'; fragen[4].Kategorie:= 1 ; fragen[5].Frage:='Ich fühle mich mit regelmäßigem Tagesablauf am wohlsten.'; fragen[5].Kategorie:= 2 ; fragen[6].Frage:='Ich brache viel Zeit für mich. '; fragen[6].Kategorie:= 3 ; fragen[7].Frage:='Ich habe schnell Mitleid. '; fragen[7].Kategorie:= 0 ; fragen[7].IndexDerFrageZumGegenrechnen :=32; fragen[8].Frage:='Ein Umzug in eine völlig neue Gegend wäre nichts für mich.'; fragen[8].Kategorie:= 2 ; fragen[8].IndexDerFrageZumGegenrechnen:= 24; fragen[9].Frage:='Immer mit den gleichen Leuten unterwegs zu sein ist mir zu langweilig'; fragen[9].Kategorie:= 1 ; fragen[9].IndexDerFrageZumGegenrechnen:= 34; fragen[10].Frage:='Man sollte lieber seine Meinung für sich behalten, um keinen Streit zu provozieren.'; fragen[10].Kategorie:= 0 ; fragen[11].Frage:='Mein Verhalten ist immer einwandfrei.'; fragen[11].Kategorie:= 5 ; end; procedure TForm2.Button2Click(Sender: TObject); var i :integer ; begin case seite of 0: begin label_text.Caption:=''; label_frage.caption:=fragen[seite].Frage; Radiobutton1.show; Radiobutton2.show; Radiobutton3.show; Radiobutton4.show; Radiobutton5.show; label3.Show; label4.Show; Seite:=seite+1; end; 1..11: begin if (radiobutton1.Checked = false) and (radiobutton1.Checked = false) and (radiobutton2.Checked = false) and (radiobutton3.Checked = false) and (radiobutton4.Checked = false) and (radiobutton5.Checked = false) then begin messagedlg('Du hast keine Auswahl getroffen', mterror, [mbok], 1); abort; end else begin label_frage.caption := fragen[seite].Frage; if radiobutton1.Checked then fragen[seite].GewaehlteAntwort := 2; if radiobutton2.Checked then fragen[seite].GewaehlteAntwort := 1; if radiobutton3.Checked then fragen[seite].GewaehlteAntwort := 0; if radiobutton4.Checked then fragen[seite].GewaehlteAntwort := 0; if radiobutton5.Checked then fragen[seite].GewaehlteAntwort := 0; radiobutton1.Checked := false; radiobutton2.Checked := false; radiobutton3.Checked := false; radiobutton4.Checked := false; radiobutton5.Checked := false; seite:= seite +1; end; end; 12: begin i:=1; [B] for i := 0 to 13 do begin if fragen[i].Kategorie= 0 then e_depressiv := e_depressiv + (fragen[i].GewaehlteAntwort); if fragen[i].Kategorie= 1 then e_hysterisch := e_hysterisch + (fragen[i].GewaehlteAntwort); if fragen[i].Kategorie= 2 then e_zwanghaft := e_zwanghaft + (fragen[i].GewaehlteAntwort); if fragen[i].Kategorie= 3 then e_schizoid := e_schizoid + (fragen[i].GewaehlteAntwort); if fragen[i].Kategorie= 4 then e_dummy := e_dummy + (fragen[i].GewaehlteAntwort); if fragen[i].Kategorie= 5 then e_luegen:= e_luegen +(fragen[i].GewaehlteAntwort);[/B] { messagedlg('depressiv: '+inttostr(e_depressiv)+'zwanghaft:'+inttostr(e_zwanghaft)+'schizoid: '+inttostr(e_schizoid)+'hysterisch: ' +inttostr(e_hysterisch),mtinformation,[mbok],1);} end; form3.label_depressiv.caption := inttostr(e_depressiv); form3.label_zwanghaft.caption := inttostr(e_zwanghaft); form3.label_schizoid.caption := inttostr(e_schizoid); form3.label_hysterisch.caption := inttostr(e_hysterisch); form3.label_luegen.caption := inttostr(e_luegen); form2.Hide; form3.Show; End; end; end; end. Das Problem das jetzt aufrtitt is folgendes: Beim auszählen der Ergebnisse ( fett marikiert) zählt das Programm imme reinmal versetzt. d.h. bei kategorie depressiv bei der ersten Frage nichts dafür zählt er die 2. Punkte die er bei depressiv hätte machen müssen zu schizoid. Also immer genau einen versetzt. Warum? ich finde den Fehler beim besten willen nicht. + Multi-Zitat Zitieren
#2 7. Mai 2007 AW: Psychologietest wieso setzt du i erst auf 1 und fängst dann bei 0 an zu zählen? entscheid dich doch^^...mfg coach + Multi-Zitat Zitieren
#3 7. Mai 2007 AW: Psychologietest ROFL... Recht hatta ^^ mhh also ich hab das Problem mit viel Mühe gelöst / ein workaround geschrieben ^^ Jetzt eröffnen sich andere dafür ich will lieber die Fragen in einem ACP bearbeiten können ^^ da sitz ich atm dran ^^ per ini file .... \\ Code: unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm2 = class(TForm) Label1: TLabel; Label2: TLabel; label_vorname: TLabel; label_nachname: TLabel; Button1: TButton; label_text: TLabel; Button2: TButton; label_frage: TLabel; RadioButton1: TRadioButton; RadioButton2: TRadioButton; RadioButton3: TRadioButton; RadioButton4: TRadioButton; RadioButton5: TRadioButton; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); //Tfrage = array[0..1] of string; private { Private-Deklarationen } e_depressiv,e_zwanghaft,e_hysterisch,e_dummy,e_luegen,e_schizoid:integer; public { Public-Deklarationen } Seite:integer; dummy:integer; i:integer; end; var Form2: TForm2; type TFragen = record Frage: string; Kategorie: byte; IndexDerFrageZumGegenrechnen:integer; GewaehlteAntwort:byte; end; const depressiv = 1; const hysterisch = 2; const zwanghaft = 3; const schizoid = 4; const dummy = 5; const luegen = 6; var Fragen: array [0..50] of TFragen; implementation uses Unit1, Unit3; {$R *.dfm} procedure TForm2.Button1Click(Sender: TObject); begin form1.close; end; procedure TForm2.FormCreate(Sender: TObject); begin //form2.Button2.SetFocus; Radiobutton1.Hide; Radiobutton2.Hide; Radiobutton3.Hide; Radiobutton4.Hide; Radiobutton5.Hide; label4.Hide; label3.Hide; label_text.caption:= 'Lieber Testteilnehmer,'+#13+#10+'Liebe Testteilnehmerin,'+#13+#10+#13+#10+ 'dies ist ein Test, der Ihr Freizeitverhalten untersuchen wird. Ich bitte Sie, alle Fragen so zu ' +#13+#10+ 'beantworten, dass Ihre Antworten am besten Ihrer Einstellung entsprechen. Neben jeder Frage '+#13+#10+'sehen Sie fünf Antwortmöglichkeiten. Die Kästchen dazwischen geben jeweils Zwischenwerte an,'+#13+#10+ ' damit Sie ihre Antworten'+#13+#10+'besser abstufen können. Lassen Sie bitte keine Frage aus und entscheiden Sie spontan, welche '+#13+#10+ 'Antwort am besten zu Ihnen passt.'; fragen[0].Frage:='Bei Diskussionen halte ich mich her zurück. '; fragen[0].Kategorie:= 1 ; fragen[1].Frage:='Die meisten Menschen sind mir zu neugierig. '; fragen[1].Kategorie:= 4 ; fragen[2].Frage:='Ich habe viele Klamotten im Schrank, die mir zum Anziehen zu schade sind.'; fragen[2].Kategorie:= 3 ; fragen[3].Frage:='Ich spiele gerne Fußball.'; fragen[3].Kategorie:= 5 ; fragen[4].Frage:='Ich werde bestimmt mal im Lotto gewinnen.'; fragen[4].Kategorie:= 2 ; fragen[5].Frage:='Ich fühle mich mit regelmäßigem Tagesablauf am wohlsten.'; fragen[5].Kategorie:= 3 ; fragen[6].Frage:='Ich brache viel Zeit für mich. '; fragen[6].Kategorie:= 4 ; fragen[7].Frage:='Ich habe schnell Mitleid. '; fragen[7].Kategorie:= 1 ; fragen[7].IndexDerFrageZumGegenrechnen :=32; fragen[8].Frage:='Ein Umzug in eine völlig neue Gegend wäre nichts für mich.'; fragen[8].Kategorie:= 3 ; fragen[8].IndexDerFrageZumGegenrechnen:= 24; fragen[9].Frage:='Immer mit den gleichen Leuten unterwegs zu sein ist mir zu langweilig'; fragen[9].Kategorie:= 2 ; fragen[9].IndexDerFrageZumGegenrechnen:= 34; fragen[10].Frage:='Man sollte lieber seine Meinung für sich behalten, um keinen Streit zu provozieren.'; fragen[10].Kategorie:= 1 ; fragen[11].Frage:='Mein Verhalten ist immer einwandfrei.'; fragen[11].Kategorie:= 6 ; end; procedure TForm2.Button2Click(Sender: TObject); var i :integer ; begin case seite of 0: begin label_text.Caption:=''; label_frage.caption:=fragen[seite].Frage; Radiobutton1.show; Radiobutton2.show; Radiobutton3.show; Radiobutton4.show; Radiobutton5.show; label3.Show; label4.Show; Seite:=seite+1; end; 1..11: begin if (radiobutton1.Checked = false) and (radiobutton1.Checked = false) and (radiobutton2.Checked = false) and (radiobutton3.Checked = false) and (radiobutton4.Checked = false) and (radiobutton5.Checked = false) then begin messagedlg('Du hast keine Auswahl getroffen', mterror, [mbok], 1); abort; end else begin label_frage.caption := fragen[seite].Frage; if radiobutton1.Checked then begin if fragen[seite-1].Kategorie= 1 then e_depressiv:=e_depressiv +2; if fragen[seite-1].Kategorie= 2 then e_hysterisch:=e_hysterisch +2; if fragen[seite-1].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +2; if fragen[seite-1].Kategorie= 4 then e_schizoid:=e_schizoid +2; if fragen[seite-1].Kategorie= 5 then e_dummy:=e_dummy +2; if fragen[seite-1].Kategorie= 6 then e_luegen:=e_luegen +1; end; if radiobutton2.Checked then begin if fragen[seite-1].Kategorie= 1 then e_depressiv:=e_depressiv +1; if fragen[seite-1].Kategorie= 2 then e_hysterisch:=e_hysterisch +1; if fragen[seite-1].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +1; if fragen[seite-1].Kategorie= 4 then e_schizoid:=e_schizoid +1; if fragen[seite-1].Kategorie= 5 then e_dummy:=e_dummy +1; if fragen[seite-1].Kategorie= 6 then e_luegen:=e_luegen +1; end; if radiobutton3.Checked then begin if fragen[seite-1].Kategorie= 1 then e_depressiv:=e_depressiv +0; if fragen[seite-1].Kategorie= 2 then e_hysterisch:=e_hysterisch +0; if fragen[seite-1].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +0; if fragen[seite-1].Kategorie= 4 then e_schizoid:=e_schizoid +0; if fragen[seite-1].Kategorie= 5 then e_dummy:=e_dummy +0; if fragen[seite-1].Kategorie= 6 then e_luegen:=e_luegen +0; end; if radiobutton4.Checked then begin if fragen[seite-1].Kategorie= 1 then e_depressiv:=e_depressiv +0; if fragen[seite-1].Kategorie= 2 then e_hysterisch:=e_hysterisch +0; if fragen[seite-1].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +0; if fragen[seite-1].Kategorie= 4 then e_schizoid:=e_schizoid +0; if fragen[seite-1].Kategorie= 5 then e_dummy:=e_dummy +0; if fragen[seite-1].Kategorie= 6 then e_luegen:=e_luegen +0; end; if radiobutton5.Checked then begin if fragen[seite-1].Kategorie= 1 then e_depressiv:=e_depressiv +0; if fragen[seite-1].Kategorie= 2 then e_hysterisch:=e_hysterisch +0; if fragen[seite-1].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +0; if fragen[seite-1].Kategorie= 4 then e_schizoid:=e_schizoid +0; if fragen[seite-1].Kategorie= 5 then e_dummy:=e_dummy +0; if fragen[seite-1].Kategorie= 6 then e_luegen:=e_luegen +0; end; radiobutton1.Checked := false; radiobutton2.Checked := false; radiobutton3.Checked := false; radiobutton4.Checked := false; radiobutton5.Checked := false; seite:= seite +1; end; end; 12: begin form3.label_depressiv.caption := inttostr(e_depressiv); form3.label_zwanghaft.caption := inttostr(e_zwanghaft); form3.label_schizoid.caption := inttostr(e_schizoid); form3.label_hysterisch.caption := inttostr(e_hysterisch); form3.label_luegen.caption := inttostr(e_luegen); form2.Hide; form3.Show; End; end; end; end. + Multi-Zitat Zitieren