Announcement

Collapse
No announcement yet.

Arbeiten mit Remotetable

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Arbeiten mit Remotetable

    Hallo,

    ich bin dabei meinen ersten Webservice zu schreiben. Dementsprechend klein ist auch mein derzeitiges Wissen was das angeht.
    Eine Funktion in dem Webservice soll eine eigene Datenstruktur zurückgeben.
    Dazu habe ich eine Klasse vom Typ TRemotetable abgeleitet und darin meine Struktur aufbereitet.
    Als nächstes habe ich einen weiteren Typ als array von dieser Struktur erstellt.
    Allerdings weiss ich nicht wie ich diese beiden neuen Typen registrieren muss damit der Webservice diese Typen kennt.

    Code:
    TMeintyp = class(TRemotetable)
    private
      M_meinString : String;
    published
      property MeinString : String read M_meinString write M_meinString;
    end;
    
    TDynArrayOfMeinTyp = array of TMeintyp;
    So in der Art sieht mein Ansatz aus. Was muss ich tun, um mit solch einer Struktur im Webservice arbeiten zu können?

  • #2
    registrieren von klassen

    Es gibt eine ähnliche Problemstellung in der VCL:


    TSoapRow = class(TRemotable)
    private
    FRowID: Integer;
    FFieldValueArray: TFieldValueArray;
    FUpdateType: TUpdateType;
    published
    property RowID: Integer read FRowID write FRowID;
    property FieldValueArray: TFieldValueArray read FFieldValueArray
    write FFieldValueArray;
    property UpdateType: TUpdateType read FUpdateType
    write FUpdateType;
    end;

    TRowArray = array of TSoapRow;

    Eigentlich zerlegt man die Struktur in ihre Elemente. Das Registrieren kann wie folgt aussehen:

    RemClassRegistry.RegisterXSInfo(TypeInfo(TRowArray ),'urn:ServerDBObjects','TRowArray','');
    RemClassRegistry.RegisterXSInfo(TypeInfo(TUpdateTy pe),'urn:ServerDBObjects','TUpdateType','');
    RemClassRegistry.RegisterXSInfo(TypeInfo(TColDescA rray),'urn:ServerDBObjects','TColDescArray','');

    Der urn (uri) bezeichnet den Namensraum der neuen Klasse, kann auch als leerstring vom der RTTI erzeugt werden.

    "As you see, we must map these complex types to a class like TSoapRow that includes runtime type information (RTTI, in published), which the invoker can use to convert between data in the SOAP stream and type values."

    Hoffe mal einen Anhaltspunkt geliefert zu haben

    Comment


    • #3
      Ja hast du! War in der Zwischenzeit auf die Lösung zwar bereits gestossen. Aber wäre mir das nicht passiert haette mich deine Antwort auch zum Ziel gebracht.
      Danke dir.

      Comment


      • #4
        Hi *,

        bin neu hier und habe ein ähnliches Problem.

        Code:
        type BRecord = class(TRemotable)
          private
            FPersonalId :      integer;
            FVorname :         string;
            FNachname :        string;
          published
            property Vorname : string read FVorname write FVorname;
            property PersonalId : integer read FPersonalId write FPersonalId;
            property Nachname : string read FNachname write FNachname;
        end;
        Ich möchte diese Struktur übertragen mein Problem ist es, dass beim übertragen nur der Integerwert ankommt aber nicht die Strings.
        Ich weiß langsam nicht mehr weiter.
        Ich wäre dankbar für Hilfe.

        Edit :

        Hab eine Lösung gefunden.
        Ich hab mir noch eine zweite Klasse definiert und jetzt geht es.

        Code:
        type TMyString = class (TRemotable)
          private
            Fstring : string;
          published
             property FS : string read Fstring write Fstring;
        end;
        
        type BRecord = class(TRemotable)
          private
            FPersonalId :      integer;
            FVorname :         TMyString;
            FNachname :       TMyString;
          published
            property Vorname : string read FVorname write FVorname;
            property PersonalId : integer read FPersonalId write FPersonalId;
            property Nachname : string read FNachname write FNachname;
        end;
        Zuletzt editiert von Doerne; 10.12.2008, 16:21.

        Comment

        Working...
        X