AGB  ·  Datenschutz  ·  Impressum  







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

Objekt kopieren... gibt es was Neues ?

Ein Thema von haentschman · begonnen am 21. Feb 2012 · letzter Beitrag vom 21. Feb 2012
Antwort Antwort
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#1

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 08:13
Danke für die schnelle Antwort...

Das mit der RTTI habe ich auch gelesen. Nur reichen mir die Public Properties nicht. Ich bräuchte eine vollständige Kopie.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#2

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 08:16
Du könntest eventuell die dbExpress-Routinen benutzen, die auch DataSnap zum Marshalling/Unmarshalling verwendet. Ich fürchte aber, dass dir in der Professional die entsprechenden Units fehlen, da DataSnap erst in der Enterprise dabei ist.

Du kannst ja mal schauen, ob du die Units DBXJSON und DBXJSONReflect hast, dann sehen wir ggf. weiter.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#3

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 08:27
...die wären schon mal da.
Angehängte Grafiken
Dateityp: png JSON.png (26,0 KB, 60x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#4

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 08:40
Dann findest du im SVN hier eine passende Demo, das Repository kannst du einfach mit Delphi öffnen:
https://radstudiodemos.svn.sourcefor...rshalUnmarshal (Root wäre https://radstudiodemos.svn.sourcefor...s/RadStudio_XE)
(Außerdem hast du die Demo dann vermutlich auch schon lokal in den Samples.)

Für dich interessant sind die Knöpfe zum Marshalling und Unmarshalling.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 09:12
Selbst "private" Dinge lassen sich mit der neuen RTTI standardmäßig auslesen (ja, es gibt einen Grund, warum die EXEn so groß geworden sind )
[edit] Da war zwar wer schneller, aber egal. [/edit]

Aber beim Kopieren muß man aufpassen, denn vorallen wenn Pointer und Handle im Spiel sind (noch schlimmer, wenn gecastete Pointer und Handle z.B. als Integer vorkommen) oder irgendwelche Indize auf eindeutige externe Strukturen (z.B. die ID einer Hardware- oder Datenbankverbindung), dann kann man ohne Kenntnisse des Aufbaus und der Funktion dieses Objektes eigentlich nichts kopieren, ohne irgendwas kaputtzumachen.

Aus diesem Grund sollte man vorallem vor den Interna (private/protected) eher Abstand nehmen.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#6

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 09:45
Sooo...
Hab die Demo mal am laufen. Wenn ich das richtig verstehe zerpfückt Marshall das Object in JSON "Text" incl. Daten. Das Unmarshall setzt aus diesem "Text" ein Object zusammen und gibt es zurück.

Leider bekomme ich beim Unmarshall mit TPerson1 eine Zugriffsverletztung. Die Listen gehen.

Die Richtung stimmt schon mal oder ?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#7

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 10:04
Ja, das stimmt so. Bei XE gibt es aber noch einen Fehler, der dazu führt, dass Dezimalzahlen nicht korrekt übertragen werden. Leider wird nämlich der lokale Dezimalseparator benutzt und der stimmt nun einmal in Deutschland mit dem Feldtrennzeichen von JSON überein. Ich glaube daher rührt der Fehler.

Deshalb musst du bei XE vor dem Marshalling/Unmarshalling den Dezimalseparator auf einen Punkt setzen und danach wieder zurück. Bei XE2 ist das behoben.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Objekt kopieren... gibt es was Neues ?

  Alt 21. Feb 2012, 10:09
Wenn man aber lokal kopiert, dann sollte das doch egal sein? (wenn beim Unmarshallen der selbe "lokale" Separator verwendet wird, wie beim Marshallen)

Schau dir mal den JSON-String an, also ob dort auch alles drin ist, was rein müßte.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 03:00 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