AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Klassen und Records streamen ?

Ein Thema von paule32.jk · begonnen am 6. Okt 2024 · letzter Beitrag vom 19. Okt 2024
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#1

Klassen und Records streamen ?

  Alt 6. Okt 2024, 13:47
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.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
472 Beiträge
 
#2

AW: Klassen und Records streamen ?

  Alt 6. Okt 2024, 20:03
wie kann man Klassen und Records streamen?
Mit mORMot für Arrays: DynArraySave/DynArrayLoad und DynArraySaveJson/DynArrayLoadJson, für Objekte: ObjectToJson/ObjectToJsonFile/ObjectLoadJson oder für Records: RecordSave/RecordLoad und RecordSaveJson/RecordLoadJson.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#3

AW: Klassen und Records streamen ?

  Alt 7. Okt 2024, 08:11
Außerdem kannst du die Delphi interne TJSON Komponente verwenden. https://blogs.embarcadero.com/how-to...-line-of-code/
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. https://github.com/paolo-rossi/delphi-neon
Außerdem genau so wie TJSON mit FMX und VCL kompatibel.

vG
PJM
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Klassen und Records streamen ?

  Alt 7. Okt 2024, 09:22
Habe mit Neon bislang noch nicht viel gemacht, aber das ging erstaunlich komfortabel und reibungslos. Ist wirklich einen Blick wert.
  Mit Zitat antworten Zitat
fisipjm

Registriert seit: 28. Okt 2013
299 Beiträge
 
#5

AW: Klassen und Records streamen ?

  Alt 7. Okt 2024, 09:49
Habe mit Neon bislang noch nicht viel gemacht, aber das ging erstaunlich komfortabel und reibungslos. Ist wirklich einen Blick wert.
Vor allem ist der Aufwand des Umstiegs bei bestehenden Projekten die mit TJSON realisiert wurden denkbar klein und der Performance-Gewinn vor allem bei großen und komplexen JSON Verschachtelungen enorm.
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Klassen und Records streamen ?

  Alt 7. Okt 2024, 18:27
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.
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Klassen und Records streamen ?

  Alt 7. Okt 2024, 18:46
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:
function Speichern(C: TObject): string;
function Lesen(Text: string): TObject;
Da ist es dann auch egal, was man intern jetzt oder zukünftig in Delphi und/oder Lazarus nutzen wird.

Oder besser noch in eine Basisklasse oder ein Interface die Speicherfunktion und das dann für alle Datenklasse(n) nutzen.
$2B or not $2B

Geändert von himitsu ( 7. Okt 2024 um 19:01 Uhr)
  Mit Zitat antworten Zitat
enkosia11

Registriert seit: 17. Okt 2024
1 Beiträge
 
#8

AW: Klassen und Records streamen ?

  Alt 17. Okt 2024, 10:36
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.144 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Klassen und Records streamen ?

  Alt 18. Okt 2024, 12:03
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
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.623 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Klassen und Records streamen ?

  Alt 18. Okt 2024, 12:43
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
Doch, sind sie: Wenn man RTTI verwenden will, darf man nicht sowas haben:

Delphi-Quellcode:
type
  MyRecord = record
    Name: string[5];
  end;
Dann bekommt man per RTTI für das Feld Name keine Angaben zum Typ.

Was aber geht ist:
Delphi-Quellcode:
type
  NameString = string[5];
type
  MyRecord = record
    Name: NameString;
  end;
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:25 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