Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Vokabel trainer? (https://www.delphipraxis.net/169033-vokabel-trainer.html)

Fredmaster 25. Jun 2012 17:41

Vokabel trainer?
 
Ich habe hier einen Vokabel trainer zusammengebaut...Ich kapiere nur nicht wo hier genau die fehler meldung herkommt?
Wenn ich Versuche die Vokabel u üebrprüfen(submit) dann kommt die fegler meldung "EAccessViolation"
Überhaupt funktioniert das Program noch nicht perfekt, die vokabeln werden noch nicht aus der textdatei ausgelesen bzw nicht angezeigt?!
Danke für eure Hilfe

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TVokabeltrainer = class(TForm)
    l_frage: TLabel;
    l_checkup: TLabel;
    l_antwort: TLabel;
    b_submit: TButton;
    b_next: TButton;
    b_cheat: TButton;
    b_text: TButton;
    OpenDialog1: TOpenDialog;
    ListBox1: TListBox;
    l_loesung: TEdit;
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure b_submitClick(Sender: TObject);
    procedure b_nextClick(Sender: TObject);
    procedure b_cheatClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

const
  max=8;
 
var
  Vokabeltrainer: TVokabeltrainer;
  datei: TextFile;
  DateiName: string;
   a_vok: Array of String;          
   a_antwort: Array of String;      
   a_richtig: Array of Integer;      
   nr: Integer;                    
   voc: TStringList;



implementation

{$R *.DFM}


procedure TVokabeltrainer.FormCreate(Sender: TObject);
var max: integer;
begin                                    

      If OpenDialog1.execute then          
        Dateiname:=opendialog1.filename
     else
        Dateiname:='voc.txt';
        voc:=TStringlist.create;                        
        voc.LoadFromFile(Dateiname);                    
        max:=voc.count div(5);
        nr:=random(max-1);                              
        l_frage.caption:='Vokabel: ' + voc[nr*5];        
        radiogroup1.items[0]:=voc[nr*5+1];              
        radiogroup1.items[1]:=voc[nr*5+2];              
        radiogroup1.items[2]:=voc[nr*5+3];              

     nr:=random(max)+1;                            
     l_frage.caption:='Vokabel: ' + a_vok[nr*5];  
     radiogroup1.items[0]:=a_antwort[nr*5+1];
     radiogroup1.items[1]:=a_antwort[nr*5+2];
     radiogroup1.items[2]:=a_antwort[nr*5+3];
     radiogroup1.itemindex:=-1;

end;


procedure TVokabeltrainer.b_cheatClick(Sender: TObject);
begin                                                    

     l_checkup.caption:='how about "' + a_antwort[nr, a_richtig[nr]] + '"?';
     l_checkup.font.color:=clblack;
     l_checkup.font.size:=10;
end;


procedure TVokabeltrainer.b_submitClick(Sender: TObject);
begin                                          
     If (Radiogroup1.itemindex=-1) and (l_loesung.text='') then                  
     begin
           l_checkup.caption:='Bitte eine Auswahl treffen';
           l_checkup.font.color:=clblack;
     end
     else
           If (Radiogroup1.itemindex=a_richtig[nr]-1) or (l_loesung.text=a_antwort[nr, a_richtig[nr]] ) then
           begin
                l_checkup.caption:='Richtig!';
                l_checkup.font.color:=clgreen;
           end
     else                                                
           begin
                l_checkup.caption:='Falsch!';
                l_checkup.font.color:=clred;
           end;

end;

procedure TVokabeltrainer.b_nextClick(Sender: TObject);
begin                                          
     nr:=random(max)+1;
     l_frage.caption:='Vokabel: ' + a_vok[nr*5];
     radiogroup1.items[0]:=a_antwort[nr*5+1];
     radiogroup1.items[1]:=a_antwort[nr*5+2];
     radiogroup1.items[2]:=a_antwort[nr*5+3];
     radiogroup1.itemindex:=-1;
     l_checkup.caption:='';
     l_loesung.Text:='';

end;

end.

himitsu 25. Jun 2012 18:12

AW: Vokabel trainer?
 
Ich würde dir empfehlen mal zwei andere aktuelle Themen durchzulesen.

http://www.delphipraxis.net/169023-f...owmessage.html (vorallem Antwort #3)

http://www.delphipraxis.net/169026-s...erletzung.html (hier hat jemand den selben Fehler gemacht)





Delphi-Referenz durchsuchenSetLength

Wenn du schon dynamische Arrays verwendest, dann solltest du da auch Speicher reservieren, bevor du da was reinmachst und beim Auslesen sollte man nur auf existierende Felder zugreifen.

TBx 25. Jun 2012 18:34

AW: Vokabel trainer?
 
einmal reicht hier gehts weiter...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:16 Uhr.

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