Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.197 Beiträge
 
Delphi 12 Athens
 
#5

AW: Variant nach String und Zurück

  Alt 20. Apr 2023, 18:26
Erstmal, wenn es automatisch konvertiert wird und z.B. auf einem anderen Rechner zurück, dann kann es knallen.
z.B. deutsches Windows System speichjert einen Float mit , als Dezimalseparator und im Englischen knallt es im besten Fall, aber vermutlich bekommst einfach nur den falschen Wert, weil ein englisches System das als Tausendertrennzeichen interpretiert.

MyString := MyVariant; geht meisten, aber knallt wenn NULL oder Empty oder es sich nicht nach String konvertieren lässt (Arrays und CustomTypes ohne passend registriertem Converter)

MyVariant := MyString; geht natürlich immer
und später dann z.B. MyInteger := MyVariant; würde funktionieren, wenn es ein Byte/Word/Integer/... ist, bzw. wenn es sich dahin konverzieren lässt, wie z.B. eine Zahl '123' im String.


Natürlich kann man auch direkt selber Konvertieren, also prüfen, ob der String einem bestimmten Format entspricht, das selbst konvertieren und dem Variant zuweisen.

Delphi-Quellcode:
if TryStrToInt(MyString, i) then
  MyVariant := i
else
  ...




Na, natürlich kann man einem generischen Marker (Nummer oder Text) mit im String speicher, um zu wiessen, was es für ein Wert war. (z.B. siehe .reg-Dateien, wenn man dort DWORD oder binäre Werte exportiert/speichert)
Auch die binäre Version der DFM speichert vor jedem Wert, was für ein Typ gleich folgt-
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Apr 2023 um 18:28 Uhr)
  Mit Zitat antworten Zitat