Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String Array Problem (https://www.delphipraxis.net/85630-string-array-problem.html)

Jacer 2. Feb 2007 13:47


String Array Problem
 
Hallo,
ich habe ein Problem mit einem Programm wo in ein Array String-Werte eingetragen werden sollen.
Ich habe zunächst einmal ganz normal die Variablen deklariert.

Delphi-Quellcode:
var
  i : integer;
  vFrage : Array[1..5] of string;
  vAntwort: Array [1..5] of string;
Beim Start habe ich dann i als 1 definiert.

Delphi-Quellcode:
procedure TFrmMain.FormCreate(Sender: TObject);
  begin
    i:=1;
  end;
So dann habe ich auf dem Formular einen Button. Jedes Mal wenn der Button gedrückt wird passiert folgendes:

Delphi-Quellcode:
procedure TFrmMain.SBtnWeiterClick(Sender: TObject);
  begin

    case RGrFrage.ItemIndex of
      0 : begin
            vFrage[i]:= RGrFrage.Caption;
            vAntwort[i]:= RBtnFrage_1.Caption;
          end;

      1 : begin
            vFrage[i]:= RGrFrage.Caption;
            vAntwort[i]:= RBtnFrage_2.Caption;
          end;

      2 : begin
            vFrage[i]:= RGrFrage.Caption;
            vAntwort[i]:= RBtnFrage_3.Caption;
          end;
    end;

    if i=1
      then
        begin
          RGrFrage.Caption:='Frage 2';
          RBtnFrage_1.Caption:='Antwort 1';
          RBtnFrage_2.Caption:='Antwort 2';
          RBtnFrage_3.Caption:='Antwort 3';
        end

    else if i=2
      then
        begin
          RGrFrage.Caption:='Frage 3';
          RBtnFrage_1.Caption:='Antwort 1';
          RBtnFrage_2.Caption:='Antwort 2';
          RBtnFrage_3.Caption:='Antwort 3';
        end

    else if i=3
      then
        begin
          RGrFrage.Caption:='Frage 4';
          RBtnFrage_1.Caption:='Antwort 1';
          RBtnFrage_2.Caption:='Antwort 2';
          RBtnFrage_3.Caption:='Antwort 3';
        end

    else if i=4
      then
        begin
          RGrFrage.Caption:='Frage 5';
          RBtnFrage_1.Caption:='Antwort 1';
          RBtnFrage_2.Caption:='Antwort 2';
          RBtnFrage_3.Caption:='Antwort 3';
        end

    else if i=5
      then
        begin
          FrmAuswertung.LblFrage1.Caption:= vFrage[1];
          FrmAuswertung.LblFrage2.Caption:= vFrage[2];
          FrmAuswertung.LblFrage3.Caption:= vFrage[3];
          FrmAuswertung.LblFrage4.Caption:= vFrage[4];
          FrmAuswertung.LblFrage5.Caption:= vFrage[5];

          FrmAuswertung.LblAntwort1.Caption:= vAntwort[1];
          FrmAuswertung.LblAntwort2.Caption:= vAntwort[2];
          FrmAuswertung.LblAntwort3.Caption:= vAntwort[3];
          FrmAuswertung.LblAntwort4.Caption:= vAntwort[4];
          FrmAuswertung.LblAntwort5.Caption:= vAntwort[5];

          FrmAuswertung.Show;
          FrmMain.Hide;
        end;

    inc(i);


  end;
Es soll also jedes Mal wenn der Button gedrückt wird, geprüft werden welcher RadioButton aus der RadioGroup aktiviert wurde, die Frage sowie die gewählte Antwort in der Variable gespeichert werden. Danach wird (je nachdem welche Wert i gerade hat) die Frage bzw die Antworten geändert. Erreicht die Variable i den Wert 5, sollen in dem folgenden Formular (FrmAuswertung) die Fragen&Antworten in die entsprechenden Labels eingetragen werden. Die passenden Unit dazu steht auch unter den Uses-Befehlen.
Ich habe zum Test einmal nicht die Variablen zum Schluß in dem folgenden Formular ausgeben lassen sondern in dem Gleichen. Dies ging ebenfalls nicht. Der Fehler muss also schon in der Deklaration bzw Speicherung der Variablen in der case-Anweisung liegen.

Hoffe ihr könnt mir helfen :gruebel:

Luckie 2. Feb 2007 13:51

Re: String Array Problem
 
Zitat:

Zitat von Jacer
Dies ging ebenfalls nicht.

Und das ist eine ungenügende Fehlerbeschreibung.

Jacer 2. Feb 2007 13:55

Re: String Array Problem
 
Zitat:

Zitat von Luckie
Zitat:

Zitat von Jacer
Dies ging ebenfalls nicht.

Und das ist eine ungenügende Fehlerbeschreibung.

Damit wollte ich sagen, dass er dort auch nicht die gespeicherten Variablen in den Labels ausgegeben hat. Ich wollte damit nur beschreiben, dass der Fehler schon in dem Teil der case-Anweisung liegen muss und nicht in dem Ausgabe-Teil!

Luckie 2. Feb 2007 14:11

Re: String Array Problem
 
Dann geh das ganze doch mal in Einzelschritten durch und guck dir die Werte der Variablen an.

Jacer 2. Feb 2007 14:36

Re: String Array Problem
 
Zitat:

Zitat von Luckie
Dann geh das ganze doch mal in Einzelschritten durch und guck dir die Werte der Variablen an.

Habe ich bereits gemacht. Dadurch habe ich wie bereits gesagt festgestellt, dass die Variablen in der case-Anweisung nicht definiert werden wie es eigentlich gedacht ist. Warum dies allerdings nicht der Fall ist kann ich daraus nicht entnehmen.

sirius 2. Feb 2007 15:47

Re: String Array Problem
 
Ich kann mir grad nicht vorstellen, wie das ganze aussieht:

Du hast also eine Radiogroup, mit 3 Auswahlmöglichkeiten. Ich würde vermuten, dass an die Antwort in
Radiogroup.items[0] steht und nicht in "RBtnFrage_1.Caption". Was ist denn das "RBtnFrage_1.Caption"?

Jacer 2. Feb 2007 15:51

Re: String Array Problem
 
Zitat:

Zitat von sirius
Ich kann mir grad nicht vorstellen, wie das ganze aussieht:

Du hast also eine Radiogroup, mit 3 Auswahlmöglichkeiten. Ich würde vermuten, dass an die Antwort in
Radiogroup.items[0] steht und nicht in "RBtnFrage_1.Caption". Was ist denn das "RBtnFrage_1.Caption"?

Okay die Benennung war ziemlich dämlich dass gebe ich zu.

RBtnFrage_1 bis RBtnFrage_3 sind die Antworten also die RadioButtons die die Antwortmöglichkeiten enthalten!

Elicia 2. Feb 2007 16:00

Re: String Array Problem
 
Hi,

soweit ich sehe, bleibt dein 'i' in der case-Anweisung immer 1 - prüf das doch mal!

Elicia

Jacer 2. Feb 2007 16:28

Re: String Array Problem
 
Zitat:

Zitat von Elicia
Hi,

soweit ich sehe, bleibt dein 'i' in der case-Anweisung immer 1 - prüf das doch mal!

Elicia

Die Variable I wird auch est ganz am Ende erhöht, wenn alle Befehle durchgeführt wurden die in Bezug auf I=1 nötig sind. In der case-Anweisung wird ja nur ausgelesen welche Antwort für Frage 1-5 gewählt wurde. Wenn sich I dort erhöhen würde wäre das nicht sher sinnvoll, denn er soll die Case-Anweisung ja erst wieder ausführen, wenn der Benutzer die nächste Frage beantwortet und den Button gedrückt hat.

sirius 2. Feb 2007 16:48

Re: String Array Problem
 
Wie erstellst du das denn auf der IDE?
Kannst du mal bitte einen Screenshot deiner (aufgeklappten) Objekthierarchie geben!


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:51 Uhr.
Seite 1 von 2  1 2      

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