Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - S ist kein String!


beastofchaos - Do 31.03.11 14:33
Titel: S ist kein String!
Hallo Leute, ich bastel seit ewiger Zeit inzwischen ( wie schon einige hier wissen ) an einer Minigolf-Simulation,
ich bin inzwischen an einem Editor, mit dem man die Level kreieren kann. Es gibt in dem Spiel unteranderem ein "Powerschubgebiet" - der Typ sieht wie folgt aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
  TVector2D = record
    x, y: Single;
  end;

  TLine = record
    p, r: TVector2D;
  end;

  TBarricade = record
    a, b, c, d: TLine;
  end;

  TPower = (N, O, S, W);
  TPowerarea = record
    A: TBarricade;      // Sas gebiet
    P: TPower;          // Die Druckrichtung (norden, osten, süden, westen - s.o.)
  end;


Ich müsst nicht alles verstehen - wichtig ist nur der Typ TPower.
Nun liest das Programm aus einer Quelltextdatei die Informationen und erfährt unteranderem ,dass in dem Level eine "Powerarea" ist. List das Gebiet aus und anschließend TPower. Da alles, was aus der Textdatei geholt wird, anfangs als String gespeichert wird. Nun schreibe ich eine Function, die den String bzw. den einzelnen Buchstaben ( -> Char ) ausliest, das sieht folgendermaßen aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
function Char_to_Power(C: Char): TPower;
begin
  case C of
    'N': result := N;
    'O': result := O;
    'S': result := S;                  // Fehlermeldung! -> Incompatible types: 'TPower' and 'String'
    'W': result := W;
    end;
end;


Wieso ist der Buchstabe S ohne Hochstriche für Delphi trotzdem ein String - das komische: Bei den anderen Buchstaben kommt das nicht (?)

Ich hffe auf schnelle Antwort, Grüße Thomas


HenryHux - Do 31.03.11 14:43

In Delphi gibt es reservierte Schlüsselwörter.
Doch soweit ich weiß, ist S keins.
Was ich mir vorstellen kann ist, dass du eine Variable S global oder lokal als etwas anderes definiert hast.

lg


Thom - Do 31.03.11 14:46

user profile iconbeastofchaos hat folgendes geschrieben Zum zitierten Posting springen:
Ich müsst nicht alles verstehen...
:gruebel:

Du hast irgendwo eine Variable mit dem Namen S und dem Typ String definiert. :wink:

Besser sind bei Bezeichner solche Definitionen:

Delphi-Quelltext
1:
2:
type
  TPower = (poNord, poOst, poSued, poWest);


beastofchaos - Do 31.03.11 15:15

Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Hast anscheinend recht :)

und ich meitne IHR xDD ich muss das schließlkich als einziger verstehen - das thema ist dann gelöst, da die funktion eine interne war und die "Überfunktion" ein "S: string" enthielt.
Dankeschön Leute