Announcement

Collapse
No announcement yet.

Variant- Array per DCOM

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

  • Variant- Array per DCOM

    Hallo zusammen,

    ich versuche ein zweidimensionales Variant- Array vom Typ variant per DCOM zu übertragen. Die Array- Struktur kommt beim Client auch an (sieht zumindest so aus), nur leider nicht die eigendlichen Daten (auch vom Typ variant).
    Muss man hier etwas besonderes beachten???
    Im Moment habe ich zur Übertragung den Typ OleVariant gewählt. Muss ich eventuell den Typ PSaveArray benutzen?

    Gruss Karsten

  • #2
    Hallo Karsten,

    habe gerade ein ähnliches Problem: für einen OPC-Server (auch DCOM) ist es notwendig, ein array mit variants zu dynamisch erzeugen, um den pointer als out-Parameter zu übergeben. Dynamischer Speicher muß für DCOM (so weit ich weiß) mit coTaskMemAlloc erzeugt werden. Mit Delphi5 hat das auch (eingeschränkt) geklappt. Man konnte den array-Elementen immerhin Werte zuweisen und auch lesen. Der Client hat sie aber nicht richtig interpretiert. Seitdem ich Delphi7 benutze, gibt es schon eine Schutzverletzung, wenn ich auf ein solches array-Element zugreife.

    Beipiel:
    <PRE>
    type
    tMyVarArray = array[0..65535] of OLEVariant;
    pMyVarArray = ^tMyVarArray;
    procedure TForm1.Button2Click(Sender: TObject);
    var
    pVar : pMyVarArray;
    begin
    pVarArray:=coTaskMemAlloc(5*sizeof(OLEVariant));
    pVarArray[0]:=15; !!! hier kracht's schon mit Delphi7
    CoTaskMemFree(pVarArray);
    end;
    </PRE>

    Die einzelnen Elemente werden im Debugger komischerweise als "Variant array of Unbekannt" angezeigt.

    Vielleicht fällt ja jemandem dazu etwas ein...

    Gruß

    Hartmu

    Comment

    Working...
    X