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 12: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 31. Jan 2006 23: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 21:55 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