Ursache für Fehlermeldung?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13423
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Ursache für Fehlermeldung?

Beitrag von Jan » Fr, 04. Jan 2019 16:24

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7652
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Tom » Fr, 04. Jan 2019 17:06

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
Herzlich,
Tom

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13423
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Jan » Fr, 04. Jan 2019 18:40

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7652
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Tom » Fr, 04. Jan 2019 18:43

1. Nach dem :Create().
2. Ja.
Herzlich,
Tom

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13423
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Jan » Fr, 04. Jan 2019 18:50

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7652
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Tom » Sa, 05. Jan 2019 17:33

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.
Herzlich,
Tom

Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 13423
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Jan » Sa, 05. Jan 2019 19:31

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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 11946
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: Ursache für Fehlermeldung?

Beitrag von AUGE_OHR » Sa, 05. Jan 2019 22:15

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
gruss by OHR
Jimmy

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7652
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Tom » So, 06. Jan 2019 9:06

Es kann auch sein, dass sich das mit dem falschen Status auf den Parent bezieht.
Herzlich,
Tom

Antworten