Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Vokabel Trainer ! Hilfe (https://www.delphipraxis.net/169035-vokabel-trainer-hilfe.html)

Fredmaster 25. Jun 2012 20:37

AW: Vokabel Trainer ! Hilfe
 
Blöde frage, aber wo füge ich set length überhaupt ein? Bei den variablen, oder bei formcreate? Ich glaube ich weis nämlich nun was mein problem ist. Ich glaube er liest die datei und dann macht er nichts, das heist er fürgt den text bzw die vokabeln nicht in das program ein!

haentschman 25. Jun 2012 20:48

AW: Vokabel Trainer ! Hilfe
 
Zitat:

Blöde frage, aber wo füge ich set length überhaupt ein?
...jedenfalls bevor du etwas mit dem Array anfängst. Wo ist dann letztlich egal. 8-)

p80286 25. Jun 2012 20:52

AW: Vokabel Trainer ! Hilfe
 
Ich denke, da liegst Du ganz richtig.
Falls Du mit "Programm" A_Antwort meinst, ich habe nirgendwo gesehen, daß Du den Inhalt von der Stringliste dorthin überträgst.

Versuch doch mal auf einem Blatt Papier den Ablauf Deines Programms zu skizzieren, und setze das in ein Delphiprogramm um.

Gruß
K-H

Fredmaster 25. Jun 2012 21:01

AW: Vokabel Trainer ! Hilfe
 
Wie übertrage ich den den inhalt der stringliste auf a_antwort? ich glaube das würde mir immens weiterhelfen!

blawen 26. Jun 2012 08:04

AW: Vokabel Trainer ! Hilfe
 
Zitat:

Zitat von Fredmaster (Beitrag 1172397)
Wie übertrage ich den den inhalt der stringliste auf a_antwort? ich glaube das würde mir immens weiterhelfen!

Ich empfehle Dir, Dich ein wenig mit den Grundlagen vertraut zu machen.
Einen guten Einstieg dafür ist das eBook DelphiStarter (S. 73ff)

p80286 26. Jun 2012 09:46

AW: Vokabel Trainer ! Hilfe
 
Zitat:

Zitat von Fredmaster (Beitrag 1172397)
Wie übertrage ich den den inhalt der stringliste auf a_antwort? ich glaube das würde mir immens weiterhelfen!

wie wäre es z.b. mit
Delphi-Quellcode:
a_antwort[1]:=avoc[1];
vorher nicht vergessen
Delphi-Quellcode:
setlength
zu verwenden!

Und noch einmal meine dringender Hinweis mach Dir Gedanken über das Konzept Deines Programms. so wie das bisher ausschaut wird dan nichts vernünftiges draus.

Gruß
K-H

Fredmaster 26. Jun 2012 22:17

AW: Vokabel Trainer ! Hilfe
 
Danke für die vielen Antworten! Ich habe mich nun nach reifer Überlegung dazu entschieden das Program doch mithilfe einer listbox zu gestalten! Dies klappt auch schon fast mit allen Funktionen. Hier ist mein jetziger code...Nur ein problem hab ich noch und zwar bei dem submit button...hier ist der fehler er sagt dass int und string nicht zusammen passen, wenn ich jedoch den string umwandle hat er tstring und stirng pobleme? irgendwelche ideen?


Hier die Fehlerstelle

Delphi-Quellcode:
 If (radiogroup1.items:=a_richtig[i+3]) or (l_loesung.text:=a_richtig[i]) then // richtige Antwort
           begin
                l_checkup.caption:='Richtig!';
                l_checkup.font.color:=clgreen;
           end
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TVokabeltrainer = class(TForm)
    b_next: TButton;
    b_Cheat: TButton;
    b_submit: TButton;
    l_frage: TLabel;
    l_checkup: TLabel;
    l_antwort: TLabel;
    l_losungdirekt: TLabel;
    RadioGroup1: TRadioGroup;
    OpenDialog1: TOpenDialog;
    l_loesung: TEdit;
    ListBox1: TListBox;
    l_Check: TLabel;
    VocListe: TButton;
    l_cheat: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure b_submitClick(Sender: TObject);
    procedure b_nextClick(Sender: TObject);
    procedure b_CheatClick(Sender: TObject);
    procedure VocListeClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

const
  max=8;
 
var
  Vokabeltrainer: TVokabeltrainer;
  datei: TextFile;
  DateiName: string;
  a_vok: Array[1..max] of String;           // hier werden die Vokabeln/Fragen gespeichert
  a_antwort: Array[1..max] of String; // hier werden die Antwortmöglichkeiten gespeichert
  a_richtig: Array[1..max] of String;
  i: Integer;



implementation

{$R *.dfm}

procedure TVokabeltrainer.FormCreate(Sender: TObject);

begin                                     // Vokabeln, Antwortmöglichkeiten und richtige Antworten werden hier ausgegeben

       if MessageDlg('Bitte wählen sie jetzt eine Vokabel-Liste zum Üben aus',mtInformation, [mbOK], 0) =mrYES then
       l_cheat.Visible:=false;           //zeigt die Cheat option NOCH nicht an

       if OpenDialog1.Execute then { Dialog zum Dateiöffnen anzeigen }

      begin
       AssignFile(Datei, OpenDialog1.FileName); { Datei ausgewählt }
       Reset(datei);
       Readln (Datei, a_vok[i]); //Readln(datei, dateiname); { Erste Zeile der Datei lesen }
       Readln (Datei, a_antwort[i]);
       Readln (Datei, a_antwort[i+1]);
       Readln (Datei, a_antwort[i+2]);
       Readln (Datei, a_richtig[i+3]);
        radiogroup1.items[0]:=a_antwort[i];
        radiogroup1.items[1]:=a_antwort[i+1];
        radiogroup1.items[2]:=a_antwort[i+2];
       l_frage.caption:='Übersetze  ' + a_vok[i];

     end;



end;

procedure TVokabeltrainer.VocListeClick(Sender: TObject);
begin                                     // Vokabeln, Antwortmöglichkeiten und richtige Antworten werden hier ausgegeben
       if OpenDialog1.Execute then { Dialog zum Dateiöffnen anzeigen }

       begin
          AssignFile(Datei, OpenDialog1.FileName); { Datei ausgewählt }
       Reset(datei);
       Readln (Datei, a_vok[i]); //Readln(datei, dateiname); { Erste Zeile der Datei lesen }
       Readln (Datei, a_antwort[i]);
       Readln (Datei, a_antwort[i+1]);
       Readln (Datei, a_antwort[i+2]);
       Readln (datei, a_richtig[i+3]);
        radiogroup1.items[0]:=a_antwort[i];
        radiogroup1.items[1]:=a_antwort[i+1];
        radiogroup1.items[2]:=a_antwort[i+2];
       l_frage.caption:='Übersetze  ' + a_vok[i];
     end;


end;


procedure TVokabeltrainer.b_submitClick(Sender: TObject);  // überprüft die Antwort aus dem Auswahlmenü
begin


     If (Radiogroup1.itemindex=-1) and (l_loesung.text='') then      // keine Antwort angegeben
     begin
           l_checkup.caption:='Bitte eine Auswahl treffen';
           l_checkup.font.color:=clblack;
     end
     else
           If (radiogroup1.items:=a_richtig[i+3]) or (l_loesung.text:=a_richtig[i]) then // richtige Antwort
           begin
                l_checkup.caption:='Richtig!';
                l_checkup.font.color:=clgreen;
           end
     else                                                 // falsche Antwort
           begin
                l_checkup.caption:='Falsch!';
                l_checkup.font.color:=clred;
           end;

end;


procedure TVokabeltrainer.b_nextClick(Sender: TObject);
begin                                           // nächste Frage anzeigen
     //i:=random(max)+1;
     l_frage.caption:='Vokabel: ' + a_vok[i];
     radiogroup1.items[0]:=a_antwort[i+1];
     radiogroup1.items[1]:=a_antwort[i+2];
     radiogroup1.items[2]:=a_antwort[i+3];
     radiogroup1.itemindex:=-1;
     l_checkup.caption:='';
     l_loesung.Text:='';

end;

procedure TVokabeltrainer.b_CheatClick(Sender: TObject);
begin                                             // gibt die richtige Lösung aus

     l_cheat.caption:='How about:  ' + a_antwort[a_richtig[i+4]] ;
     l_cheat.font.color:=clblack;
     l_cheat.font.size:=16;
     l_cheat.font.size:=16;

end;


end.

Bummi 26. Jun 2012 22:56

AW: Vokabel Trainer ! Hilfe
 
Ich bin zu müde jetzt alles nachzuvollziehen. Was mir auffällt:
- was machst Du mit dem i ?, ich sehe nicht dass i irgendwo verändert wird
- If (radiogroup1.items:=a_richtig[i+3]) or (l_loesung.text:=a_richtig[i])
verglichen wird mit = nicht mit := (dies ist für Zuweisungen)
radiogroup1.items ist eine Stringlist(bzw. TStrings) auf einen String darin greifst Du per
radiogroup1.items[0] oder radiogroup1.items[i] oder radiogroup1.items[radiogroup1.Itemindex] zu

Du könntest auch direkt über die Indizes radiogroup1.Itemindex=i vergleichen wenn denn i einen sinnvollen Wert enthielte

p80286 27. Jun 2012 09:26

AW: Vokabel Trainer ! Hilfe
 
Trotz der zarten Andeutungen scheinst Du immer noch nicht zu wissen was Du tust.
Schau Dir einmal das Form.Create an.
Da wird eine globale Variable I als Index für ein Array genutzt.
Es ist nicht ersichtlich wo irgendwo I ein Wert zugewiesen wird.
Dann öffnest Du zwar eine Vokabeldatei, aber das zugehörige
Delphi-Quellcode:
Closefile
ist nirgendwo zu finden.

So wird das nichts.
Schau Dir mal ein Grundlagentutorial an, besser arbeite es einmal durch!

Gruß
K-H

Fredmaster 28. Jun 2012 17:35

AW: Vokabel Trainer ! Hilfe
 
Danke für alle Antworten! Ich bin fertig und alles funktioniert!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:12 Uhr.
Seite 2 von 2     12   

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