Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Unverständlicher Fehler (https://www.delphipraxis.net/60822-unverstaendlicher-fehler.html)

jakobwak 12. Jan 2006 17:23


Unverständlicher Fehler
 
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 Fehler:Debugger 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

zer00 12. Jan 2006 17:38

Re: Unverständlicher Fehler
 
Hi

Wo, gibst Du die Grösse des Arrays zeichen an?
So sollte es gehen:

Delphi-Quellcode:
var zeichen: Array of string;

procedure foo;
begin
        setLength(zeichen,1);
        etc...
end;

grz zer00


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:40 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