Ursache für Fehlermeldung?

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Ursache für Fehlermeldung?

Beitrag 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
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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag 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
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag 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
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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Tom »

1. Nach dem :Create().
2. Ja.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag 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
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: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag 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.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14641
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 87 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag 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
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Ursache für Fehlermeldung?

Beitrag 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
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Ursache für Fehlermeldung?

Beitrag von Tom »

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