Hallo,
ich habe ein Automatisierungsobjekt erstellt, der folgende Methode beinhaltet:
<PRE>
STDMETHODIMP TDBSvrImpl::StoreView(long lRemaster, long lPos, long lItem,
long lMeasurement, long* plWidth, long* plHeight, BSTR* pstrArticel,
long* plJob, long* plOpt, long* plDoppelOpt, long* plLockId,
long* plReservation, DATE* pLastModTime, long* plError)
{
HRESULT hr;
AnsiString strRemaster, strPos, strItem, strMeasurement;
strRemaster = IntToStr(lRemaster);
strPos = IntToStr(lPos);
strItem = IntToStr(lItem);
strMeasurement = IntToStr(lMeasurement);
try
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM ReMaDaten WHERE Pos=" + strPos);
ADOQuery1->Open();
ADOQuery1->Active = True;
plWidth = ADOQuery1->Fields->Fields[4]->Value;
hr = S_OK;
}
catch (...)
{
hr = E_FAIL;
}
return hr;
}
</PRE>
Wenn ich jetzt diese Methode beim Client Aufrufe, bekomme ich nicht den Wert zurück, den ich erwarte habe. Die Methode rufe ich beim Client folgendermaßen auf:
<PRE>
IDBSvrDisp DCOMSvr;
long Remaster = 0;
long Pos = 0;
long Item = 0;
long Measurement = 0;
long *plWidth;
long *Height;
long *Job;
long *Opt;
long *DoppelOpt;
long *LockId;
long *Reservation;
long *Error;
wchar_t **Articel;
double *LastModTime;
DCOMSvr.Bind(DCOMConnection1->GetServer());
DCOMSvr->StoreView(Remaster, Pos, Item, Measurement, plWidth, Height,
Articel, Job, Opt, DoppelOpt, LockId, Reservation,
LastModTime, Error);
Edit1->Text = IntToStr(plWidth);
</PRE>
Die Frage ist nun, was habe ich falsch gemacht? Wer kann mir bitte helfen und wenn es möglich ist, schnell!
Danke Jörg
ich habe ein Automatisierungsobjekt erstellt, der folgende Methode beinhaltet:
<PRE>
STDMETHODIMP TDBSvrImpl::StoreView(long lRemaster, long lPos, long lItem,
long lMeasurement, long* plWidth, long* plHeight, BSTR* pstrArticel,
long* plJob, long* plOpt, long* plDoppelOpt, long* plLockId,
long* plReservation, DATE* pLastModTime, long* plError)
{
HRESULT hr;
AnsiString strRemaster, strPos, strItem, strMeasurement;
strRemaster = IntToStr(lRemaster);
strPos = IntToStr(lPos);
strItem = IntToStr(lItem);
strMeasurement = IntToStr(lMeasurement);
try
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("SELECT * FROM ReMaDaten WHERE Pos=" + strPos);
ADOQuery1->Open();
ADOQuery1->Active = True;
plWidth = ADOQuery1->Fields->Fields[4]->Value;
hr = S_OK;
}
catch (...)
{
hr = E_FAIL;
}
return hr;
}
</PRE>
Wenn ich jetzt diese Methode beim Client Aufrufe, bekomme ich nicht den Wert zurück, den ich erwarte habe. Die Methode rufe ich beim Client folgendermaßen auf:
<PRE>
IDBSvrDisp DCOMSvr;
long Remaster = 0;
long Pos = 0;
long Item = 0;
long Measurement = 0;
long *plWidth;
long *Height;
long *Job;
long *Opt;
long *DoppelOpt;
long *LockId;
long *Reservation;
long *Error;
wchar_t **Articel;
double *LastModTime;
DCOMSvr.Bind(DCOMConnection1->GetServer());
DCOMSvr->StoreView(Remaster, Pos, Item, Measurement, plWidth, Height,
Articel, Job, Opt, DoppelOpt, LockId, Reservation,
LastModTime, Error);
Edit1->Text = IntToStr(plWidth);
</PRE>
Die Frage ist nun, was habe ich falsch gemacht? Wer kann mir bitte helfen und wenn es möglich ist, schnell!
Danke Jörg
Comment