![]() |
Stream per OleVariant übertragen
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:
Was ist hier das Problem? Wie könnte ich erstmal testen, ob das Befüllen des OleVariants erfolgreich war?
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; Danke im Voraus. René |
Re: Stream per OleVariant übertragen
Ok, hat sich erledigt.
Es funktioniert so, wie angegeben. Das OleVariant wurde nur nicht ordnungsgemäß befüllt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz