Forum: Object-Pascal / Delphi-Language
by Der schöne Günther,
2. Okt 2014
Danke, da bin ich schon durchgeschwommen. Ich würde im Aufruf noch eins höher auf TTypeMarshaller<TSerial>.MarshalData(Data: TObject); gehen. Die ist nicht nur (trotz der Größe) gut lesbar, sondern hat auch Dokumentation (die es nicht ins Docwiki geschafft hat):
Auch: Kommentar aus DbxJsonReflect.pas:
Produktiv habe ich heute bislang fast nichts geschafft, aber immerhin einiges...
Forum: Object-Pascal / Delphi-Language
by Der schöne Günther,
2. Okt 2014
Du hast, wie immer, Recht. Das würde ich auch gar nicht erwarten, das ist eigentlich Aufgabe des Entwicklers.
Ich bin nur verwirrt, dass diese paar Zeilen Extra-Arbeit für etwas allgemeingültiges nötig waren. Nicht, dass es hier doch einen Standard-Weg gibt, und ich kenne ihn nur nicht?
Und ob ich mich nur einbilde, es funktioniere.
Forum: Object-Pascal / Delphi-Language
by Der schöne Günther,
2. Okt 2014
Sagen wir mal so: Wenn ich nur mit Gewalt das "as TObject" reindrücke scheint alles zu funktionieren. Zumindest glaube ich das. Denn das grundlegende Verständnis fehlt mir weiterhin. Warum war das jetzt überhaupt nötig?
Interface-Interceptor über Attribut angehangen: TOuterType = class
protected var
someInt: Integer;
someIntf: IInterface;
Forum: Object-Pascal / Delphi-Language
by Der schöne Günther,
2. Okt 2014
Das stimmt. Aber er muss es doch nur auf TObject casten und schon kann er es nach Feldern absuchen wie er es sonst auch macht.
Ich kann ja ebenso sagen var
interfacedObj: IInterface;
begin
interfacedObj := TInnerType.Create();
marshalledObject := TJson.ObjectToJsonObject( interfacedObj as TObject );
WriteLn( marshalledObject.ToJSON() );
end. und bekomme {"someValue":42.99}
Forum: Object-Pascal / Delphi-Language
by Der schöne Günther,
2. Okt 2014
Da bin ich wieder. Es werden noch viele Fragen zu diesem Thema kommen da leider selbst in XE7 noch alles vollkommen undokumentiert ist.
Es tut mir leid um den vielen Code, ich habe extra das vorgestern erschienene "Delphi cookbook" geholt. Es bietet ein Beispiel zu genau meiner Frage, aber leider ebenfalls undokumentiert. Deshalb kann ich es fast nicht verstehen. :-(
Nehmen wir an, ich...