Delphi-PRAXiS
Seite 4 von 4   « Erste     234   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Arrays mit drei Dimensionen... nicht einfach -.- (https://www.delphipraxis.net/103286-arrays-mit-drei-dimensionen-nicht-einfach.html)

mkinzler 14. Nov 2007 16:38

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Ich habe dir nur eine alternative, bessere Implementierung für den Stack geliefert.
Der Rest meines Vorschlags ging ja in die selbe Richtung wie alzaimars.

ArchaicSeraphim 14. Nov 2007 16:42

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Hmm, na dann, danke mkinzler. Aber ich kann das überhaupt nicht benutzen, das ist auf einem so hohen Niveau... ich verstehe zwar ein paar Sachen, aber die meisten Befehle kenne ich nicht und insgesamt ist das total gruselig gut xD
Zu gut für meine Durchschnittsprodukte :oops:

€dit: Kann mir auch mal wer sagen, wie ich diese Übergangstabeller mit Werten füllen kann? Ich will die mal als Konstante vorgeben. Die liegt dann ausgelagert in einer Unit "Tabelle1" oder so. Damit man auch verschiedene Automatentafeln benutzen kann. Das Problem ist jetzt, wie fülle ich ein dreidimensionales Array mit 'nem Record drin? Wie fülle ich überhaupt 'nen Record? So:

Delphi-Quellcode:
UeT : TUebergangstabelle =
(((NZustand:=zsA,NKellerZustand:=kA),({...usw}),({usw...})),
  ({usw...}),({usw...}));
?

Geht das? Hilfe!

alzaimar 14. Nov 2007 17:05

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Fast richtig. Einfach die Werte eintragen, ohne 'Namen'.
Delphi-Quellcode:
Const
  UT : TUebergangstabelle = (
   (a1,b1,c1),
   (a2,b2,c2)
...
   );

ArchaicSeraphim 14. Nov 2007 17:18

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Öh... hä? :wiejetzt: Ich bin ehrlich verwirrt... Ich dachte, in dem Record werden zwei Sachen gespeichert, muss man dann nicht auch immer zwei Werte eintragen? Also sozusagen

Delphi-Quellcode:
Const
  UT : TUebergangstabelle = ( 
   ((a1,b1),(c1,d1)),
   ((a2,b2),(c2,d2))
...
   );
?

alzaimar 14. Nov 2007 17:19

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Du weisst schon, was ich meine.... Probier halt mal rum.

ArchaicSeraphim 14. Nov 2007 17:24

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Hehe, ok, ich probier dann mal rum. Wenn's (wieder, heul) Probleme geben sollte melde ich mich. Wenn's klappt schalte ich die Frage auf beantwortet ;]

€dit: Aha, hab' schon ein Problem: Wie kann ich denn eine Methode in einem Record speichern / auslesen? Ich will ja nicht den neuen Kellerzustand in dem Record haben, sondern die Kelleroperation.

ArchaicSeraphim 14. Nov 2007 19:16

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Sorry für den Doppelpost, bin so ungeduldig.

Wie kann ich in dem Record eine Methode des Kellers speichern bzw. auslesen?

€dit:

So sieht mein Krempel bis jetzt aus:

Delphi-Quellcode:
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.NZustand,TUebergang.Kellerops);


const
  UeT : TUebergangstabelle = (
        (((zA),(1)),((zB),(1)),((zF),(0))),            // Keller: s  zS
        (((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

constructor create;
begin
  inherited create;
  AKeller := TKeller.create;
  z := zS;
  k := s;
end;

function proof(input:char):boolean;
var
i,n: integer;
begin
  n := length(input);
  for i := 1 to n do
  begin
    e := input[i];
    AUebergang
  end
end;

end.
Wo ist der Fehler? HILFE!!!

ArchaicSeraphim 17. Nov 2007 15:18

Re: Arrays mit drei Dimensionen... nicht einfach -.-
 
Hab' das Problem gelöst. Sry für den Tripelpost xD


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Seite 4 von 4   « Erste     234   

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