AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Variant - Rückgabewert überprüfen aber wie?
Thema durchsuchen
Ansicht
Themen-Optionen

Variant - Rückgabewert überprüfen aber wie?

Ein Thema von Piro · begonnen am 17. Dez 2008 · letzter Beitrag vom 17. Dez 2008
Antwort Antwort
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Variant - Rückgabewert überprüfen aber wie?

  Alt 17. Dez 2008, 11:08
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:
...
var
 varTemp : Variant;
 strTemp : String;
begin
...
 varTemp := vOut.DefaultIPGateway;
 if varTemp <> NULL then
   strTemp := VarToStr(vOut.DefaultIPGateway[0])
 else
   strTemp := '';
...
Folgende Rückgabewerte für varTemp erhalte ich.
  • Null
  • Variant Array of Variant

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
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Variant - Rückgabewert überprüfen aber wie?

  Alt 17. Dez 2008, 11:27
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;
  Mit Zitat antworten Zitat
Benutzerbild von fragile
fragile

Registriert seit: 4. Nov 2008
Ort: Amberg
87 Beiträge
 
Delphi 2009 Enterprise
 
#3

Re: Variant - Rückgabewert überprüfen aber wie?

  Alt 17. Dez 2008, 11:34
Vielleicht wäre es auch mit dem "is" Operator gegangen ?
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Variant - Rückgabewert überprüfen aber wie?

  Alt 17. Dez 2008, 11:38
Zitat von daywalker299:
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;
1 -> (System.)varNull
Delphi-Quellcode:
if VarIsNull(vOut.DefaultIPGateway) then
  ANetwork[Counter].gw := ''
else
  ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0]);
Erscheint mir lesbarer/verständlicher.

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).
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Variant - Rückgabewert überprüfen aber wie?

  Alt 17. Dez 2008, 16:15
Danke für den Tipp. Deine Methode ist übersichtlicher.

Gruß, Sven
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:29 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