Announcement

Collapse
No announcement yet.

Hilfe bei Methoden-Aufruf

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hilfe bei Methoden-Aufruf

    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

  • #2
    Hallo Jörg,

    wenn es nur der Wert ist, der falsch zurückgegeben wird, vermute ich den Fehler im Select. Oder es wird das falsche Feld angesprochen. Feld 4 dürfte das physikalische Feld 5 sein. Versuch's doch mal mit FieldByName.

    Ach so, mit TADOQuery->Open() setzt Du TADOQuery1->Active bereits auf true.

    Grüße Joche

    Comment


    • #3
      Die Sache ist nur die, ich habe das Gefühl, das er trotz des Aufrufs, gar nicht in die Methode hineinspringt. Daher denke ich, das ich irgendetwas falsch gemacht habe

      Comment


      • #4
        Wenn Du die (Client) Übergabeparameter mit irgendeinem nicht möglichen Rückgabewert initialisierst, kannst Du doch feststellen, ob überhaupt was reingeschrieben wird oder eben nicht.

        Oder frag doch beim Client-Aufruf den Rückgabewert mal ab.

        Ansonsten kann ich Dir bei COM überhaupt nicht helfen.

        Sorry,

        Joche

        Comment

        Working...
        X