Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse (https://www.delphipraxis.net/208811-2-variablen-selber-laenge-unterschiedlichen-typs-auf-selber-speicheradresse.html)

Uwe Raabe 16. Sep 2021 10:44

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1494972)
Dieses "case Integer of ..." ist von der Syntax irgendwie eines der ... merkwürdigsten Sachen in Pascal, finde ich.

Gibt es aber schon seit Anbeginn aller Pascal-Zeiten!

Häufig gibt es zu diesem Typ auch eine Variable, also ein Feld in dem Record (das tag field), um festzulegen, welcher Variantentyp gerade in dem Record steht. Aber man kann das eben auch weglassen.

Redeemer 16. Sep 2021 11:42

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1494975)
Zitat:

Zitat von Der schöne Günther (Beitrag 1494972)
Dieses "case Integer of ..." ist von der Syntax irgendwie eines der ... merkwürdigsten Sachen in Pascal, finde ich.

Gibt es aber schon seit Anbeginn aller Pascal-Zeiten!

Ich glaub das komische daran ist dieses "Integer", was halt überhaupt nichts aussagt und auch nicht gespeichert wird, oder?

Zitat:

Zitat von Uwe Raabe (Beitrag 1494975)
Häufig gibt es zu diesem Typ auch eine Variable, also ein Feld in dem Record (das tag field), um festzulegen, welcher Variantentyp gerade in dem Record steht. Aber man kann das eben auch weglassen.

Kommt dem von Delphi aus eine besondere Bedeutung zu oder ist das einfach nur so etwas?

freimatz 16. Sep 2021 12:40

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Ja das ist einfach so etwas. Es ist aber Subotimal hier ein Integer zu verwenden. Gut ist es (wenn überhaupt) die Verwendung eines Aufzählungstyps.

Uwe Raabe 16. Sep 2021 12:46

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von Redeemer (Beitrag 1494979)
Ich glaub das komische daran ist dieses "Integer", was halt überhaupt nichts aussagt und auch nicht gespeichert wird, oder?

Es gibt halt den Typ der folgenden case-label Konstanten an.

Zitat:

Zitat von Redeemer (Beitrag 1494979)
Kommt dem von Delphi aus eine besondere Bedeutung zu oder ist das einfach nur so etwas?

Die Frage habe ich noch nicht verstanden (zumindest nicht so dass ich sie beantworten könnte).

Uwe Raabe 16. Sep 2021 12:48

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von freimatz (Beitrag 1494981)
Gut ist es (wenn überhaupt) die Verwendung eines Aufzählungstyps.

Delphi-Quellcode:
type
  THackersCaseSelector = (ThisIsTheRealStructure, ThisIsWhatTheFuckingApiRequires);

freimatz 16. Sep 2021 13:15

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
:thumb:

Redeemer 16. Sep 2021 13:54

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1494984)
Zitat:

Zitat von Redeemer (Beitrag 1494979)
Kommt dem von Delphi aus eine besondere Bedeutung zu oder ist das einfach nur so etwas?

Die Frage habe ich noch nicht verstanden (zumindest nicht so dass ich sie beantworten könnte).

Gemeint war: Hat das Tag für Delphi eine besondere Bedeutung, dass es zum Beispiel Compilermeldungen bezüglich der Typ-/Zuweisungssicherheit auslöst?

Uwe Raabe 16. Sep 2021 14:07

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von Redeemer (Beitrag 1494990)
Hat das Tag für Delphi eine besondere Bedeutung, dass es zum Beispiel Compilermeldungen bezüglich der Typ-/Zuweisungssicherheit auslöst?

Wenn kein Tag-Field da ist, dann gilt der Tag-Typ nur für die Konstanten des case. Ein Tag-Field ist in der Hinsicht auch nur ein ganz normales Feld des Records. Beim Zugriff auf die Varianten wird der Inhalt des Tag-Fields auch nicht überprüft. Das ginge eh erst zur Laufzeit.

dummzeuch 16. Sep 2021 19:55

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1494972)
Dieses "case Integer of ..." ist von der Syntax irgendwie eines der ... merkwürdigsten Sachen in Pascal, finde ich.

Ursprünglich gab es da ja auch noch ein eigenes Feld für:
Delphi-Quellcode:
type
  TUnion = record
    case RecTyp: Integer of
      0: ....
      1: ....
      4711: ....
    end;
Da wurde dann in RecType ein Integer gespeichert, anhand dessen man ermitteln konnte, wie der Record aussieht.
Und dann hat sich halt herausgestellt, dass ein solches zusätzliches Feld nicht immer praktikabel ist, also kann man das Feld auch weglassen.

(Frag' mich keiner, wer das implementiert hat. War das noch Wirth? Oder vielleicht erst Borland?)

Uwe Raabe 16. Sep 2021 20:52

AW: 2 Variablen selber länge unterschiedlichen Typs auf selber Speicheradresse
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von dummzeuch (Beitrag 1495010)
Und dann hat sich halt herausgestellt, dass ein solches zusätzliches Feld nicht immer praktikabel ist, also kann man das Feld auch weglassen.

Das war schon von Anfang an in der Sprachdefinition so vorgesehen. Hier ein Bild aus dem Pascal User Manual and Report:


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 Uhr.
Seite 2 von 2     12   

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