Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi ActiveX und OLEVariant Pointer / Array Übergabe (https://www.delphipraxis.net/61792-activex-und-olevariant-pointer-array-uebergabe.html)

CaptainMemo 26. Jan 2006 13:36


ActiveX und OLEVariant Pointer / Array Übergabe
 
Hallo Entwickler,

ich hänge seit geraumer Zeit an einem Problem mit einem ActiveX-Control das mir ein OLEVarinat zurückgibt, aber dahinter stehen 4096 Bytes.

In der .tlb sieht das ganze so aus:

function GetData(var RtnData: OleVariant; var RtnLen: OleVariant): Integer; dispid 26;


in C++ funktioniert das Lesen so:

void COcxDlg::OnBtnGetConfiguration()
{
// TODO: Add your control notification handler code here
VARIANT varData,vatLen;
char szBuf[5000];
int nLen;
memset(szBuf,0,5000);
m_RichEdit.vSetRamContext((unsigned char *)szBuf,4096);
long nRtn = m_Ocx.GetData(&varData,&vatLen);
if(nRtn == FALSE)
{
AfxMessageBox("Read Data Error");
return;
}
nLen = vatLen.lVal;
memcpy(szBuf,varData.pcVal,nLen);
m_RichEdit.vSetRamContext((unsigned char *)szBuf,4096);
}


ich habe es wie folgt versucht:
var
ReadData,BytesRead:Olevariant;
...
isDataRead:=myOcx.GetData(ReadData,BytesRead);
...

Der Wert in BytesRead stimmt, aber in ReadData steht immer nur 0, wenn ich mit einem POLEVariant Pointer arbeite und die Bytesread einlese, dann steht da nur Grütze.

Kann mir jemand auf die Sprünge helfen?

Vielen Dank....

retnyg 1. Feb 2006 00:33

Re: ActiveX und OLEVariant Pointer / Array Übergabe
 
probiers mal mit einem array of char und/oder nem pointer dadrauf
//edit: ups, bezieht sich auf eine andere codezeile


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 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 by Thomas Breitkreuz