Seite 1 von 1

Ursache für Fehlermeldung?

Verfasst: Fr, 04. Jan 2019 16:24
von Jan
Hallo,

aus irgend einem Grund bekomme ich von einigen wenigen Kunden diese Fehlermeldung:
Xbase++ Version : Xbase++ (R) Version 2.00.1037
Betriebssystem : Windows 10 1809 Build 17763
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: O CLASS: XbpStatic
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Falscher Objekt Status
oError:filename :
oError:genCode : 104
oError:operation : :Create
oError:osCode : 0
oError:severity : 2
oError:subCode : 4208
oError:subSystem : BASE
oError:thread : 1
oError:tries : 0
Der Code sieht so aus:

Code: Alles auswählen

FUNCTION erzeugeRahmen(oParent, aStart, aGroesse, cCaption, nLayoutAlign)

LOCAL oRahmen := NIL

oRahmen := XbpStatic():New(oParent, , aStart, aGroesse, {{XBP_PP_BGCLR, MEMVAR->gnBackground}})
oRahmen:type := XBPSTATIC_TYPE_GROUPBOX
oRahmen:caption := cCaption
oRahmen:clipSiblings := .T.
oRahmen:create()

IF nLayoutAlign <> NIL
   oRahmen:layoutAlign := nLayoutAlign
ENDIF

RETURN oRahmen
Es ist sichergestellt, das alle Parameter korrekt gefüllt sind. oParend ist oDlg:drawingArea. Das funktioniert ja auch fast immer. Aber bei manchen Kunden will der einfach nicht.

Hat jemand eine Idee, warum der da aussteigen könnte? Ich selber finde die Meldung eher weniger aussagekräftig, weil die nicht sagt, was genau da nicht stimmen soll. Und ich selber kann das nie nachstellen, bei mir läuft das absolut korrekt. Macht die Suche nicht unbedingt einfacher.

Jan

Re: Ursache für Fehlermeldung?

Verfasst: Fr, 04. Jan 2019 17:06
von Tom
Das ist ein Timing-Problem. Das XbPart ist noch nicht erzeugt. Das ist zwar selten, passiert aber manchmal. Ich hatte eigentlich gedacht, es wäre mit der 2.0 weg. :(

Hier ist ein Workaround:

Code: Alles auswählen

IF oRahmen:Status() == XBP_STAT_CREATE
  oRahmen ...
ENDIF

Re: Ursache für Fehlermeldung?

Verfasst: Fr, 04. Jan 2019 18:40
von Jan
Hallo Tom,

oops! Ich wußte überhaupt nicht, das es sowas gibt.

Aber:
1) Was willst Du mit "oRahmen..." andeuten? Kommt die IF-abfage direkt nach der XbpStatic():New(... ?

2) Wäre es nicht sinnvoll da eine Schleife einzubauen? Die so lange durchläuft bis "oRahmen:Status() == XBP_STAT_CREATE" irgendwann .T. ist? Ansonsten würde ja der Rest der Erstellung nicht durchlaufen werden, und ich bekäme überhaupt kein XbPart zurück. Oder versteh ich das falsch?

Jan

Re: Ursache für Fehlermeldung?

Verfasst: Fr, 04. Jan 2019 18:43
von Tom
1. Nach dem :Create().
2. Ja.

Re: Ursache für Fehlermeldung?

Verfasst: Fr, 04. Jan 2019 18:50
von Jan
Hallo Tom,

NACH dem :create()? Aber genau diese Zeile erzeugt doch den Fehler. Danach abfangen würde mir also nichts bringen.

Und was "Ja"? Schleife Ja, oder falsch verstanden Ja?

Jan

Re: Ursache für Fehlermeldung?

Verfasst: Sa, 05. Jan 2019 17:33
von Tom
Hallo, Jan.

Bist Du sicher, dass es beim Create() knallt? Ich kenne dieses Verhalten nur beim Versuch, mit einem Objekt zu dealen, von dem man meint, es müsse existieren, aber es ist noch nicht (fertig) erzeugt. Jedenfalls teilt Dir oXbp:status() == XBP_STAT_CREATE mit, dass das Objekt auch wirklich erzeugt ist. Es gibt bei XbParts drei mögliche Stati: XBP_STAT_INIT, XBP_STAT_CREATE und XBP_STAT_FAILURE. INIT sagt nach meinem Dafürhalten, dass sich das Objekt zwischen New() und Create() befindet (das wäre dann der Status, der vor dem Create() existieren müsste), CREATE sagt, dass es erzeugt wurde, und FAILURE ist die schlechtestmögliche Nachricht.

Re: Ursache für Fehlermeldung?

Verfasst: Sa, 05. Jan 2019 19:31
von Jan
Hallo Tom,

nun ja, jedenfalls ist die Zeile in der Fehlermeldung die mit :create().

Mein Problem ist halt das ich selber den Fehler niemals habe. Sondern in diesem Fall vollkommen anonyme Kunden, die ich also auch nicht interviewen oder für Tests einspannen kann.

Jan

Re: Ursache für Fehlermeldung?

Verfasst: Sa, 05. Jan 2019 22:15
von AUGE_OHR
hi,
Jan hat geschrieben: Fr, 04. Jan 2019 16:24 oParend ist oDlg:drawingArea. Das funktioniert ja auch fast immer. Aber bei manchen Kunden will der einfach nicht.
104 XPP_ERR_OBJECT_STATE The object (XBP) is in the wrong state
to perform the operation

4208 - [BASE] - ???
Associated with: "104:XBP-object has wrong state for access
Caused by: XbpStatic:ChildList()
ich würde sagen das oParent = NIL ist und deshalb kein XbpStatic als Child angelegt werden kann.
nun ist es schwer das Problem zu reproduzieren ... kann eigentlich gar nicht sein ... aber es passiert trotzdem.

ich bin dann irgendwann auf diesen Workaround gestossen

Code: Alles auswählen

   IF EMPTY(oParent)
      oParent := GetApplication():mainForm:DrawingArea
   ENDIF

Re: Ursache für Fehlermeldung?

Verfasst: So, 06. Jan 2019 9:06
von Tom
Es kann auch sein, dass sich das mit dem falschen Status auf den Parent bezieht.