Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   '=' erwartet, aber ':' gefunden (https://www.delphipraxis.net/42507-%3D-erwartet-aber-gefunden.html)

steppo 20. Mär 2005 02:42


'=' erwartet, aber ':' gefunden
 
Kann mir jemand sagen, warum ich bei folgender Konstellation diese Fehlermeldung erhalte.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TBuchstabe = (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u,
    v, w, x, y, z, ae, oe, ue);


  TBuchstaben: array[TBuchstabe] of string = 'a', 'b', 'c', 'd', 'e', 'f', 'g',//In dieser Zeile Tritt der Fehler auf.
    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
    'v', 'w', 'x', 'y', 'z', 'ae', 'oe', 'ue');

type
  TMatrix = record
    Buchstabe: TBuchstaben;
    Binaer: integer;
  end;
Fehlermeldung:
[Fehler] Unit1.pas(14): '=' erwartet, aber ':' gefunden

Ich möchte später das Record Matrix mit werten füllen.

Christian Seehase 20. Mär 2005 03:20

Re: '=' erwartet, aber ':' gefunden
 
Moin Steppo,

hier
Delphi-Quellcode:
TBuchstaben: array[TBuchstabe] of string ....
muss noch ein const davor.
Das ist ja kein Typ mehr.

PattyPur 20. Mär 2005 07:19

Re: '=' erwartet, aber ':' gefunden
 
Ausserdem hast du vergessen die Klammer aufzumachen hinter dem =

moritz 20. Mär 2005 08:20

Re: '=' erwartet, aber ':' gefunden
 
Delphi-Quellcode:
  TBuchstaben: array[TBuchstabe] of string = 'a', 'b', 'c', 'd', 'e', 'f', 'g',//In dieser Zeile Tritt der Fehler auf.
    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
    'v', 'w', 'x', 'y', 'z', 'ae', 'oe', 'ue');
Abgesehen davon muss, soweit ich weiß, in den eckigen Klammern nach dem Array die Anzahl der Elemente stehen, und nicht, von welchem Typ sie sein sollen. Sonst brauchst du ein set of.... Oder? :gruebel:

mirage228 20. Mär 2005 08:28

Re: '=' erwartet, aber ':' gefunden
 
Hi,

wenn Deine Strings immer den Enum-Namen entsprechen (scheint hier der Fall zu sein), kannst Du auch schreiben:

Delphi-Quellcode:
uses  
  TypInfo;

// ...
var
  s: string;
  b: TBuchstabe;
begin
  b := u; // z.B.
  s := GetEnumName(TypeInfo(TBuchstabe), Integer(b)); // gibt den String "u" zurück
mfG
mirage228

steppo 20. Mär 2005 11:30

Re: '=' erwartet, aber ':' gefunden
 
Danke Leute für die schnelle Antwort.

O.K

Werde das Problem genauer beschreiben.

TBuchstabe ist ein Aufzählungstyp.

Delphi-Quellcode:
type
  TBuchstabe = (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u,
    v, w, x, y, z, ae, oe, ue);
TBuchstaben ist ein array dieses vorher genannten Aufzählungstypen.

Delphi-Quellcode:
TBuchstaben: array[TBuchstabe] of string = ('a', 'b', 'c', 'd', 'e', 'f', 'g',
    'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u',
    'v', 'w', 'x', 'y', 'z', 'ae', 'oe', 'ue');
Das heißt, das sich der Berich in diesem Array (welches sonst mit [0..28]) definiert würde) von a bis ue erstreckt.

Diese Konstrukt brauche ich nachher, um die Position im Array zu bestimmen.
Das heißt in dem Record werden zwei Werte gespeichert.

Delphi-Quellcode:
type
  TMatrix = record
    Buchstabe: TBuchstaben;
    Binaer: integer;
  end;
1. Ein Wert
2. Ein String ermittelt aus der Position des Aufzählungstypen.

Das ganze soll nachher so aussehen.

In dem nachher, in der Procedur entstehenden Array, werden die Werte:
TMatrxi = Buchstabe:a,Binaer:1;Buchstabe:b,Binaer:2,usw

Hoffe ich konnte das ganze jetzt verdeutlichen.

Den Aufzählungstypen brauche ich lediglich, um die Position im Array von Typ string zu bestimmen.

S - tefano 20. Mär 2005 11:53

Re: '=' erwartet, aber ':' gefunden
 
Sehe ich das jetzt richtig, dass du dadurch die Nummer des jeweiligen Buchstaben im Alphabet herausfinden willst?
Einfacher währe eigentlich, über den ASCII-Code zu gehen.
Wenn ich mich recht entsinne, bekommst du zum Beispiel mit
Delphi-Quellcode:
ord('A')
die Zahl 65 zurück. Nehme das Ergebnis also Minus 64 und du hast die Nummer des Buchstaben im Alphabet; Kleinbuchstaben solltest du vorher UpperCase setzen, damit du nicht verschiedene Startwerte subtrahieren musst.

Was dein Konstrukt angeht, so kann ich nur die bereits gegebenen Hinweise nennen:
In die Eckige Klammer hinter dem Array-Bezeichner kannst du keinen Typennamen schreiben, da muss die Anzahl der Elemente hin. Desweiteren hast du vor der Aufzählung der Strings die öffnende Klammer vergessen, und ob die runde Klammer "(" dafür die richtige ist, würde ich bezweifeln. Müsste eigentlich "[" sein, oder "{"...eins von beiden jedenfalls ;-)

Bis dann,

S - tefano

[Edit]
Oder lass die eckige Klammer hinter dem Array-Bezeichner ganz weg, wenn du schon eine konstante vordefinierte Menge von Elementen hast, geht das glaube ich auch automatisch.
[/Edit]

malo 20. Mär 2005 11:58

Re: '=' erwartet, aber ':' gefunden
 
Zitat:

Zitat von S - tefano
und ob die runde Klammer "(" dafür die richtige ist, würde ich bezweifeln. Müsste eigentlich "[" sein, oder "{"...eins von beiden jedenfalls ;-)

Die geschweifte Klammer ( "{...}" ) ist es ganz sicher nicht, da diese in Delphi (Pascal) als Kommentar interpretiert wird ;)

S - tefano 20. Mär 2005 12:01

Re: '=' erwartet, aber ':' gefunden
 
...hups... :oops:
Achja, zu den Umlauten noch:
Die ord-Methode wird dir da zwar einen Wert zurückgeben, da musst du dann aber soweit ich weiß eine Zahl >65 abziehen, weil Umlaute ja so eine Art regionales Sonderzeichen sind und nicht im "normalen" Alphabet vorkommen.

steppo 20. Mär 2005 12:07

Re: '=' erwartet, aber ':' gefunden
 
Die oeffnede Klammer ist vorhanden. Habe sie nur vergessen zu Kopieren.

Habe das ganze schonmal in einer Unit verwendet, um Feiertage zu bestimmen. Warumes jedoch jetzt nicht funktioniert ist mir ein Rätsel.

Wie gesagt, es wird laut kompilier eine = anstatt eines Doppelpunktes erwartet.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:30 Uhr.
Seite 1 von 3  1 23      

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