AGB  ·  Datenschutz  ·  Impressum  







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

"Datentyp" record end wer kennt ihn?

Ein Thema von QuickAndDirty · begonnen am 4. Dez 2024 · letzter Beitrag vom 11. Dez 2024
Antwort Antwort
Seite 1 von 2  1 2      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

"Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 12:29
Also ich kenne den Datentyp seit jetzt... vermutlich...

Delphi-Quellcode:
PServerHeader = ^TServerHeader;
TServerHeader= packed record
    Server:TAdresse;
    Port:Integer
    AlternativerServer: Record end;
  end;
Mann kann damit zumindest in dem code den ich mir auf github(https://github.com/lakeofsoft/vcp) angesehen habe und mit dem ich rumprobiert habe Header aus mehreren Records zusammen bauen...
Der Code sieht insgesamt so aus als wäre er Ergebnis eines C zu Pascal Transpilers.

Wer von euch kannte "Record End" schon vorher oder hat es fürher mal benutzt? Oder nutzt es heute noch?
gibt es eine bessere oder eben schönere Lösung?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 4. Dez 2024 um 12:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 12:50
Wer von euch kannte "Record End" schon vorher oder hat es fürher mal benutzt? Oder nutzt es heute noch?
Das kenne ich schon ziemlich lange z.B. aus VirtualTreeView und es ist auch heute noch so drin:
Delphi-Quellcode:
  TVirtualNode = packed record
...
  private
    Data: record end; // this is a placeholder, each node gets extra data determined by NodeDataSize
  public
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.456 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 13:19
Nun ja... Diese Syntax ist in Standard Pascal schon immer möglich gewesen. Es ist halt ein record und der Inhalt ist leer.
https://www.cs.kent.edu/~durand/CS43...ml#record-type
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 13:23
Jupp, das ist ein NULL Byte große Typ.

In C++ wird stattdessen gern ein VOID oder ein array[0] verwendet, was aber im Delphi nicht geht, da dort das Kleinste ein array[0..0] ist, welches 1 statt 0 Items enthält.

Beachte: VOID, nicht VOID*, weil das wäre ein "Pointer".
$2B or not $2B

Geändert von himitsu ( 4. Dez 2024 um 13:27 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#5

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 13:42
Das kenne ich schon ziemlich lange z.B. aus VirtualTreeView und es ist auch heute noch so drin:
Delphi-Quellcode:
  TVirtualNode = packed record
...
  private
    Data: record end; // this is a placeholder, each node gets extra data determined by NodeDataSize
  public
OMG Das ist ein ziemlich cleverer Nutzen, wenn man Komponentenanbieter ist.

Ich nehme an das ganze funtkioniert nicht mit Managed Records oder?


Nun ja... Diese Syntax ist in Standard Pascal schon immer möglich gewesen. Es ist halt ein record und der Inhalt ist leer.
https://www.cs.kent.edu/~durand/CS43...ml#record-type
Ich wusste davon halt lange nichts.
Ich meine mir war klar das es irgendwie alt ist, aber habe das vorher nie gesehen .
Und ich habe in der Schule noch Pascal im Informatik Untericht gelernt!!! Also ich bin alt.


Jupp, das ist ein NULL Byte große Typ.
In C++ wird stattdessen gern ein VOID oder ein array[0] verwendet, was aber im Delphi nicht geht, da dort das Kleinste ein array[0..0] ist, welches 1 statt 0 Items enthält.
Beachte: VOID, nicht VOID*, weil das wäre ein "Pointer".
Interessant. aber sowas als parameter gibt es nicht oder ? So eine are "gib irgend einen Record rein" parameter?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#6

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 13:49
Und ich habe in der Schule noch Pascal im Informatik Untericht gelernt!!! Also ich bin alt.
Zu meiner Schulzeit gab es noch nicht mal ein Fach Informatik...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 13:53
Zitat:
Ich nehme an das ganze funtkioniert nicht mit Managed Records oder?
warum nicht?

Also dieser "leer record" selbst hat nichts mit Managed zu tun, bzw. auch einen Managed Record kannst du ohne "Fields" deklarieren.

Und was den VST betrifft, wenn/da er auch normale Managed Types (String, DynArray, Variant oder Interface) beherschen sollte, wäre da prinzipiell auch ein Managed Record mit abgedeckt.


Delphi-Quellcode:
prodedure Test(var Irgendwas);

prodedure Test(const Irgendwas);
Aber drin mußt du dann selbst casten, da es innen nur die Referenz gibt, aber leider keine TypeInfo.

Da muß man dann schon auf Generics übergehn, so ala prodedure Test<T>(Irgendwas: T); .
$2B or not $2B

Geändert von himitsu ( 4. Dez 2024 um 13:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 13:57
Delphi-Quellcode:
var
  Data1: record end;

  Data2: record
    i: Integer;
  end;
Delphi-Quellcode:
type
  TRecordA = record
    i: Integer;
  end;

  TRecordB = record
    x: Integer;
    y: TRecordA;
  end;


  TRecordC = record
    x: Integer;
    y: record;
      i: Integer;
    end;
  end;
Das ist ein Nested-Type, also ein Typ, der inline (nicht explizit) deklariert wird,
aber teilweise fehlen ihm einige TypeInfos, womit generische Zugriffe darauf schwer bis garnicht möglich sind.
$2B or not $2B

Geändert von himitsu ( 4. Dez 2024 um 14:00 Uhr)
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#9

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 14:45
Ich nehme an "Record end;" funktioniert nur in Records?
Weil in FMX haben wir ja sehr nützliche
Delphi-Quellcode:
TagObject:TObject;
TagString:String;
Tag:NativeInt;
Aber sowas wie
TagRecord:Record end; Ginge vermutlich nicht?
So ein Typ für irgendeinen gemanagden Record.

Edit:
!!!heilige Scheiße!!!
Ich habe jetzt erst verstanden dass "record end;" kein einfacher Typ ist sondern ein leerer inline deklarierter Record...
Sorry , dass ich mich so dumm angestellt habe...danke das ihr am Ball geblieben seid und mir das weiter erklärt habt.
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 4. Dez 2024 um 14:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 15:24
Jupp, im Prinzip ist das
Delphi-Quellcode:
var
  TagRecord: record end;
sowas
Delphi-Quellcode:
type
  VOID = record end;
var
  TagRecord: VOID;
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:19 Uhr.
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