Delphi/Lazarus: Variant-Wert in Integer umwandeln
Frage von Gast | Letztes Update am 02.12.2022 | Erstellt am 31.12.2014
Ich habe einen Wert vom Typ Variant, benötige aber in meinem Programm den Typen Integer, um mit dem Wert rechnen zu können.
Konkret geht es um eine Funktion, die eine Integer-Zahl erwartet. Sobald ich aber meinen Variant-Wert übergebe, spielt der Compiler nicht mehr mit und es gibt einen Fehler.
Wie ist es möglich, einen Wert vom Typen "Variant" in einen Integer-Wert umzurechnen oder zu konvertieren?
Ähnliche Themen
Delphi/Lazarus: Nur Zahlen im Edit-Feld erlauben
Tipp | 0 Kommentare
Delphi/Lazarus: Variant-Variable in einen String konvertieren
Frage | 1 Antwort
Delphi: Systemweiter HotKey
Tutorial | 3 Kommentare
Delphi/Lazarus: 3 Wege um eine Zahl auf X Nachkommastellen zu runden
Tutorial | 0 Kommentare
Delphi/Lazarus: Link zu einer Website in einer Anwendung setzen
Tutorial | 0 Kommentare
Delphi/Lazarus: Byte Array als String aus HEX-Werten anzeigen
Tipp | 0 Kommentare
Delphi/Lazarus: Kommandozeilen Parameter Tutorial Teil 1: Senden
Tutorial | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.
Am einfachsten geht es, indem du einfach eine Integer-Variable deklarierst und diese auf deinen Variant-Wert setzt:
Das geht selbst dann, wenn der Variant-Wert eigentlich vom Typ String ist.
Wenn du dennoch den Typen vorher prüfen möchtest, kannst du auch die Funktion VarType benutzen:
VarType gibt den Typ der Variant-Variable zurück. Beachte aber: Es gibt auch andere Zahlen-Typen, du könntest also auch "if (VarType(v) in [varinteger, varsmallint, varshortint, varbyte, varsingle, vardouble, varword, varlongword, varint64, varqword]) then begin..." verwenden oder die Liste entsprechend erweitern oder verkürzen um keinen möglichen Zahlentyp zu übergehen.
Letztes Update am 02.12.2022 | Erstellt am 31.12.2014
Vielleicht ein bisschen umständlicher ist diese Variante, dafür sollte sie aber auch alle Fälle abdecken (zum Beispiel wenn der Variant-Type kein Integer ist).
Hier wandeln wir die Variant-Variable zunächst mit VarToStr in einen String um, schneiden von diesem String mit Trim den Whitespace (Leerzeichen, Zeilenumbrüche) ab und benutzen anschließend StrToIntDef um zu versuchen, den String in einen Integer umzuwandeln.
Der zweite Parameter von StrToIntDef (hier 0), ist ein Default Wert. Dieser wird immer dann zurückgegeben, wenn aus dem String kein Integer zu machen ist.
31.12.2014 um 20:43