Autor Beitrag
ArchaicSeraphim
Hält's aus hier
Beiträge: 6

Win 95, Win 98, Win 2000, Win ME, Win XP, Suse Linux
Delphi 7 PE
BeitragVerfasst: Do 15.11.07 19:11 
Hallo Leute!
Mein erster Thread, wow. Und schon hab' ich 'ne Frage: Wie genau funktioniert "record"? Ich habe mal versucht, das anzuwenden, aber es ist voll fehlgeschlagen. Aber seht selbst (Anhang).
Ich habe mir zuerst einmal einen Keller gebastelt (Kellerunit). Dann habe ich versucht einen Automaten zu bauen, der den Keller als Stack benutzen kann. Problem: Geht nicht. Warum weiß ich nicht. Ich bin alles x mal durchgegangen...
Bitte helft mir!
Danke schon mal im vorraus,

ArchaicSeraphim
Einloggen, um Attachments anzusehen!
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Do 15.11.07 19:23 
Hallo und :welcome:!

Bitte beschreibe doch etwas genauer, was nicht funktioniert. Kommen Fehlermeldungen beim Kompilieren (wenn ja, welche?), funktioniert etwas währen der Ausführung nicht?

Es ist außerdem besser, wenn Du Deinen Quellcode bzw. die relevanten Stellen davon im Beitrag postest, damit man sich nicht erst was herunterladen muss.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
ArchaicSeraphim Threadstarter
Hält's aus hier
Beiträge: 6

Win 95, Win 98, Win 2000, Win ME, Win XP, Suse Linux
Delphi 7 PE
BeitragVerfasst: Do 15.11.07 19:31 
Ups, sorry. Also Folgendes:

Relevanter Teil der Unit "Automat":

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
unit Automat;

interface

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

type
  TAutomat = class
    constructor create;
    function proof(input:char):boolean;
  end;
  TEingabe = (eA,eB,eI);
  TZustand = (zS,zA,zB,zF);
  TKellerZustand = (s,m);
  TUebergang = record
    NZustand:TZustand;
    Kellerops:integer;
  end;
  TUebergangstabelle = array [TEingabe,TZustand,TKellerzustand] of TUebergang;


const
  UeT : TUebergangstabelle = (
        (((zA),(1)),((zB),(1)),((zF),(0))),             // Keller: s   zS    @@@siehe Fehler!@@@
        (((zF),(0)),((zF),(0)),(zF,(0))),               //         s   zA
        (((zF),(0)),((zF),(0)),(zF,(0))),               //         s   zB
        (((zF),(0)),((zF),(0)),(zF,(0))),               //         s   zF
        (((zF),(0)),((zF),(0)),(zF,(0))),               //         m   zS
        (((zA),(1)),((zA),(-1)),(zF,(0))),              //         m   zA
        (((zB),(-1)),((zB),(1)),(zF,(0))),              //         m   zB
        (((zF),(0)),((zF),(0)),(zF,(0))),               //         m   zF
        );

var
  e : TEingabe;
  z : TZustand;
  k : TKellerzustand;
  AKeller : TKeller;
  AUebergang : TUebergang;

implementation
//... usw


Fehlermedlungen beim compilen: viele, aber die wichtigsten:

[Fehler] Automat.pas(26): Undefinierter Bezeichner: 'zA'
[Fehler] Automat.pas(26): '=' erwartet, aber ')' gefunden

Zeile 26 ist im Quelltext mit comment gekennzeichnet. Reicht das erstmal?
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: Do 15.11.07 20:23 
Vielleicht solltest du hier auch auf den Beitrag in der DP verweisen, aus der der Code stammt.
Dann solltest du die Reihenfolge, Eingabe, Zustand einhalten und dann Werte aus den Wertemengen nehmen.

_________________
Markus Kinzler.
ArchaicSeraphim Threadstarter
Hält's aus hier
Beiträge: 6

Win 95, Win 98, Win 2000, Win ME, Win XP, Suse Linux
Delphi 7 PE
BeitragVerfasst: Do 15.11.07 20:28 
Hoi mkinzler!
Schön dich auch mal wieder zu treffen :wink:.
Irgendwie ist mein Beitrag dort (in der DP) in die Bedeutungslosigkeit abgedriftet, deshalb versuche ich hier mal mein Glück.

Der Beitrag.

Aber die anderen Kritikpunkte verstehe ich nicht ganz, ich halte doch alles ein. Kannst du mir ein Beispiel geben, wo ich das nicht getan habe?

Greetz ;)

_________________
In diesem Sinne,
Arc
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Do 15.11.07 22:51 
Du hast Dich mit deiner Aufgabenstellung übernommen, aber egal. Vielleicht schaffst Du es ja trotzdem.

Du deklarierst deine TÜebergangstabelle als Array [...] Of TEinRecord;

Der 'TEinRecord' besteht aus DREI Elementen. Wieviele Elemente weisst Du jedem der TUebergangstabelle-Einträge zu? Zähl mal.

_________________
Na denn, dann. Bis dann, denn.
ArchaicSeraphim Threadstarter
Hält's aus hier
Beiträge: 6

Win 95, Win 98, Win 2000, Win ME, Win XP, Suse Linux
Delphi 7 PE
BeitragVerfasst: Do 15.11.07 23:58 
TUebergang ist der Record. Und der besteht nur aus NZustand:TZustand und Kellerops:integer oder?

€dit: sorry das ich so spät antworte, war mal kurz weg.

€dit2: Hab's jetzt auch ohne eure Hilfe geschafft ;P. Ich war wirklich blöd. Hab' jetzt zwei Tabellen.

_________________
In diesem Sinne,
Arc