[Delphi] Psychologietest

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Smokers, 6. Mai 2007 .

Schlagworte:
  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.
     
  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
     
  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.
    
    
    
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.