Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   VarToStr gibt leeren String zurück (https://www.delphipraxis.net/207213-vartostr-gibt-leeren-string-zurueck.html)

Ralf Kaiser 4. Mär 2021 10:10

Delphi-Version: 10.3 Rio

VarToStr gibt leeren String zurück
 
Hallo zusammen,

Ich habe eine Variable vom Typ "Variant" die einen String enthält. Das habe ich mit dem Debugger geprüft.

Wenn ich diese Variable mit "VarToStr" einem String zuweise ist dieser String leer.

Die Routine "VarType" liefert für die Variable den Wert 256 (das sollte also wirklich ein String sein) Außerdem liefert "VarIsStr" true zurück. Trotzdem ist der String nach der Umwandlung leer.

Hat jemand eine Idee, woran das liegen könnte?

[EDIT]: Delphi Version ist Rio

Danke schon mal,
Ralf

himitsu 4. Mär 2021 11:13

AW: VarToStr gibt leeren String zurück
 
varString ist ein AnsiString (außer im NEXTGEN)

Du könntest deinen Variant nach TVarRec casten, dann siehst ganz genau was drin ist.

Eigentlich wird beim auslesen in einen AnsiString gecastet und es kann keine Verluste geben,
außer beim anschließenden Cast nach String/UnicodeString (Result), welcher aber auch verlustlos sein sollte.

mkinzler 4. Mär 2021 11:18

AW: VarToStr gibt leeren String zurück
 
Es gibt auch VarToWideStr()

Ralf Kaiser 4. Mär 2021 11:58

AW: VarToStr gibt leeren String zurück
 
Zitat:

Zitat von mkinzler (Beitrag 1484400)
Es gibt auch VarToWideStr()

Liefert ebenfalls einen leeren String zurück.

Ich vermute mittlerweile, dass die Ursache bei der Zuweisung des Variants liegt. Der sollte nämlich "eigentlich" VarType 258 (unicode) haben, zumindest hat ein Variant diesen Typ wenn man einen normalen String direkt zuweist (
Delphi-Quellcode:
myVar := 'TEST'
)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 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