AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Kann man einen Record in einem String speichern?
Thema durchsuchen
Ansicht
Themen-Optionen

Kann man einen Record in einem String speichern?

Ein Thema von QuickAndDirty · begonnen am 2. Nov 2021 · letzter Beitrag vom 7. Nov 2021
 
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.996 Beiträge
 
Delphi 12 Athens
 
#5

AW: Kann man einen Record in einem String speichern?

  Alt 4. Nov 2021, 07:28
Der Benutzername ist Programm ��
Ja ich versuche coolen code vom Stigma zu befreien er sei schlechter als coole Datenstructuren.
Ich würde mir mal das Speicherlayout von Records und Strings anschauen, ob dort die Referenzzähler an der gleichen Stelle sitzen.
Meinst Emba hat verschiedene ARC systeme ? Eins für Records , ein anderes für LongStrings und ein drittes für Dyn-Arrays?

Vielleicht so ?
http://francois-piette.blogspot.com/...rd-tofrom.html

Ich würde mir aber die JsonSerializer und verschiedenen Libraries dazu mal ansehen,
statt String direkt in einen modernen JsonString.
https://grijjy.github.io/GrijjyFound...alization.html
Sorry es geht mir nicht ums serialisieren. Ich möchte einfach nur an ein FMX Objekt (TListBoxItem ) einen Record anhängen. So wie man auch Integers, floats, Objects und Strings an ein TListBoxItem anhängen kann. Nach Möglichkeit so, dass der Refcount mitspielt.

Ich packe immer alles in ein Objekt rein, was nicht bei drei auf den Bäumen ist. *hehe*
Ich bin für viele Dinge zu Daten-Records in TArrays<Datenrecord> übergegangen. Vor allem weil man sowas auch mal als Rückgabe Wert haben kann ohne Bauchschmerzen zu bekommen was das Zerstören der Objekte angeht.

Es sind ja beides Managed types die sich selbst freigeben und mit Copy on Write arbeiten.
Wie bitte? Nur strings haben CoW.
Wenn ich einen Record als Parameter einer Funktion übergebe und ihn in der Funktion nur lesend verwende, dann wird der doch wie ein VAR, IN oder CONST Parameter vom Compiler behandelt oder nicht?
Auf jedenfall ist für meinen Verwendungszewck vor allem ARC das wichtige Attribut. CoW wäre aber schon nice to have.


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.

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
Es geht ja um records also haben Records genug mit String oder TObject gemein das ich sie als TagString oder TagObject speichern kann und die Refcount Mechanik erhalten bleibt?
Andreas
Monads? Wtf are Monads?

Geändert von QuickAndDirty ( 4. Nov 2021 um 07:49 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:30 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