![]() |
Klassen und Records streamen ?
Hallo,
wie kann man Klassen und Records streamen ? muss ich da selbst Hand anlegen oder gibt es da bereits schon Lösungen ? Ein kleines Beispiel wäre nicht schlecht - aber dann bitte sehr einfach - bin kein Programmier-Profi. |
AW: Klassen und Records streamen ?
Zitat:
![]() ![]() ![]() Bis bald... Thomas |
AW: Klassen und Records streamen ?
Außerdem kannst du die Delphi interne TJSON Komponente verwenden.
![]() MorMot nur wegen dem Streaming einzusetzen, ist denke ich ein bisschen mit Kanonen auf Spatzen schießen, wobei das Framework wirklich stark ist und auf jeden Fall einen Blick wert ist. Wenn es auf Performance ankommt lohnt sich ein Blick in die Neon Library. Die ist auch von ihrem Aufbau sehr gut mit den TJson aufrufen kompatibel nur um Welten schneller. ![]() Außerdem genau so wie TJSON mit FMX und VCL kompatibel. vG PJM |
AW: Klassen und Records streamen ?
Habe mit Neon bislang noch nicht viel gemacht, aber das ging erstaunlich komfortabel und reibungslos. Ist wirklich einen Blick wert.
|
AW: Klassen und Records streamen ?
Zitat:
|
AW: Klassen und Records streamen ?
Danke für die Tipps.
sieht gut aus (das neon), so auf den ersten Blick. Aber ich würde gerne eine Lösung verwenden, die unter: - Delphi 12.0+ und: - FPC 3.2.2 lauffähig wäre. |
AW: Klassen und Records streamen ?
TReader und TWriter für alles ab TPersistent bzw. TComponent ... ALLE Delphis und Lazaruse seit jeher bis immer.
Das wird auch für die DFM/LFM-Ressource benutzt (binär), wobei und der Stream kann dann auch noch von/nach Text konvertiert werden ... wie bei den aktuelleren DFMs, seit Jahrzehnten. Ansonsten halt XML oder JSON von/zur Klasse kapseln.
Delphi-Quellcode:
Da ist es dann auch egal, was man intern jetzt oder zukünftig in Delphi und/oder Lazarus nutzen wird.
function Speichern(C: TObject): string;
function Lesen(Text: string): TObject; Oder besser noch in eine Basisklasse oder ein Interface die Speicherfunktion und das dann für alle Datenklasse(n) nutzen. |
AW: Klassen und Records streamen ?
Hallo,
um Klassen und Records zu streamen, gibt es bereits einige Ansätze, aber oft hängt es von der genauen Struktur deiner Daten ab. Für einfache Fälle kannst du Standard-Serialisierungsmethoden nutzen, um sie in Streams umzuwandeln. Wenn die Anforderungen komplexer sind, könnte es sinnvoll sein, eine maßgeschneiderte Lösung zu entwickeln, die perfekt auf deine Bedürfnisse abgestimmt ist. Individuelle softwarelösungen sind besonders dann hilfreich, wenn die bestehenden Optionen nicht ausreichen. Ein kleines Beispiel: Du könntest JSON oder XML für den Austausch verwenden, falls du einfache Datenstrukturen hast. Für alles Weitere müsstest du wahrscheinlich tiefer einsteigen. |
AW: Klassen und Records streamen ?
Hallo!
Wenn Du im Record keine dynamische Felder hast, kannst Du einfach den Record Binär senden. Bei Strings oder DynArrays musst Du diese Felder einzelln senden. Du kannst die RTTI dazu verwenden die Felder zu finden. Short Strings in Records sind kein Problem. Mavarik |
AW: Klassen und Records streamen ?
Zitat:
Delphi-Quellcode:
Dann bekommt man per RTTI für das Feld Name keine Angaben zum Typ.
type
MyRecord = record Name: string[5]; end; Was aber geht ist:
Delphi-Quellcode:
type
NameString = string[5]; type MyRecord = record Name: NameString; end; |
AW: Klassen und Records streamen ?
short string sind doch 255 Zeichen ?
und: String[5] - das ein Array of Char mit 5 Einträgen ? |
AW: Klassen und Records streamen ?
Zitat:
![]() Paule, Du solltest Dir wirklich mal die Mühe machen und den ![]() |
AW: Klassen und Records streamen ?
Zitat:
Die RTTI braucht man ja nur für nicht short string... Da der Rest ja in einem Rutsch geschrieben werden kann. Mavarik |
AW: Klassen und Records streamen ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:28 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