Thema: Delphi Unverständlicher Fehler

Einzelnen Beitrag anzeigen

jakobwak

Registriert seit: 12. Jan 2006
1 Beiträge
 
#1

Unverständlicher Fehler

  Alt 12. Jan 2006, 17:23
Hi,

verstehe nicht warum das Programm nicht funktioniert. Soll eigentlich ein dynamisches Wort-Erkennunsprogramm als Automat werden.Habe sogar gehört dass das überhaupt nicht geht, will es aber mal versuchen. Die Laufzeit lässt sich auch starten, aber immer wenn ich auf einen Button klicke, kommt folgender Fehlerebugger Exception Notification
Project Project1.exe raised exception class EAcessViolation with message 'AcessViolation at adress 00403E4C in module 'project1.exe'. Read of adress 00000004'. Process stopped. Use Step or Run to continue.

Quelltext des Programms(ist noch nicht fertig,z.b. Endzustand muss noch definiert werden):
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button3: TButton;
    Label3: TLabel;
    Edit1: TEdit;
    Label5: TLabel;
    Button4: TButton;
    Label1: TLabel;
    Edit2: TEdit;
    Button1: TButton;
    Label2: TLabel;
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

    function f(zustand: integer; x:string):integer;
    function g(zustand: integer; x:string):string;
var
  Form1: TForm1;
  zustand,folgezustand,len,len2: integer;
  eingabe: string;
  zeichen: array of string;

implementation

{$R *.dfm}

function f(zustand:integer; x:string):integer;
begin
Case zustand of
  0:if x=zeichen[1] then f:=1
      else f:=0;
  1:if x=zeichen[2] then f:=2
      else f:=0;
  2:if x=zeichen[3] then f:=3
      else f:=0;
  3:if x=zeichen[4] then f:=4
      else f:=0;
  4:if x=zeichen[5] then f:=5
      else f:=0;
  5:if x=zeichen[6] then f:=6
      else f:=0;
  6:if x=zeichen[7] then f:=6
      else f:=0;
  end;
end;



function g(zustand:integer; x:string):string;
begin
Case zustand of
  0:g:='Zustand: Startzustand 0';
  1:g:='Zustand: 1';
  2:g:='Zustand: 2';
  3:g:='Zustand: 3';
  4:g:='Zustand: 4';
  5:g:='Zustand: 5';
end;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
    label1.caption:='';
    label3.caption:='Zustand: Startzustand z0';
    Edit1.text:='';
    zustand:=0;
end;

procedure TForm1.Button4Click(Sender: TObject);
var i:integer;
begin
  len:=length(Edit1.Text);
  zustand:=0;
  eingabe:=Edit1.Text;
  for i:= 1 to len do
    begin
    eingabe:=Copy(Edit1.Text,i,1);
    folgezustand:=f(zustand,eingabe);
    zustand:=folgezustand;
    label3.caption:=g(zustand,eingabe);
    end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key < 'a') or (Key > 'z') then
    begin
    key:=Chr(27);
    ShowMessage('Bitte geben sie einen Buchstaben von a bis z oder ein @-Zeichen ein')
    end;
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if (key < 'a') or (Key > 'z') then
    begin
    key:=Chr(27);
    ShowMessage('Bitte geben sie einen Buchstaben von a bis z oder ein @-Zeichen ein')
    end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var j:integer;
begin
len2:=length(Edit2.Text);
for j:= 1 to len2 do
begin
zeichen[j]:=Copy(Edit2.Text,j,1)
end;
end;

end.
mfg
  Mit Zitat antworten Zitat