![]() |
Variant-Umwandlung in Single ergibt Integer?!
Sers mitnand!
Ich habe das interessante Problem, dass ein Variant (Inhalt: 0.75 Typ: varOleStr) aus einer XML-Datei, der in einen Single umgewandelt werden soll, in einen Integer mit dem Wert 75 umgewandelt wird. :wiejetzt: Der Code sieht (gekürzt :mrgreen: ) so aus:
Delphi-Quellcode:
Wie man sieht ändere ich sogar den DecimalSeparator auf '.' um, doch das hilft auch nichts... auch VarAsType(Attrib,varSingle) bleibt ohne Erfolg... :cry: Des sollte doch bei einem Variant möglich sein?! :gruebel:
var
Vector:TD3DXVector3 //Ein Record mit den Single-Elementen x,y und z Attrib:Variant; DS:Char; begin DS:=DecimalSeparator; DecimalSeparator:='.'; //herausgeschnittenes, erfolgreiches Auslesen von 0.75 und Setzen von Attrib if not VarIsNull(Attrib) then Vector.x:=Attrib; //selbiges für Vector.y und Vector.z //und noch ein paar Überprüfungen DecimalSeparator:=DS; end; Ich hoffe auf eine erlösende Antwort und wünsche eine gute Nacht :zwinker: Sven |
Re: Variant-Umwandlung in Single ergibt Integer?!
Guten Morgen Sven,
die Routinen zur Umwandlung von Varianten sind lokalisierte API Funktionen - sie verwenden die aktuellen locale settings des Systems, aber nicht die Einstellungen der Delphi Unit SysUtils. Bessere Chancen hast du mit Val():
Delphi-Quellcode:
Getippt und nicht getestet.
function NativeStrToFloat(s: String): Extended;
var error: Integer; begin Val(s, Result, error); if error > 0 then raise EConvertError.CreateFmt('invalid float format: %s', [s]); end; Grüße vom marabu |
Re: Variant-Umwandlung in Single ergibt Integer?!
Sers marabu!
Danke! Der Code hat wunderbar funktioniert! :thumb: Nur eine Frage: Muss man da auf den DecimalSeparator achten?! :gruebel: MfG |
Re: Variant-Umwandlung in Single ergibt Integer?!
Ja, musst man. Val() arbeitet grundsätzlich mit dem Punkt als Dezimalpunkt, weswegen ich im Beispiel die Vorsilbe Native verwendet habe. Sobald in deinem XML-Dokument lokalisierte Angaben stehen, sind andere Vorgehensweisen angebracht.
marabu |
Re: Variant-Umwandlung in Single ergibt Integer?!
D.h. ich brauch mir keine Gedanken machen, da meine XML-Datei nur '.' verwenden wird :zwinker:
(Ich ärger mich in einem Modellformat doch nicht noch mit ',' rum... wo sin mer denn da :mrgreen: Aber vielleicht werd ich den Hinweis ja mal benötigen :thumb: MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:17 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