![]() |
AW: "Datentyp" record end wer kennt ihn?
Zitat:
Delphi-Quellcode:
Oder wer's lieber generisch mag (bin gar nicht sicher, ob das wirklich nur für Klassen gilt :gruebel:):
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;
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; |
AW: "Datentyp" record end wer kennt ihn?
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
Delphi-Quellcode:
, was sich so aber nicht nach Delphi konvertieren lässt, da char[0] "keine Chars" bedeutet, aber ein
char[0] name
Delphi-Quellcode:
halt "1 Char" ergibt, womit der Record in Delphi eine falsche Größe besitzt.
name: array[0..0] of AnsiChar
|
AW: "Datentyp" record end wer kennt ihn?
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:
Und du deklarierst einen leeren Typen
TMyGen<T> = class
const Value = 5.56; end;
Delphi-Quellcode:
irgendwo:
TNil
Delphi-Quellcode:
Und du willst jetzt nicht unbedingt irgendeinen spezifischen Typparameter für
TNil = record
end;
Delphi-Quellcode:
festlegen, dann kannst du mit einem "leeren" typen so auf
TMyGen<T>
Delphi-Quellcode:
zugleifen:
Value
Delphi-Quellcode:
Ich finde, so einen void-typen mit der Größe 0 (
TMyGen<TNil>.Value
Delphi-Quellcode:
ergibt ja
SizeOf(TNil)
Delphi-Quellcode:
) sollte es standardmäßig in SysUtils oder so geben.
0
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:14 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