2011-03-29 32 views
5

Delphi XE'deki DataSnap ile ilgili yeni bir article, DataSnap'in artık TOJet-torunlarını POJO'nun Java Enterprise Edition kavramına benzer şekilde sunucu ve istemci arasında aktarabildiğini açıklar ("Düz eski" Java nesneleri ").DataSnap "Düz Eski Delphi Nesneleri" ve iç içe nesneler

Bu yeni özellik, böyle bir PODO'nun, örneğin bir TStrings özelliği gibi başlatılması gereken yuvalanmış nesne tipi özelliklere sahip olması durumunda işe yarar mı? Tüm bu alt-nesneler mevcut değerleri ile serileştirilecek ve aktarılacak mı? Seri hale getirilmiş bir nesnede hiçbir anlam ifade etmeyen TFileStream, THandle veya TThread gibi sistem kaynak özellikleri hakkında bunlar 'seri hale getirilemez' olarak etiketlenebilir mi?


Bazı bilgiler bu da dahil olmak üzere, DocWiki içinde: tamsayı, dize, karakter, numaralandırma:

Bunlar orada zaten yerleşik bir dönüşüm/reversion olduğu alanlardır , kayan nokta, nesne, kayıt. Aşağıdaki türlerde alan değerleri göz ardı edilir ve kullanıcı dönüşüm bekleniyor: set, yöntem, varyant, arabirim, işaretçi, dynArray, classRef, dizi.

+0

...

+1

@Lieven o kesinlikle hiçbir şey daha fazla biliyor hangi konulara konsantre olduğunda! –

+2

Ancak StackOverflow sistemi ile ilgili bir sorunu vurgulamaktadır. Bütün Delphi soruları, David ve Andreas tarafından kaçırıldıklarında, başkalarına soruları cevaplamak için buraya gelme alışkanlığına kapılmıyorlar. Tam olarak bu nedenle her iki günde bir kez uğrarım, sadece ihtiyacım yok. Ancak, David ve Andreas'ın uzmanlığının dışında bir soruyla karşılaştık ve normal Delphi soru cevaplayıcılarının eksikliği nedeniyle büyük ölçüde cevapsız kaldık. – LachlanG

cevap

4

Kendimi denemedim ama documentation okuma o özel bir çevirici yazmak gerekebilir rağmen hemen her şeyi serialize görünür. Alt nesneleri içeren aşağıdaki kod, özel bir dönüştürücü gerektiren bir nesnenin bir örneği olarak verilir.

İhtiyacın olduğunda David
type 
    TAddress = record 
    FStreet: String; 
    FCity: String; 
    FCode: String; 
    FCountry: String; 
    FDescription: TStringList; 
    end; 

    TPerson = class 
    private 
    FName: string; 
    FHeight: integer; 
    FAddress: TAddress; 
    FSex: char; 
    FRetired: boolean; 
    FChildren: array of TPerson; 
    FNumbers: set of 1..10; 
    public 
    constructor Create; 
    destructor Destroy; override; 

    procedure AddChild(kid: TPerson); 
    end;