![]() |
Checken ob ein Record daten enthält?
Hiho,
wie kann ich prüfen ob ein Record mit daten befüllt wurde ohne jedes element einzelnd durchzugehen und zu prüfen ob dieser leer ist? Ich dachte es gäbe ne möglichkeit wie
Delphi-Quellcode:
aber das ergibt immer True :)
function IsEmpty: Boolean;
begin Result := (SizeOf(VariableName) = SizeOf(VariableType)); end; gibts da ne möglichkeit und wenn ja, welche? MfG Sereby |
Re: Checken ob ein Record daten enthält?
Da gibt es leider keine Möglichkeit.
Hier mal ein Beispiel (was schwierig ist, da du leider nichts konkretes angegeben hast)
Delphi-Quellcode:
Dann greifst du nur auf das Record zu, wenn es auch gültige Daten enthält...
function getRecord(var Data:TMyRecord):boolean;
begin if TheRecordIsValied then begin Data:=TheRecord; Result:=true; end else Result:=false; end;
Delphi-Quellcode:
if getRecord(Data) then begin
Value:=Data.Value end; |
Re: Checken ob ein Record daten enthält?
wenn es sich immer um den Selben Typ von Record handelt, kannst du auch einfach ne Variable mit ne definitiv leeren Record anlegen und mit CompareMem() oder "=" dann prüfen ob das Record dementsprechend leer ist.
Bernhard |
Re: Checken ob ein Record daten enthält?
danke! CompareMem hat gefunzt.
Delphi-Quellcode:
Result := CompareMem(@FileVersionInfo, @EmptyRec, SizeOf(EmptyRec));
|
Re: Checken ob ein Record daten enthält?
Im Notfall kann man auch die Compilermagic und ihre automatischen Initialisierungen ausnutzen.
Einfach einen zusätzlichen "Marker"-String (AnsiString, WideString, UnicodeString ... aber keinen ShortString) oder ein Interface (String ist aber einfacher) in dem Record definieren. Sobald man Werte zugewiesen hat, wird der String auf '*' (oder irgendwas Anderes) gesetzt. Leert man den ecord, dann String auf '' setzen. Und dann kann man über String <> '' prüfen, ob es schon was drinnen ist. Bei allen anderen Prüfungen wie CompareMem und Co. muß man den Record vorher immer selber initialisieren. (aber wenn man immer selber passend initialisiert/befüllt, dann ist es so auch vollkommen OK) PS: Man kann auch einfach "nur" prüfen, ob bestimmte Daten im Record vorhanden sind und wenn nicht, dann ist nichts drin. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 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