Hallo,
ich beschäftige mich gerade mit "
COM/
DCOM mit Delphi" von Andreas Kosch. Mein Ziel ist es, DataSets per
COM zu übertragen.
Ein Weg, der bisher gut funktioniert, ist das DataSet in
XML zu konvertieren und als WideString zu übertragen. Das wird bei großen Datasets aber inperformant.
Deshalb wollte ich anhand des Beispiels "TStrings als Variant-Array" das
XML als Stream speichern um diesen Stream wiederum als OleVariant zu übertragen. Beim Senden kommt erstmal zumindest keine Fehlermeldung. Anders beim Empfangen:
Delphi-Quellcode:
procedure XMLVariant2MDS(OV:OleVariant;MDS:TJvMemoryData);
var XML : TJvSimpleXML;
Stream : TStream;
p : Pointer;
begin
XML := TJvSimpleXML.Create(
Nil);
try
Stream:=TMemoryStream.Create;
try
p:=VarArrayLock(OV);
//An dieser Stelle kommt Exception EVariantInvalidArgError
try
Stream.
Write(p^, VarArrayHighBound(OV,1)+1);
finally
VarArrayUnlock(OV);
end;
Stream.Seek(0,soFromBeginning);
XML.LoadFromStream(Stream);
finally
Stream.Free;
end;
jvSimpleXML2MDS(
XML, MDS);
finally
XML.Free
end;
end;
Was ist hier das Problem? Wie könnte ich erstmal testen, ob das Befüllen des OleVariants erfolgreich war?
Danke im Voraus.
René