Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Anfänger Problem - Psychologietest (https://www.delphipraxis.net/91384-anfaenger-problem-psychologietest.html)

Smokers 4. Mai 2007 08:20


Anfänger Problem - Psychologietest
 
Also ich habe folgendes vor / bin dabei
einen psychologie Test zu programmieren der bei einer Frage die auf eine bestimmte Weise beantworte wird, halt den Werten: „schizoid“ , „depressiv“, “hysterisch“, “zwanghaft“ und so genannten Lügenfragen.
Jedoch habe ich im Moment ein Problem das mich stutzen lässt.
Erstmal der Quellcode:

das formular wo so ziemlich außer namensabfrage und auswertung abläuft:
Delphi-Quellcode:
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;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    schizoid,hysterisch,depressiv,luegen,zwanghaft:integer;
    Seite:integer;
    //frage:array of tfrage;
     frage: array[1..100,0..2,0..2] of string;
     dummy:integer;
  end;

var
  Form2: TForm2;

implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Radiobutton1.Hide;
Radiobutton2.Hide;
Radiobutton3.Hide;
Radiobutton4.Hide;
Radiobutton5.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.';

Frage[1,0,0]:='Bei Diskussionen halte ich mich her zurück.';
Frage[2,0,0]:='Die meisten Menschen sind mir zu neugierig.';
Frage[3,0,0]:='Ich spiele gerne Fußball.';
Frage[4,0,0]:='Ich werde bestimmt mal im Lotto gewinnen. ';


Frage[1,1,0]:='d';
Frage[2,1,0]:='s.';
Frage[3,1,0]:='z';
Frage[4,1,0]:='dummy';








end;

procedure TForm2.Button2Click(Sender: TObject);
begin
case seite of

0:begin
    label_text.Caption:='';
    label_frage.caption:=frage[1,0,0];
    Radiobutton1.show;
    Radiobutton2.show;
    Radiobutton3.show;
    Radiobutton4.show;
    Radiobutton5.show;
    Seite:=seite+1;

  end;

1..4:

        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

          label_frage.caption:=frage[seite+1,0,0];
          if radiobutton1.Checked=true then
            begin
            if frage[(seite+1),1,0]= 'd' then depressiv:=depressiv+2 ;
            if frage[(seite+1),1,0]= 's' then schizoid:=schizoid+2 ;
            if frage[(seite+1),1,0]= 'z' then zwanghaft:=zwanghaft+2 ;
            if frage[(seite+1),1,0]= 'h' then hysterisch:=hysterisch+2 ;
            if frage[(seite+1),1,0]= 'l' then luegen:=luegen+1 ;
            if frage[(seite+1),1,0]= 'dummy' then dummy:=dummy+0 ;
            end;

            if radiobutton2.Checked=true then
            begin
            if frage[seite+1,1,0]= 'd' then depressiv:=depressiv+1 ;
            if frage[seite+1,1,0]= 's' then schizoid:=schizoid+1 ;
            if frage[seite+1,1,0]= 'z' then zwanghaft:=zwanghaft+1 ;
            if frage[seite+1,1,0]= 'h' then hysterisch:=hysterisch+1 ;
            if frage[seite+1,1,0]= 'l' then luegen:=luegen+1 ;
            if frage[seite+1,1,0]= 'dummy' then dummy:=dummy+0 ;
            end;

          messagedlg('Depressiv:'+inttostr(depressiv)+', schizoid:'+inttostr(schizoid)+',zwanghaft:'+inttostr(zwanghaft)+',lügen:'+inttostr(luegen)+'.',mtinformation,[mbok],1);
          Radiobutton1.Checked:=false;
          Radiobutton2.Checked:=false;
          Radiobutton3.Checked:=false;
          Radiobutton4.Checked:=false;
          Radiobutton5.Checked:=false;
          seite:=seite+1;


        end;

5:


      begin
      form2.Hide;
      form3.show;
        form3.label_depressiv.caption:=inttostr(depressiv);
        form3.label_schizoid.caption:=inttostr(schizoid);
        form3.label_zwanghaft.caption:=inttostr(zwanghaft);
        form3.label_hysterisch.caption:=inttostr(hysterisch);
        //form3.label_luegen.caption:=inttostr(luegen);



      end;

end;




end;

end.
So das Problem was gelöst werden muss ist das beim antworten nur bei der Frage : „ frage[3,0,0] “ auch wirklich ein wert zur Variable addiert wird. Bei allen anderen Fragen nicht.


Erstmal nur wichtig das er die Ergebnisse richtig zählt....

\\\\\\\\
Zur kurzen Erläuterung :
1. ich bin absoluter Anfänger

2. ich bin Anfänger ;)

3. ein array mit 3 dimensionen weil ich in der frage / var irgendwo die frage, die kategorie und später auch noch die gegenfrage abspeichert.

Tormentor32 4. Mai 2007 08:41

Re: Anfänger Problem - Psychologietest
 
Hmm soweit ich das verstanden habe, ist in deinem Fall kein 3Dimensionales Array nötig.

Du kannst das Ganze über einen Record lösen:
Delphi-Quellcode:
type
  TFrage = record
    Frage: String;
    Antworten: Array[0..3] of string;
    Zuordnung: Array[0..3] of byte;
  end
So brauchst du nur ein Array[AnzahlDerFragen] of TFrage

Zuordnung sagt, welche Antwort welchem Typ zugeordnet wird, du könntest also zum beispiel folgendes machen:

Delphi-Quellcode:
var
  Fragen: Array[0..99] of TFrage;
//.....
begin
  Fragen[0].Frage := 'Glas ist Halbvoll oder halbleer?'
  Fragen[0].Antwort[0] := 'Halbvoll';
  Fragen[0].Antwort[1] := 'Halbleer';
  //...
  Fragen[0].Zuordnung[0] := 1;
  Fragen[1].Zuordnung[1] := 3; // USW... DU hast ein Array, wo die Anzahl der Jeweiligen Typen drinsteht, so kannst du zum Beispiel

inc(Typen[Fragen[AktuelleFrage].Zuordnung[GewählteFrage]])
Hoffe ich hab das beschrieben was du meinst und es war nicht zun kompliziert

Luckie 4. Mai 2007 08:43

Re: Anfänger Problem - Psychologietest
 
Zitat:

Zitat von Smokers
So das Problem was gelöst werden muss ist das beim antworten nur bei der Frage : „ frage[3,0,0] “ auch wirklich ein wert zur Variable addiert wird. Bei allen anderen Fragen nicht.

Du solltest deinen Quelltext mal gescheit formatieren, dann siehst du wahrscheinlich schon von alleine, was falsch ist.

Smokers 4. Mai 2007 09:07

Re: Anfänger Problem - Psychologietest
 
okay mal abgesehen von dem Beitrag von Luckie der für einen Anfänger
nicht gerade sehr konsruktiv ist schonmal danke an Tormentor32.

Also das mit dem Record hab ich soweit gerafft.
Allerdings ..

Wozu brauche ich ?
Delphi-Quellcode:
Fragen[0].Antwort[0] := 'Halbvoll';
Es gibt indem Sinne keine Antworten...
es läuft nur so ab das man 5 Knöppe hat und ganz links is
"trifft sehr stark zu" und ganz rechts "trifft garnicht zu"

Sodass beim radiobutton1 für diesen den fragenspezifischen presönlichkeits wert "2" addiert wird.
beim Radiobutton2 nurnoch "1"
und bei den restlichen garkeine mehr.

Daher versteh ich im Moment nicht ganz wo ich die addition zu der bersönlickeitsvariable unterbringe.




Zitat:

Hoffe ich hab das beschrieben was du meinst und es war nicht zun kompliziert
--> nur ein ganz bisschen... aber schon ok so^^

Tormentor32 4. Mai 2007 09:23

Re: Anfänger Problem - Psychologietest
 
Hmm dann hab ich dein Quiz ein wenig falsch verstanden...

Bevor ich mir jetzt die Arbeit mache^^ frag ich lieber nochmal nach:

Du willst erreichen, dass man bestimmte Fragen beantwortet, indem man quasi eine Zahl zwischen 1 und 5 angibt (Trifft nicht zu bis trifft voll zu). Jede Frage wird einem bestimmten "Menschtyp" zugeordnet und hinterher wird ausgewertet, welcher Menschtyp die meisten Punkte hat.

Sehe ich das richtig?

Ach übrigens, Luckies Beitrag ist wichtiger als du denkst, denn ein gut durchformatierter Quelltext ist sehr wichtig, und wenn du dein Programm bessispielsweise 2 Jahre lang nicht anguckst, dann kannst du bei einem gut formatiertem Quelltext viel schneller durchblicken.

Smokers 4. Mai 2007 09:43

Re: Anfänger Problem - Psychologietest
 
Also ist ein psychologischer Test der darauf abziehlt am ende die Punkte zahl zu ermitteln zuwieviel % oder Punkten man ein :

-depressiver
-hysterischer
-zwanghafter
-schizoider
Mensch ist.

Man bekommt eine Frage ( so um die 40 sinds ) dann hat man 5 Knöpfe .. so ungefähr (O = radiobutton)

trifft sehr stark zu | O O O O O | trifft garnicht zu.

wenn man ganz links klickt ( also bei "trifft sehr stark zu" ) soll erzu der gruppe die die Frage angehört 2 Punkte hinzu addieren.
Beim 2. Knopf von links nurnoch 1 punkt
und die restlichen 3 Knöpfe immer NUll.

Beispiel :

1. Bei Diskussionen halte ich mich her zurück. (nicht sichtbar : Kategorie: depressiv)

O O O O O ( ich klicke mal den 2. knopf von links an )

-->
Auswertung :

Du bist :

Depressiv : 1 Punkt
-------------------------------------------
Das ist die Hauptaufgabe des Programms.

Später soll noch hinzukommen das es Vergleichsfragen gibt.
z.B.
Frage nr. 2 Ich habe schnell Mitleid
Frage nr. 34 Ich kann gut mit dem Leid anderer mitfühlen

Wenn da beide mit "ja trifft zu" bewertet werden wird das halt gegengerechnet....

aber das erst später.. ^^

Ich hofe war verständlich genug ^^

Luckie 4. Mai 2007 09:52

Re: Anfänger Problem - Psychologietest
 
Zitat:

Zitat von Smokers
okay mal abgesehen von dem Beitrag von Luckie der für einen Anfänger
nicht gerade sehr konsruktiv ist schonmal danke an Tormentor32.

So, findest du? Dann guck dir mal das an:
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
case seite of

0:begin
    label_text.Caption:='';
    label_frage.caption:=frage[1,0,0];
    Radiobutton1.show;
    Radiobutton2.show;
    Radiobutton3.show;
    Radiobutton4.show;
    Radiobutton5.show;
    Seite:=seite+1;

  end;

1..4:

        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

          label_frage.caption:=frage[seite+1,0,0];
          if radiobutton1.Checked=true then
            begin
            if frage[(seite+1),1,0]= 'd' then depressiv:=depressiv+2 ;
            if frage[(seite+1),1,0]= 's' then schizoid:=schizoid+2 ;
            if frage[(seite+1),1,0]= 'z' then zwanghaft:=zwanghaft+2 ;
            if frage[(seite+1),1,0]= 'h' then hysterisch:=hysterisch+2 ;
            if frage[(seite+1),1,0]= 'l' then luegen:=luegen+1 ;
            if frage[(seite+1),1,0]= 'dummy' then dummy:=dummy+0 ;
            end;

            if radiobutton2.Checked=true then
            begin
            if frage[seite+1,1,0]= 'd' then depressiv:=depressiv+1 ;
            if frage[seite+1,1,0]= 's' then schizoid:=schizoid+1 ;
            if frage[seite+1,1,0]= 'z' then zwanghaft:=zwanghaft+1 ;
            if frage[seite+1,1,0]= 'h' then hysterisch:=hysterisch+1 ;
            if frage[seite+1,1,0]= 'l' then luegen:=luegen+1 ;
            if frage[seite+1,1,0]= 'dummy' then dummy:=dummy+0 ;
            end;

          messagedlg('Depressiv:'+inttostr(depressiv)+', schizoid:'+inttostr(schizoid)+',zwanghaft:'+inttostr(zwanghaft)+',lügen:'+inttostr(luegen)+'.',mtinformation,[mbok],1);
          Radiobutton1.Checked:=false;
          Radiobutton2.Checked:=false;
          Radiobutton3.Checked:=false;
          Radiobutton4.Checked:=false;
          Radiobutton5.Checked:=false;
          seite:=seite+1;


        end;

5:


      begin
      form2.Hide;
      form3.show;
        form3.label_depressiv.caption:=inttostr(depressiv);
        form3.label_schizoid.caption:=inttostr(schizoid);
        form3.label_zwanghaft.caption:=inttostr(zwanghaft);
        form3.label_hysterisch.caption:=inttostr(hysterisch);
        //form3.label_luegen.caption:=inttostr(luegen);



      end;

end;
Und das:
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
begin
  case seite of
    0:
      begin
        label_text.Caption := '';
        label_frage.caption := frage[1, 0, 0];
        Radiobutton1.show;
        Radiobutton2.show;
        Radiobutton3.show;
        Radiobutton4.show;
        Radiobutton5.show;
        Seite := seite + 1;

      end;
    1..4:
      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
          label_frage.caption := frage[seite + 1, 0, 0];
        if radiobutton1.Checked = true then
        begin
          if frage[(seite + 1), 1, 0] = 'd' then
            depressiv := depressiv + 2;
          if frage[(seite + 1), 1, 0] = 's' then
            schizoid := schizoid + 2;
          if frage[(seite + 1), 1, 0] = 'z' then
            zwanghaft := zwanghaft + 2;
          if frage[(seite + 1), 1, 0] = 'h' then
            hysterisch := hysterisch + 2;
          if frage[(seite + 1), 1, 0] = 'l' then
            luegen := luegen + 1;
          if frage[(seite + 1), 1, 0] = 'dummy' then
            dummy := dummy + 0;
        end;
        if radiobutton2.Checked = true then
        begin
          if frage[seite + 1, 1, 0] = 'd' then
            depressiv := depressiv + 1;
          if frage[seite + 1, 1, 0] = 's' then
            schizoid := schizoid + 1;
          if frage[seite + 1, 1, 0] = 'z' then
            zwanghaft := zwanghaft + 1;
          if frage[seite + 1, 1, 0] = 'h' then
            hysterisch := hysterisch + 1;
          if frage[seite + 1, 1, 0] = 'l' then
            luegen := luegen + 1;
          if frage[seite + 1, 1, 0] = 'dummy' then
            dummy := dummy + 0;
        end;
        messagedlg('Depressiv:' + inttostr(depressiv) + ', schizoid:' + inttostr(schizoid) + ',zwanghaft:' +
          inttostr(zwanghaft) + ',lügen:' + inttostr(luegen) + '.', mtinformation, [mbok], 1);
        Radiobutton1.Checked := false;
        Radiobutton2.Checked := false;
        Radiobutton3.Checked := false;
        Radiobutton4.Checked := false;
        Radiobutton5.Checked := false;
        seite := seite + 1;
      end;
    5:
      begin
        form2.Hide;
        form3.show;
        form3.label_depressiv.caption := inttostr(depressiv);
        form3.label_schizoid.caption := inttostr(schizoid);
        form3.label_zwanghaft.caption := inttostr(zwanghaft);
        form3.label_hysterisch.caption := inttostr(hysterisch);
        //form3.label_luegen.caption:=inttostr(luegen);
      end;
  end;
end;
Formatierter Code hilft die Übersicht zu behalten und Fehler zu vermeiden bzw. schnell zu finden. Fehler wie: Falsch verschachteklte Schleifen und Bedingungen, fehlende begins und ends, Fehler in der Logik und im Programmablauf. Und hier im Forum, können auch noch andere ausser dir den Code lesen und verstehen und das willst du ja wohl.

Tormentor32 4. Mai 2007 10:00

Re: Anfänger Problem - Psychologietest
 
Du solltest jeder Kategorie einen Zahlenwert zuordnen logischerweise:

-depressiver -> 0
-hysterischer -> 1
-zwanghafter -> 2
-schizoider -> 3

Das definierst du dann als Konstanten
Delphi-Quellcode:
const
  depressiv = 0;
  hysterisch = 1;
  zwanghaft = 2;
  schizoid = 3;
Jetzt sieht eine Frage so aus
Delphi-Quellcode:
type
  TFrage = record
    Frage: string;
    Kategorie: byte;
    IndexDerFrageZumGegenrechnen: integer;
    GewaehlteAntwort: byte;
  end;
Jetzt Kannst du zum Beispiel mit
Delphi-Quellcode:
Fragen[0].Kategorie := hysterisch
einfach eine Kategorie zuweisen. In gewählte Antwort wird gespeichert, was der Benutzer gewählt hat, und hinterher, wenn der test fertig ist, kannst du das ganze einfach mit einer Schleife auswerten.

Klar soweit? :wink:

Smokers 4. Mai 2007 10:15

Re: Anfänger Problem - Psychologietest
 
Das war viel konstruktiver =)

Naja ok. Ich finde allerdings deinen Text auch teilweise gewöhnungsbedürftig.^^

Meiner Sieht teilweise aber viel schlimmer aus da hast schon recht was nicht NUR auf 2 Monitore und daher ewig lange Textphrasen, zurück zu führen ist.^^

Klar ich versuch mich zu bessern.
Einmal begin und end vergessen hab ich auch gefunden .. allerdings ändert das dass endergebnis nicht wirklich.

Smokers 4. Mai 2007 11:10

Re: Anfänger Problem - Psychologietest
 
Danke Tormentor32.
Ich werde das gleich mal wenn ich per VNC zu haus wieder ruff kann versuchen.( Bin auf Arbeit xD )
Ich glaube es verstanden zu haben... ^^
Mirbahnt also die Umsetzung vor Augen...hoff ich:

Die Auswertung würde ja dann wiefolgt ablaufen oder?

Delphi-Quellcode:
case Frage[zaehlvariable].antwort of
     1: frage[zaehlvariable].kategorie +2 
     2: frage[zaehlvariable].kategorie +1 
     3: frage[zaehlvariable].kategorie +0 
     4: frage[zaehlvariable].kategorie +0
Allerdings muss ich doch neue var deklarieren oder ? weil die Kategorien sind ja const nichwahr? ^^

( wie gesagt anfänger)

DP-Maintenance 4. Mai 2007 14:16

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

Tormentor32 4. Mai 2007 16:46

Re: Anfänger Problem - Psychologietest
 
Nein so hatte ich das nicht gemeint :wink:

Delphi-Quellcode:
type
  TFrage = record
    Frage: string; // Die Frage
    Kategorie: byte; // Welcher Kategorie wird diese Frage zugeordnet? Die Kategorien ändern sich NIE
    IndexDerFrageZumGegenrechnen: integer; // Welche Frage wird mit dieser Frage gegengerechnet?
    GewaehlteAntwort: byte; // Hier steht drin, was man angekreuzt hat
  end;
Wenn du deine Schleife durchläufst passiert folgendes (Du brauchst dafür noch ein Array of integer, mit von 0 bis 3)
Delphi-Quellcode:
var
  Werte: Array[0..3] of integer;
///// UND IN DER SCHLEIFE ////
inc(Werte[Fragen[i].Kategorie],Fragen[i].GewaehlteAntwort); // Jeder Kategorie ist eine Zahl zugeordnet | Welche Kategorie eine Frage hat Steht in Fragen[i].Kategorie also muss ich den Wert im Werte-Array erhöhen, der Die kategorie repräsentiert | Und zwar um den Wert der Antwort, also GewaehlteAntwort (Es wird nicht die Nummer der Antwort gespeichert, sondern der Wert)
Hinterher kannst du dann einfach schauen, welcher Wert am höchsten ist oder so.

Fragen? :wink:

Edit: Da fällt mir auf: Herzlich Willkommen in der DP! :dance: :dp: :cheers: :party:

Smokers 4. Mai 2007 18:40

Re: Anfänger Problem - Psychologietest
 
Ja Danke. =)
Ich hab wie gesagt erst angefangen mit Delphi und in dem Forum
wo ich mich sonst so aufhalte gibts nicht viele Delphi bewanderte... ^^


Also Problem, ich weis das tut schon langsam weh dieses gefrage.

Aber wo deklariere ich den type?

vor dem Var bereich der unit ,
oder vor dem ereignis?

Smokers 5. Mai 2007 23:33

Re: Anfänger Problem - Psychologietest
 
Also hab das jetzt so einigermaßen umgesetzt.
Allerdings bekomme ich nachdem ich ich frage 5 beendet hab einen Fehler der das Programm terminiert.

Delphi-Quellcode:
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_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;

var Fragen: array [1..50] of TFragen;



implementation

uses Unit1, Unit3;

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
  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[1].Frage:='Bei Diskussionen halte ich mich her zurück. ';
  fragen[1].Kategorie:= 0 ;
  fragen[2].Frage:='Die meisten Menschen sind mir zu neugierig. ';
  fragen[2].Kategorie:= 3 ;
  fragen[3].Frage:='Ich habe viele Klamotten im Schrank, die mir zum Anziehen zu schade sind.';
  fragen[3].Kategorie:= 2 ;



end;





procedure TForm2.Button2Click(Sender: TObject);
var i :integer;
begin

 
   case seite of

0:  begin
       label_text.Caption:='';
       label_frage.caption:=fragen[1].Frage;
       Radiobutton1.show;
       Radiobutton2.show;
       Radiobutton3.show;
       Radiobutton4.show;
       Radiobutton5.show;
       label3.Show;
       label4.Show;
       Seite:=seite+2;

     end;

1..3:
      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;

4:
     begin
         while i < 4 do
          if fragen[i].Kategorie= 0 then e_depressiv := e_depressiv + fragen[i].GewaehlteAntwort; // irgendwo hier
          if fragen[i].Kategorie= 1 then e_hysterisch := e_hysterisch + fragen[i].GewaehlteAntwort;//muss der Fehler
          if fragen[i].Kategorie= 2 then e_zwanghaft := e_zwanghaft + fragen[i].GewaehlteAntwort;//liegen
          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;
          i:=i+1
          end;
  End;  


messagedlg('e_depressiv='+inttostr(e_depressiv)+
':: e_hysterisch='+inttostr(e_hysterisch)+
'::e_zwanghaft ='+inttostr(e_zwanghaft)+
':: e_schizoid ='+inttostr(e_schizoid)+
'::',mtinformation,[mbok],1);


end;



end.
Ich hoffe es is auch einigermaßen den wünschen formatiert..

Zacherl 6. Mai 2007 00:47

Re: Anfänger Problem - Psychologietest
 
Zitat:

Zitat von Smokers
Ich hoffe es is auch einigermaßen den wünschen formatiert..

Sorry nicht wirklich .. du solltest die vielleicht mal den Pascal Style Guide durchlesen. Das soll keine Schikane sein, aber aus eigener Erfahrung weiß ich, dass man viele Fehler in einem gut formatierten Quelltext viel einfacher findet als in einem Unformatierten.

Smokers 7. Mai 2007 15:42

Re: Anfänger Problem - Psychologietest
 
Also ich habe mich nun schon sehr weit vorgewagt und es funktioniert auch alles soweit schon FAST ganz gut.
Nur beim Zusammenzählen der gegebenen Antworten muckt er irgendwie rum.

Ichhab mit Absicht nur die Depressiv fragen positiv beantwortet.
Es sind bisher 3 an der Zahl allerdings rechnet er im Endeffekt bei schizoid 2 dazu und bei hysterisch.
Ansonsten garkeinen ... o.O
ich versteh es einfach nichtmehr T_T

\\\

DONE


Delphi-Quellcode:
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].Kategorie= 1 then e_depressiv:=e_depressiv +2;
                    if fragen[seite].Kategorie= 2 then e_hysterisch:=e_hysterisch +2;
                    if fragen[seite].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +2;
                    if fragen[seite].Kategorie= 4 then e_schizoid:=e_schizoid +2;
                    if fragen[seite].Kategorie= 5 then e_dummy:=e_dummy +2;
                    if fragen[seite].Kategorie= 6 then e_luegen:=e_luegen +1;
              end;

            if radiobutton2.Checked then
              begin
                    if fragen[seite].Kategorie= 1 then e_depressiv:=e_depressiv +1;
                    if fragen[seite].Kategorie= 2 then e_hysterisch:=e_hysterisch +1;
                    if fragen[seite].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +1;
                    if fragen[seite].Kategorie= 4 then e_schizoid:=e_schizoid +1;
                    if fragen[seite].Kategorie= 5 then e_dummy:=e_dummy +1;
                    if fragen[seite].Kategorie= 6 then e_luegen:=e_luegen +1;
              end;


            if radiobutton3.Checked then
              begin
                    if fragen[seite].Kategorie= 1 then e_depressiv:=e_depressiv +0;
                    if fragen[seite].Kategorie= 2 then e_hysterisch:=e_hysterisch +0;
                    if fragen[seite].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +0;
                    if fragen[seite].Kategorie= 4 then e_schizoid:=e_schizoid +0;
                    if fragen[seite].Kategorie= 5 then e_dummy:=e_dummy +0;
                    if fragen[seite].Kategorie= 6 then e_luegen:=e_luegen +0;
              end;
            if radiobutton4.Checked then
              begin
                    if fragen[seite].Kategorie= 1 then e_depressiv:=e_depressiv +0;
                    if fragen[seite].Kategorie= 2 then e_hysterisch:=e_hysterisch +0;
                    if fragen[seite].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +0;
                    if fragen[seite].Kategorie= 4 then e_schizoid:=e_schizoid +0;
                    if fragen[seite].Kategorie= 5 then e_dummy:=e_dummy +0;
                    if fragen[seite].Kategorie= 6 then e_luegen:=e_luegen +0;
              end;
            if radiobutton5.Checked then
              begin
                    if fragen[seite].Kategorie= 1 then e_depressiv:=e_depressiv +0;
                    if fragen[seite].Kategorie= 2 then e_hysterisch:=e_hysterisch +0;
                    if fragen[seite].Kategorie= 3 then e_zwanghaft:=e_zwanghaft +0;
                    if fragen[seite].Kategorie= 4 then e_schizoid:=e_schizoid +0;
                    if fragen[seite].Kategorie= 5 then e_dummy:=e_dummy +0;
                    if fragen[seite].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.

Smokers 7. Mai 2007 18:31

Re: Anfänger Problem - Psychologietest
 
so der letzte fehler.. dann läuft das Programm ^^

Delphi-Quellcode:
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,wiedersprochen :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);
//var Datei: TextFile;
//var inhalt: String;
var i:integer;
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.';



//////////////////////////////
{
for i:=0 to 100 do
      begin
         AssignFile(Datei,'C:\Programme\Borland\Delphi7\Projects\Login\test.ini');
         Reset(Datei);
         while not eof (Datei) do
         begin
                ReadLn(Datei,inhalt);


         end;
      end;
      }
//////////////////////////////






fragen[0].Frage:='Bei Diskussionen halte ich mich sehr 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 '+#13+#10+'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 brauche viel Zeit für mich. ';
fragen[6].Kategorie:= 4 ;

fragen[7].Frage:='Ich habe schnell Mitleid. ';
fragen[7].Kategorie:= 1 ;

fragen[8].Frage:='Ein Umzug in eine völlig neue Gegend wäre nichts für mich.';
fragen[8].Kategorie:= 3 ;

fragen[9].Frage:='Immer mit den gleichen Leuten unterwegs zu sein ist '+#13+#10+'mir zu langweilig';
fragen[9].Kategorie:= 2 ;

fragen[10].Frage:='Man sollte lieber seine Meinung für sich behalten, '+#13+#10+'um keinen Streit zu provozieren.';
fragen[10].Kategorie:= 1 ;

fragen[11].Frage:='Mein Verhalten ist immer einwandfrei.';
fragen[11].Kategorie:= 6 ;

fragen[12].Frage:='Ich habe immer einen Plan B, falls was schief geht.';
fragen[12].Kategorie:= 3 ;

fragen[13].Frage:='Ich bin offen für jeden neuen Trend. ';
fragen[13].Kategorie:= 2 ;

fragen[14].Frage:='In jedem Menschen steckt ein guter Kern. ';
fragen[14].Kategorie:= 1 ;

fragen[15].Frage:='Schlager dürfen auf keiner Party fehlen.';
fragen[15].Kategorie:= 5 ;

fragen[16].Frage:='Ich höre immer auf meine Eltern. ';
fragen[16].Kategorie:= 6 ;

fragen[17].Frage:='Ich liebe es, im Mittelpunkt zu stehen.';
fragen[17].Kategorie:= 2 ;

fragen[18].Frage:='Es ist mit egal, was andere über mich denken.';
fragen[18].Kategorie:= 4 ;

fragen[19].Frage:='Gefühlsduseleien sind nichts für mich.';
fragen[19].Kategorie:= 4 ;

fragen[20].Frage:='Bei einem Streit gibt der Klügere nach.';
fragen[20].Kategorie:= 1 ;

fragen[21].Frage:='Mein Zimmer ist aufgeräumt und alles hat seinen '+#13+#10+'festen Platz. ';
fragen[21].Kategorie:= 3 ;

fragen[22].Frage:='Man sollte nie zu viel von sich preisgeben.';
fragen[22].Kategorie:= 4 ;

fragen[23].Frage:='Man sollte sich auf das verlassen, was sich bewährt '+#13+#10+'hat und nicht alles umgestalten wollen.';
fragen[23].Kategorie:= 3 ;
fragen[23].IndexDerFrageZumGegenrechnen:= 9;

fragen[24].Frage:='Ich habe noch nie etwas verbotenes getan. ';
fragen[24].Kategorie:= 6 ;

fragen[25].Frage:='Handwerkliche Tätigkeiten machen mir unglaublich Spaß.';
fragen[25].Kategorie:= 5 ;

fragen[26].Frage:='Wenn ich mir ein Ziel gesetzt habe, dann will ich es '+#13+#10+'aus eigener Kraft erreichen.';
fragen[26].Kategorie:= 4 ;

fragen[27].Frage:='Alles zu planen ist mir zu anstrengend, man sollte '+#13+#10+'das Leben so nehmen wie es kommt.';
fragen[27].Kategorie:= 2 ;

fragen[28].Frage:='Nach einem heftigen Streit habe ich selten ein '+#13+#10+'schlechtes Gewissen.';
fragen[28].Kategorie:= 4 ;

fragen[29].Frage:='Ich habe noch nie meine Hausaufgaben vergessen.';
fragen[29].Kategorie:= 6 ;

fragen[30].Frage:='Ich genieße es, wenn ich eine strake Schulter zum '+#13+#10+'anlehnen habe. ';
fragen[30].Kategorie:= 1 ;

fragen[31].Frage:='Ich kann gut mit dem Leid anderer mitfühlen.';
fragen[31].Kategorie:= 1 ;
fragen[31].IndexDerFrageZumGegenrechnen := 8;

fragen[32].Frage:='Wenn mich jemand blöd anmacht, gibt es sofort Kontra.';
fragen[32].Kategorie:= 4 ;

fragen[33].Frage:='Feste Partnerschaften sind mir zu langweilig.';
fragen[33].Kategorie:= 2 ;

fragen[34].Frage:='Die Strafen für Verbrecher fallen in Deutschland '+#13+#10+'viel zu niedrig aus.';
fragen[34].Kategorie:= 3 ;

fragen[35].Frage:='Die meisten Erwachsenen sind mir zu spießig.';
fragen[35].Kategorie:= 2 ;

fragen[36].Frage:='Den miesten Menschen kann man nicht vertrauen.';
fragen[36].Kategorie:= 4 ;
fragen[36].IndexDerFrageZumGegenrechnen:= 23;

fragen[37].Frage:='Es gibt kaum Gebiete, in denen ich richtig begabt bin.';
fragen[37].Kategorie:= 1 ;

fragen[38].Frage:='Ich bin noch nie zu spät zu einer Verabredung gekommen.';
fragen[38].Kategorie:= 6 ;

fragen[39].Frage:='Der Sommer ist für mich die schönste Jahreszeit.';
fragen[39].Kategorie:= 5 ;

fragen[40].Frage:='Ich bewundere selbstbewusste Menschen, die sich '+#13+#10+'für ihre Wünsche'+#13+#10+'einsetzten.';
fragen[40].Kategorie:= 1 ;

fragen[41].Frage:='Regeln sind da, um gebrochen zu werden.';
fragen[41].Kategorie:= 2 ;

fragen[42].Frage:='Für Überraschungen bin ich eher nicht zu haben.';
fragen[42].Kategorie:= 3 ;

fragen[43].Frage:='Ich fühle mich meinen Mitmenschen überlegen. ';
fragen[43].Kategorie:= 3 ;

fragen[44].Frage:='Nur der Augenblick zählt - man lebt ja schließlich '+#13+#10+'nur einmal. ';
fragen[44].Kategorie:= 2 ;
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..44:
      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;
                    fragen[seite-1].GewaehlteAntwort:= 2;

              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;
                    fragen[seite-1].GewaehlteAntwort:= 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;
                    fragen[seite-1].GewaehlteAntwort:= 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;
                    fragen[seite-1].GewaehlteAntwort:= 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;
                    fragen[seite-1].GewaehlteAntwort:= 0;

               end;




            end;






            messagedlg(
            'depressiv:'+inttostr(e_depressiv)+#13+#10+
            'hysterisch:'+inttostr(e_hysterisch)+#13+#10+
            'zwanghaft:'+inttostr(e_zwanghaft)+#13+#10+
            'schizoid :'+inttostr(e_schizoid )+#13+#10+
            'dummy:'+inttostr(e_dummy)+#13+#10+
            'wiedersprochen:'+inttostr(wiedersprochen)+#13+#10+
            'luegen:'+inttostr(e_luegen),mtinformation,[mbok],1);

            radiobutton1.Checked := false;
            radiobutton2.Checked := false;
            radiobutton3.Checked := false;
            radiobutton4.Checked := false;
            radiobutton5.Checked := false;
            seite:= seite +1;


          end;

45:
    begin
       for i:= 0 to 44 do
        begin
           if (fragen[i].IndexDerFrageZumGegenrechnen = NULL) then e_dummy:= e_dummy+1
           else
            begin
              if (fragen[fragen[i].IndexDerFrageZumGegenrechnen].GewaehlteAntwort = fragen[i].GewaehlteAntwort) OR
                 (fragen[fragen[i].IndexDerFrageZumGegenrechnen].GewaehlteAntwort = (fragen[i].GewaehlteAntwort) -1) OR
                 (fragen[fragen[i].IndexDerFrageZumGegenrechnen].GewaehlteAntwort = (fragen[i].GewaehlteAntwort) +1) then
                  wiedersprochen := wiedersprochen+1;
            end;



        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 besteht darin das er die Wiedersprüche in den Antworten nicht ausliest.
Ka warum.
Er schreibt in den Schleifen beim klicken auf weiter ja das Ergebnis in fragen[seite].gewaehlteantwort
und unten soll er dann die gewählte antwort mit der antwort von der
fragen[i].indexderfragezumgegenrechnen vergleichen und wenn das unterschiedlich ist
soll er wiedersrpuch um eins erhöhen.
Aber das tut er nicht...

bitte ein letztes Mal Hilfe T_T


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz