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 2 von 2     12   
Benutzerbild von Uwe Raabe
Uwe Raabe

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

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 15:47
ein leerer inline deklarierter Record...
Eigentlich ist das nur ein Trick um einen Feldnamen für die Daten zu bekommen, die an der Stelle noch unbekannt sind.
Delphi-Quellcode:
function TVirtualNode.GetData(): Pointer;

// Returns the associated data converted to the class given in the generic part of the function.

begin
  Result := @Self.Data;
  Include(States, vsOnFreeNodeCallRequired);
end;
Oder wer's lieber generisch mag (bin gar nicht sicher, ob das wirklich nur für Klassen gilt ):
Delphi-Quellcode:
function TVirtualNode.GetData<T>: T;

// Returns the associated data converted to the class given in the generic part of the function.

begin
  Result := T(Pointer((PByte(@(Self.Data))))^);
  Include(States, vsOnFreeNodeCallRequired);
end;
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
 
#12

AW: "Datentyp" record end wer kennt ihn?

  Alt 4. Dez 2024, 17:09
Es gibt in einigen API/Records oftmals Daten hinter dem Record, z.B. im Record nur NameLen und dann "eigentlich" hinter dem Record stehen die Chars des Namen.

Um im Speicher einen Zeiger auf den Namen zu haben, verwenden Viele gern sowas, aber auch char[0] name , was sich so aber nicht nach Delphi konvertieren lässt, da char[0] "keine Chars" bedeutet, aber ein name: array[0..0] of AnsiChar halt "1 Char" ergibt, womit der Record in Delphi eine falsche Größe besitzt.
$2B or not $2B
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: "Datentyp" record end wer kennt ihn?

  Alt 11. Dez 2024, 14:55
Ich nutze das manchmal als leeren Typen für Typparameter generischer Typen, wenn der Typparameter egal ist. Angenommen du hast so einen Typen:
Delphi-Quellcode:
TMyGen<T> = class
  const Value = 5.56;
end;
Und du deklarierst einen leeren Typen TNil irgendwo:
Delphi-Quellcode:
TNil = record
end;
Und du willst jetzt nicht unbedingt irgendeinen spezifischen Typparameter für TMyGen<T> festlegen, dann kannst du mit einem "leeren" typen so auf Value zugleifen:
TMyGen<TNil>.Value Ich finde, so einen void-typen mit der Größe 0 (SizeOf(TNil) ergibt ja 0 ) sollte es standardmäßig in SysUtils oder so geben.
Dennis
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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