AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

[Gelöst] Verwendung von TQueue

Ein Thema von MrMooed · begonnen am 13. Okt 2012 · letzter Beitrag vom 14. Okt 2012
Antwort Antwort
Benutzerbild von MrMooed
MrMooed

Registriert seit: 18. Feb 2012
101 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Verwendung von TStack

  Alt 13. Okt 2012, 19:43
TStack ist wie TList
Es will einen "Wert", den es speichern kann.

Wie gesagt, diese Variable "Key" ist nach Verlassen der Ereignisprozedur ungültig und damit auch der Zeiger auf sie.
Aber wie kann ich ihm den Wert übergeben, wenn er einen Zeiger erwartet stehe da gerade auf dem Schlauch

//Edit:
Argh habe den Post von sakura nicht gesehen. Werde es eben mal so testen

//Edit2:
So wie sakura es vorgeschlagen hat klappt es Das klärt auch meine Frage wie ich ihm einen Wert übergebe wenn er einen Pointer erwartet Vielen Dank an euch

Geändert von MrMooed (13. Okt 2012 um 19:58 Uhr)
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Verwendung von TStack

  Alt 13. Okt 2012, 22:00
So wie sakura es vorgeschlagen hat klappt es Das klärt auch meine Frage wie ich ihm einen Wert übergebe wenn er einen Pointer erwartet Vielen Dank an euch
Statt dem Key kannst du ihm auch einen State übergeben.

Delphi-Quellcode:
type
  TDirections = (dirLeft, dirRight);

// ...

case Key of
  70: Tasten.Push(Pointer(dirLeft)); // [F] - LINKS
  74: Tasten.Push(Pointer(dirRight)); // [J] - RECHTS
end;
Ist einfacher, Bezeichner wie "dirLeft" und "dirRight" zu assoziieren, als 70, 74:
Delphi-Quellcode:
procedure TMain.Timer1Timer(Sender: TObject);
var
  i: ^Integer;
begin
  i := Tasten.Pop;
  case TDirection(i) of
    dirLeft: Spieler[0].dreheLinks;
    dirRight: Spieler[0].dreheRechts;
  darstellen(Sender);
end;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.542 Beiträge
 
Delphi 12 Athens
 
#3

AW: Verwendung von TStack

  Alt 13. Okt 2012, 23:19
Zitat:
Delphi-Quellcode:
var
  i: ^Integer;
begin
  i := Tasten.Pop;
  case TDirection(i) of
Warum nicht "verständlichen" Code schreiben?

Ich weiß auch nicht, was ^Integer aka PInteger mit TDirection ode Pointer zu tun hat.

Hinzu wurde ja doch direkt gecastet. ( TDirections > Pointer )
Warum dann nicht auch rückzu? ( Pointer > PInteger > TDirections )

Delphi-Quellcode:
var
  d: TDirection;
begin
  d := TDirection(Tasten.Pop);
  case d of
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Verwendung von TStack

  Alt 14. Okt 2012, 01:18
Wenn das über Pop so geht, ohne dass der Compiler wegen irgendwas rummeckert, dann noch besser.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.542 Beiträge
 
Delphi 12 Athens
 
#5

AW: Verwendung von TStack

  Alt 14. Okt 2012, 09:27
MinEnumSize für diesen Enum auf 4 stellen (bzw. unter 64 Bit auf 8)

Damit die Typen gleich groß und somit das Casten problemlos geht
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
daywalker9

Registriert seit: 1. Jan 2010
Ort: Leer
594 Beiträge
 
Delphi XE3 Professional
 
#6

AW: Verwendung von TStack

  Alt 14. Okt 2012, 10:49
Gelöscht
Lars
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz