![]() |
Kann man einen Record in einem String speichern?
Es geht um eine FMX App.
Kann man einen Record in einem String speichern und wenn ja wie? Es sind ja beides Managed types die sich selbst freigeben und mit Copy on Write arbeiten. Es geht mir darum einen Record in eine der TAG Variablen Von TListboxItem von FMX speichern. Tag ist vom Typ NativeInt TagString ist vom Typ String TagObject ist vom Typ TObject TagFloat ist vom Typ Float Kann ich sowas wie
Delphi-Quellcode:
oder so machen?
TagString[-2] := @MyRecord;
|
AW: Kann man einen Record in einem String speichern?
Der Benutzername ist Programm 😁
Ich würde mir mal das Speicherlayout von Records und Strings anschauen, ob dort die Referenzzähler an der gleichen Stelle sitzen. |
AW: Kann man einen Record in einem String speichern?
Vielleicht so ?
![]() Ich würde mir aber die JsonSerializer und verschiedenen Libraries dazu mal ansehen, statt String direkt in einen modernen JsonString. ![]() |
AW: Kann man einen Record in einem String speichern?
Ich packe immer alles in ein Objekt rein, was nicht bei drei auf den Bäumen ist. *hehe*
|
AW: Kann man einen Record in einem String speichern?
Zitat:
|
AW: Kann man einen Record in einem String speichern?
Ja, nur LongStrings.
dynamische Arrays nicht. Intern ist ein LongString (AnsiString/UnicodeString) zwar auch nur fast ein "dynamisches" Array, aber leider kann man Copy-On-Write nicht für andere Array-Typen aktivieren. :cry:
Delphi-Quellcode:
A := B; // nur Referenzzähler erhöhen
A[0] := 123; // nur bei String wird vorher automatisch ein Unique ausgeführt ... bei anderen Arrays änders du den Wert in Beiden // außer A := Copy(B); // wirklich kopieren A[0] := 123; // ändert nur A |
AW: Kann man einen Record in einem String speichern?
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Auf jedenfall ist für meinen Verwendungszewck vor allem ARC das wichtige Attribut. CoW wäre aber schon nice to have. Zitat:
|
AW: Kann man einen Record in einem String speichern?
hmmmmm .... nein .... joar
Wenn in dem Record irgendwas Zeigerartiges oder was mit Speicherautomatik drin steht, dann kann darf das schonmal nicht biniär in einen anderen Speicher kopiert werden, unter Missachtung der Speichermechianissmen. Außerdem muß man bei Binär aufpassen, dass einem die Stringbehandlung nicht die Daten schrottet. (z.B. bei konvertierung zwischen ANSI und Unicode) Eine Konvertierung in ein Textformat (JSON, XML usw.) beseitigt all diese Fallstricke. |
AW: Kann man einen Record in einem String speichern?
Zitat:
Aber das ist doch sooo meta. Naja. Wenigstens habe ich jetzt Klarheit. |
AW: Kann man einen Record in einem String speichern?
Ich und auch zuviele Andere hatten früher auch öfters mal Binärzeugs in String (AnsiString) und nun rate mal was dann im Jahr 2009 passierte. :stupid:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:39 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