Autor Beitrag
beastofchaos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: Do 31.03.11 14:33 
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:

ausblenden 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 70
Erhaltene Danke: 5


Delphi 10 Seattle Prof.
BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
type
  TPower = (poNord, poOst, poSued, poWest);
beastofchaos Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 247
Erhaltene Danke: 4



BeitragVerfasst: 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