![]() |
Variant - Rückgabewert überprüfen aber wie?
Ich habe folgenden Code, der mir eine Wert des Types Variant zurückgibt. Ich möchte überprüfen, ob er leer ist oder etwas drin steht.
Delphi-Quellcode:
Folgende Rückgabewerte für varTemp erhalte ich.
...
var varTemp : Variant; strTemp : String; begin ... varTemp := vOut.DefaultIPGateway; if varTemp <> NULL then strTemp := VarToStr(vOut.DefaultIPGateway[0]) else strTemp := ''; ...
Wenn der Rückgabewert Null ist, funktioniert meine Abfrage. Wenn der Rückgabewert aber Variant Array of Variant ist, kommt die Fehlermeldung "Ungültige Variantenoperation". Wie könnte bzw. muss man die Abfrage verändern damit es klappt? Vielen Dank im Voraus. Sven |
Re: Variant - Rückgabewert überprüfen aber wie?
So, ich habe jetzt eine Lösung:
Delphi-Quellcode:
{ 1 = Null }
{ 8 = Einfacher Wert } { 8204 = Mehrere Werte (Array)} varTemp := vartype(vOut.DefaultIPGateway); Case varTemp of 1 : ANetwork[Counter].gw := ''; else ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0]); end; |
Re: Variant - Rückgabewert überprüfen aber wie?
Vielleicht wäre es auch mit dem "is" Operator gegangen ?
|
Re: Variant - Rückgabewert überprüfen aber wie?
Zitat:
Delphi-Quellcode:
Erscheint mir lesbarer/verständlicher.
if VarIsNull(vOut.DefaultIPGateway) then
ANetwork[Counter].gw := '' else ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0]); edit: bevor man auf das erste Element des Variants als Array zu greift, sollte man "vielleicht" prüfen, ob es a) ein Array ist und b) es ein Element 0 gibt (VarArrayDimCount, VarArrayHighBound). |
Re: Variant - Rückgabewert überprüfen aber wie?
Danke für den Tipp. Deine Methode ist übersichtlicher.
Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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 by Thomas Breitkreuz