:setData() -> Parameter hat falschen Typ
Moderator: Moderatoren
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
:setData() -> Parameter hat falschen Typ
Hi,
diese Meldung bekomme ich immer wieder. Was könnte ich falsch machen?
Ich habe im Debugger an dieser Stelle halt gemacht und folgendes probiert:
1. das Feld ist von hause aus disabled
2. ich habe ein feld:setdata() ausgeführt
3. im Debugger kam die gleiche Meldung
4. ich habe das Feld enabled (True)
5. Ich habe wieder feld:setData() ausgeführt im Debugger
6. es klappte
Nächste Tour.
1.) das Feld ist von hause aus enabled
2. ich habe ein feld:setdata() ausgeführt
3. im Debugger kam die gleiche Meldung
4. ich habe das Feld disabled (True)
5. Ich habe wieder feld:setData() ausgeführt im Debugger
6. es klappte
Was soll das?
diese Meldung bekomme ich immer wieder. Was könnte ich falsch machen?
Ich habe im Debugger an dieser Stelle halt gemacht und folgendes probiert:
1. das Feld ist von hause aus disabled
2. ich habe ein feld:setdata() ausgeführt
3. im Debugger kam die gleiche Meldung
4. ich habe das Feld enabled (True)
5. Ich habe wieder feld:setData() ausgeführt im Debugger
6. es klappte
Nächste Tour.
1.) das Feld ist von hause aus enabled
2. ich habe ein feld:setdata() ausgeführt
3. im Debugger kam die gleiche Meldung
4. ich habe das Feld disabled (True)
5. Ich habe wieder feld:setData() ausgeführt im Debugger
6. es klappte
Was soll das?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
{ |x| IIf( x==NIL, DtoC(oVo:datumak) ,NIL) }}
Ich habe die Felder in ein Array geschrieben und mache dann darauf ein Setdata. Wenn ich das Array im Debugger einzeln durchgehe, von Hand in der Command Zeile, ist es so, wie oben beschrieben.
Hier die Error.log
Das war mein erster Fehler, das habe ich dann im Datalink geändertbrandelh hat geschrieben:Hallo Manfred,
bist du sicher, dass du einen STRING-Parameter übergibst ?
es betrifft übrigens in dem alle Arten von Felder. Datum, String, Numerisch, CheckboxOder nutzt du den :datalink ? Wenn ja, bitte zeigen.
{ |x| IIf( x==NIL, DtoC(oVo:datumak) ,NIL) }}
Ohne Debugger ist das gleiche Problem, deshalb habe ich es ja über den Debugger der VX probiert um zu sehen, wo ich einen Fehler mache.Bitte zeige uns auch die XppError.log, was passiert übrigens ohne Debugger ?
Ich habe die Felder in ein Array geschrieben und mache dann darauf ein Setdata. Wenn ich das Array im Debugger einzeln durchgehe, von Hand in der Command Zeile, ist es so, wie oben beschrieben.
Hier die Error.log
Code: Alles auswählen
Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 2
Station : AMD2800
Programmversion : Version: 2008.03.13
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: O CLASS: XbpSLE
oError:canDefault : N
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Parameter hat falschen Typ
oError:filename :
oError:genCode : 2
oError:operation : :setData
oError:osCode : 0
oError:severity : 2
oError:subCode : 1025
oError:subSystem : BASE
oError:thread : 3
oError:tries : 0
------------------------------------------------------------------------------
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Manfred,
NIL darfst Du nicht an einen :EditBuffer übergeben!
Viele Grüße,
Martin
NIL darfst Du nicht an einen :EditBuffer übergeben!
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
wenn Du das mit datalink meinst, dann muß ich zumindest vorab erstmal dementieren. Ich habe das auch an anderen Stellen und da klappt das.
aber ich werde es trotzdem einmal testen.
wenn Du das mit datalink meinst, dann muß ich zumindest vorab erstmal dementieren. Ich habe das auch an anderen Stellen und da klappt das.
aber ich werde es trotzdem einmal testen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
wie erwartet, das ist es nicht.
Außerdem stellt sich mir die Frage, wieso NIL, ich mache doch Setdata() und nicht getData() also wird doch eh auf das 1. Element zugegriffen und da steht ja DtoC(ovo:datumak) drin. Oder was meinst Du?
wie erwartet, das ist es nicht.
Außerdem stellt sich mir die Frage, wieso NIL, ich mache doch Setdata() und nicht getData() also wird doch eh auf das 1. Element zugegriffen und da steht ja DtoC(ovo:datumak) drin. Oder was meinst Du?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Was steht denn in oVo:datumak drin zum Zeitpunkt des Initialisierens und Aufbau der Maske? Noch NIL?
Viele Grüße,
Martin
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
wenn ich das feld im Debugger aufrufe, dann ist es leer. Wenn ich es mit Dtoc(oVo:datumak) im Debugger aufrufe, dann ist ein leeres Datum drin. Es steht kein NIL drin. Was zum Zeitpunkt der Erzeugung drin steht weiß ich nicht, aber es wird vorher auf jeden Fall mit Werten beschickt, bevor ein setdata() gemacht wird. Wie gesagt, wenn einmal /enable/disable gemacht wird, klappt es. Warum?
wenn ich das feld im Debugger aufrufe, dann ist es leer. Wenn ich es mit Dtoc(oVo:datumak) im Debugger aufrufe, dann ist ein leeres Datum drin. Es steht kein NIL drin. Was zum Zeitpunkt der Erzeugung drin steht weiß ich nicht, aber es wird vorher auf jeden Fall mit Werten beschickt, bevor ein setdata() gemacht wird. Wie gesagt, wenn einmal /enable/disable gemacht wird, klappt es. Warum?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi,
also, wie erwartet. Zur Zeit der Erzeugung des Objektes steht in ovo:datumak NIL. Dann werden Werte gelsen und dann ist es ein Datumsfeld. Dann wird im Datalink konvertiert (DtoC(oVo:datumak)). Das sollte doch dann richtig sein?
Ich habe übrigens die anderen geprüft, funktionierenden, OBjekte angesehen, da ist es dasselbe. Im Moment der Erzeugung steht in der Var Nil und kurz vor dem Setdata wird etwas in die Var geschrieben. Dort gibt es auch keine Fehler. Also irgendwas anderes blödes, was ich verzapft habe.
also, wie erwartet. Zur Zeit der Erzeugung des Objektes steht in ovo:datumak NIL. Dann werden Werte gelsen und dann ist es ein Datumsfeld. Dann wird im Datalink konvertiert (DtoC(oVo:datumak)). Das sollte doch dann richtig sein?
Ich habe übrigens die anderen geprüft, funktionierenden, OBjekte angesehen, da ist es dasselbe. Im Moment der Erzeugung steht in der Var Nil und kurz vor dem Setdata wird etwas in die Var geschrieben. Dort gibt es auch keine Fehler. Also irgendwas anderes blödes, was ich verzapft habe.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Manfred,
ich verstehe nicht, wie du so seltsame codeblocks für den Datalink verwenden kannst. Die Vorgaben sehen anders aus und das aus einem bestimmten Grund. Die Abfrage ob x=NIL ist heißt normalerweise PCount()=0, also überhaupt kein Parameter übergeben !
Wenn du dann einen Parameter übergibtst, dann macht er NIL (2. Auswahl) im Codeblock, was soll er damit anfangen ?
Falls du NUR ein Anzeigefeld willst (also nie damit speichern), nimm diese Form:
ansonsten frage mit PCount()=0 ab, ob ein Speichern gewünscht ist, aber immer daran denken, das letzte Ergebnis der Anweisung wird als Rückgabewert verwendet ! Sollte auch bei einer Speicherung der Puffer des SLE neu gesetzt werden - das weiß ich nicht - dann wäre es genau der Fall dass NIL in den Puffer geladen werden soll.
FeldTypNachChar() etc. stehen hier als Synonym für die richtigen Funktionen. VarToChar() etc. kann, muss aber nicht passen.
ich verstehe nicht, wie du so seltsame codeblocks für den Datalink verwenden kannst. Die Vorgaben sehen anders aus und das aus einem bestimmten Grund. Die Abfrage ob x=NIL ist heißt normalerweise PCount()=0, also überhaupt kein Parameter übergeben !
Wenn du dann einen Parameter übergibtst, dann macht er NIL (2. Auswahl) im Codeblock, was soll er damit anfangen ?
Falls du NUR ein Anzeigefeld willst (also nie damit speichern), nimm diese Form:
Code: Alles auswählen
:datalink( {|| FeldTypNachChar(field->XYZ) } )
Code: Alles auswählen
:datalink( {|x| iif(PCount()=0,FeldTypNachChar(field->XYZ),;
field->XYZ := CharNachFeldTyp(x) } )
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
warum? Nun, ich hatte anfangs dann wohl irgendwas falsch gemacht. Ich habe nur den Setdata() Bereich angegeben und da hat es geknallt. Danach kam ich darauf, dass man wohl im Zweifelsfalle NIL angibt. Das klappte dann direkt. Also gab es zu dem Zeitpunkt keine weitere Argumentation mehr, anders zu handeln.
Ich habe es gerade probiert, das war es auch nicht.
warum? Nun, ich hatte anfangs dann wohl irgendwas falsch gemacht. Ich habe nur den Setdata() Bereich angegeben und da hat es geknallt. Danach kam ich darauf, dass man wohl im Zweifelsfalle NIL angibt. Das klappte dann direkt. Also gab es zu dem Zeitpunkt keine weitere Argumentation mehr, anders zu handeln.
Ich habe es gerade probiert, das war es auch nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
ich habe hier mal ein Testprogramm gemacht und siehe da, auch deine Codeblocks arbeiten bei :setData() einwandfrei. Disable() und EnAble() machen hier keinen Unterschied bei :setData() und :getData() - nur die Maus ...
Wenn ich nun mit SetData( NIL ) einen Fehler erzwinge,
steht in meiner XppError:
Du hast oben nur eine Zeile und zwar das Objekt.
Irgendwas stimmt mit dem Aufruf dieser Methode und dem Objekt nicht, aber was ???
ich habe hier mal ein Testprogramm gemacht und siehe da, auch deine Codeblocks arbeiten bei :setData() einwandfrei. Disable() und EnAble() machen hier keinen Unterschied bei :setData() und :getData() - nur die Maus ...
Wenn ich nun mit SetData( NIL ) einen Fehler erzwinge,
steht in meiner XppError:
also zwei Parameterzeilen und ein NIL für das als NIL übergebene Feld.oError:args
-> VALTYPE: O CLASS: XbpSLE
-> VALTYPE: U VALUE: NIL
Du hast oben nur eine Zeile und zwar das Objekt.
Irgendwas stimmt mit dem Aufruf dieser Methode und dem Objekt nicht, aber was ???
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
ich denke mal, hier liegt der Futtsack. Hier der Code wie ich es löse
ich denke mal, hier liegt der Futtsack. Hier der Code wie ich es löse
Code: Alles auswählen
METHOD vo:erzeugeArrayStatistikFelder(objekt,nStaticBreite, nStaticHoehe)
MEMVAR oVo
::aFelderStatistikVo := {;
{"Datum Ankauf:" ,{|| oVo:oDatumAk := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oDatumAk:datalink := [color=red]{ || DtoC(oVo:datumak) }[/color]}},;
{"Datum erfasst:" ,{|| oVo:oDatumEin := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oDatumEin:datalink := [color=red]{ |x| IIf( x==NIL, DtoC(oVo:datumein) ,NIL) }[/color]}},;
{"Datum Ausgang:" ,{|| oVo:oDatumAus := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oDatumAus:datalink := [color=red]{ |x| IIf( x==NIL, DtoC(oVo:datumaus) ,NIL) }[/color]}},;
{"Datum Verleih:" ,{|| oVo:oDatumLeih := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oDatumLeih:datalink := [color=red]{ |x| IIf( x==NIL, DtoC(oVo:datumleih) ,NIL) }[/color]}},;
{"Datum zurück:" ,{|| oVo:oDatumRueck := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oDatumRueck:datalink := [color=red]{ |x| IIf( x==NIL, DtoC(oVo:datumrueck),NIL) }[/color]}},;
{"Datum verkauft:" ,{|| oVo:oDatumvk := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oDatumVk:datalink := [color=red]{ |x| IIf( x==NIL, DtoC(oVo:datumvk) ,NIL) }[/color]}},;
{"Lagertage:" ,{|| oVo:oLagerTage := XbpSle():new(objekt:oRahmenStatistikVo ,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oLagertage:datalink := [color=red]{ |x| IIf( x==NIL, Str(oVo:lagertage) ,NIL) }[/color]}},;
{"Internetverkauf:",{|| oVo:oInternetvk := XbpCheckBox():new(objekt:oRahmenStatistikVo,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oInternetvk:datalink := [color=red]{ |x| IIf( x==NIL, oVo:internetvk ,NIL) }[/color]}},;
{"Reserve:" ,{|| oVo:oReserve := XbpCheckBox():new(objekt:oRahmenStatistikVo,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oReserve:datalink := [color=red]{ |x| IIf( x==NIL, oVo:reserve ,NIL) }[/color]}},;
{"Schrott:" ,{|| oVo:oSchrott := XbpCheckBox():new(objekt:oRahmenStatistikVo,,,{nStaticBreite,nStaticHoehe})},;
{|| oVo:oSchrott:datalink := [color=red]{ |x| IIf( x==NIL, oVo:schrott ,NIL) }[/color]}};
}
ASort(::aFelderStatistikVo,,,{|aX,aY| aX[1] < aY[1]})
RETURN self
oVo:erzeugeArrayStatistikFelder(oVt,nStaticLaenge,nStaticHoehe-1)
FOR nI := 1 TO Len(oVo:aFelderStatistikVo)
oStatic := feldtexte():new(oVt:oRahmenStatistikVo,,{nX,nY},{nStaticLaenge,nStaticHoehe-1})
oStatic:caption := oVo:aFelderStatistikVo[nI,1]
oStatic:create()
nXEingabe := nX + nXAbstand + oStatic:currentsize()[1]
oTemp := Eval(oVo:aFelderStatistikVo[nI,2])
oTemp:datalink := oVo:aFelderStatistikVo[nI,3]
oTemp:create()
oTemp:disable()
oTemp:setPos({nXEingabe,nY})
AAdd(oVo:aStatistikControls, oTemp)
nY -= 20
IF nY <= 0
nY := oVt:oRahmenStatistikVo:currentSize()[2]-nYOrg
nX := nX + nXAbstand + oTemp:currentpos()[1] + oTemp:currentSize()[1]
ENDIF
NEXT
FOR nI := 1 TO Len(oVo:aStatistikControls)
oVo:aStatistikControls[nI]:setData()
NEXT
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1930
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Hi Manfred,
versuch es mal so:
versuch es mal so:
Code: Alles auswählen
{ |x| IIf( x==NIL, DtoC(oVo:datumak) ," . . ") }}
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Manfred,
deine Konstruktion macht die Fehlersuche nicht leichter
und der CallStack fehlt in der XppError.log auch ...
Was steht denn fest ?
1. Es ist ein XbpSLE Objekt vorhanden, sonst wäre der erste oError Argument anders.
2. Die Methode setData() wird aufgerufen, sonst würde diese unten nicht als Operation gemeldet.
3. Wenn du nun einen gültigen Parameter (2. Parameter in Errorlog)
übergeben hättest, wäre kein Fehler da
4. Wenn du NIL (oder einen ungültigen) Parameter übergeben hättest,
wäre eine 2. Zeile mit diesem ungültigen Parameter in der Errorlog.
Ich schließe daher daraus, dass der Parameter in :datalink zu dieser Zeit im Fehlerfall kein Codeblock ist ! Aber warum ???
deine Konstruktion macht die Fehlersuche nicht leichter
und der CallStack fehlt in der XppError.log auch ...
Was steht denn fest ?
1. Es ist ein XbpSLE Objekt vorhanden, sonst wäre der erste oError Argument anders.
2. Die Methode setData() wird aufgerufen, sonst würde diese unten nicht als Operation gemeldet.
3. Wenn du nun einen gültigen Parameter (2. Parameter in Errorlog)
übergeben hättest, wäre kein Fehler da
4. Wenn du NIL (oder einen ungültigen) Parameter übergeben hättest,
wäre eine 2. Zeile mit diesem ungültigen Parameter in der Errorlog.
Ich schließe daher daraus, dass der Parameter in :datalink zu dieser Zeit im Fehlerfall kein Codeblock ist ! Aber warum ???
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Hubert,
ich nehme es mal eben zur Probe aus der Schleife raus und mache es direkt. Mal sehen, was dann passiert
ich nehme es mal eben zur Probe aus der Schleife raus und mache es direkt. Mal sehen, was dann passiert
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Nee Hubert,
das liegt hier an der Formatierung. Das Code Feld formatiert anders als es bei mir aussieht. Ich wüßte nicht, ob man das hier breiter machen kann.
Und ohne Code Tags, da hast Du Dich ja schon mal beschwert, weil man dann auch nicht besser lesen kann.
das liegt hier an der Formatierung. Das Code Feld formatiert anders als es bei mir aussieht. Ich wüßte nicht, ob man das hier breiter machen kann.
Und ohne Code Tags, da hast Du Dich ja schon mal beschwert, weil man dann auch nicht besser lesen kann.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Ich habe jetzt die :datalink-Codeblöcke mal rot eingefärbt...
Viele Grüße,
Martin
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi Martin,
das ist nett. Aber irgendwer hat es doch mal geschafft ganz breit die Texte hinzubekommen.
das ist nett. Aber irgendwer hat es doch mal geschafft ganz breit die Texte hinzubekommen.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hm,
wenn ich es nicht in der Schleife mache, sondern zur Probe ein Objekt direkt erstelle, dann klappt es. Also liegt es an der Art, wie es gemacht wird. Ich werde es jetzt Schritt für Schritt zerpflücken.
wenn ich es nicht in der Schleife mache, sondern zur Probe ein Objekt direkt erstelle, dann klappt es. Also liegt es an der Art, wie es gemacht wird. Ich werde es jetzt Schritt für Schritt zerpflücken.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
ich habe die Fehlerursache gefunden !
Wenn man :setData() ohne Parameter aufruft UND datalink nichts zugewiesen bekommen hat (== NIL), dann erscheint genau dein Fehlerbild in der XppError.log
Irgendwie muss eines deiner Objekte ein SetData() ausführen, bevor der datalink gesetzt ist.
ich habe die Fehlerursache gefunden !
Wenn man :setData() ohne Parameter aufruft UND datalink nichts zugewiesen bekommen hat (== NIL), dann erscheint genau dein Fehlerbild in der XppError.log
Irgendwie muss eines deiner Objekte ein SetData() ausführen, bevor der datalink gesetzt ist.
Zuletzt geändert von brandelh am Do, 13. Mär 2008 13:09, insgesamt 1-mal geändert.
Gruß
Hubert
Hubert
- Manfred
- Foren-Administrator
- Beiträge: 21200
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 210 Mal
- Danksagung erhalten: 67 Mal
Hi,
also ich weiß jetzt, wenn man den datalink nicht in der Schleife über oTemp:datalink(), sondern direkt in
oVo:oDatumak:datalink := ....
umwandelt, dann klappt es.
Ich habe in den Objekten nachgesehen, es steht jeweils der Codeblock in dem Datalink drin. Oder was meinst Du jetzt Hubert?
also ich weiß jetzt, wenn man den datalink nicht in der Schleife über oTemp:datalink(), sondern direkt in
oVo:oDatumak:datalink := ....
umwandelt, dann klappt es.
Code: Alles auswählen
FOR nI := 1 TO Len(oVo:aFelderStatistikVo)
oStatic := feldtexte():new(oVt:oRahmenStatistikVo,,{nX,nY},{nStaticLaenge,nStaticHoehe-1})
oStatic:caption := oVo:aFelderStatistikVo[nI,1]
oStatic:create()
nXEingabe := nX + nXAbstand + oStatic:currentsize()[1]
oTemp := Eval(oVo:aFelderStatistikVo[nI,2])
oTemp:datalink := oVo:aFelderStatistikVo[nI,3]
IF nI = 1
oVo:oDatumAk:datalink := { || DtoC(oVo:datumak) }
ENDIF
oTemp:create()
oTemp:disable()
oTemp:setPos({nXEingabe,nY})
AAdd(oVo:aStatistikControls, oTemp)
nY -= 20
IF nY <= 0
nY := oVt:oRahmenStatistikVo:currentSize()[2]-nYOrg
nX := nX + nXAbstand + oTemp:currentpos()[1] + oTemp:currentSize()[1]
ENDIF
NEXT
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Hubert,
genau deshalb hatte ich ja vorhin auch gefragt, was in oVo:datumak zum Zeitpunkt des Aufbaus der Maske drin steht. Es wird ja beim Anzeigen der Maske ein implizites SetData() aufgerufen - sonst würde ja nirgendwo was angezeigt werden! Und wenn man seine Variablen nicht ordentlich initialisiert, knallt es halt.
Bei DBF-Dateien ist das unkritisch, da der Phantom-Datensatz ja ordentlich intialisiert (alle Felder sind halt - ihren jeweiligen Datentypen entsprechend - leer, aber eben nicht NIL).
Viele Grüße,
Martin
genau deshalb hatte ich ja vorhin auch gefragt, was in oVo:datumak zum Zeitpunkt des Aufbaus der Maske drin steht. Es wird ja beim Anzeigen der Maske ein implizites SetData() aufgerufen - sonst würde ja nirgendwo was angezeigt werden! Und wenn man seine Variablen nicht ordentlich initialisiert, knallt es halt.
Bei DBF-Dateien ist das unkritisch, da der Phantom-Datensatz ja ordentlich intialisiert (alle Felder sind halt - ihren jeweiligen Datentypen entsprechend - leer, aber eben nicht NIL).
Viele Grüße,
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hallo Manfred,
baue mal eine Prüfung in diese Schleife ein:
denn hier ist der erste setData() Aufruf den ich sehe.
So könnte man auch das Element finden, allerdings hast du ja Sortiert ... Asort bitte zum Test abschalten
baue mal eine Prüfung in diese Schleife ein:
Code: Alles auswählen
FOR nI := 1 TO Len(oVo:aStatistikControls)
oVo:aStatistikControls[nI]:setData()
NEXT
Code: Alles auswählen
FOR nI := 1 TO Len(oVo:aStatistikControls)
[color=red] if Valtype(oVo:aStatistikControls[nI]:datalink) # "B"
msgbox(Var2Char(oVo:aStatistikControls[nI]:datalink),;
"Kein Codeblock "+str(nI) )
endif[/color]
oVo:aStatistikControls[nI]:setData()
NEXT
Gruß
Hubert
Hubert