Array in getlist

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Array in getlist

Beitrag von Manfred »

Ich habe folgendes Problem, hier ein kleiner Auszug:

Code: Alles auswählen

local getlist := {}

oDialogZusatz:maskeget(@getlist)

METHOD DialogNummernkreise:maskeget(getlist)
       LOCAL nI
       LOCAL nY := 5

       SetColor("W/N,N/BG,N/N,N/N,N/W")
       FOR nI := 1 TO Len(::aNummern)
           @ nY  ,22 GET ::aNummern[nI,ANFANGNR]                      PICTURE "999999999" VALID ::pruefNummern("anfang",getlist)
           @ nY  ,32 GET ::aNummern[nI,ENDENR]                        PICTURE "999999999" VALID ::pruefNummern("ende",getlist)
           @ nY  ,42 GET ::aNummern[nI,LFDNR]                         PICTURE "999999999" WHEN {|| .F.}
           @ nY  ,52 GET ::aNummern[nI,RESERVE]                       PICTURE "999999999" VALID ::pruefNummern("reserve",getlist)
           @ nY++,62 SAY ::aNummern[nI,ENDENR] - ::aNummern[nI,LFDNR] PICTURE "999999999"
       NEXT
       SetColor("W/N,N/W,N/N,N/N,N/W")
RETURN self
*********************************************************************
METHOD DialogNummernkreise:pruefNummern(cVorgang,getlist)
       LOCAL lErfolg := .T.

       MEMVAR oSysPara

       IF Upper(cVorgang) == "ANFANG"
          IF ::aNummern[nSatz,ANFANGNR] = 0
             lErfolg := .F.
          ENDIF
       ELSEIF Upper(cVorgang) == "ENDE"
          IF ::aNummern[nSatz,ENDENR] = 0 .OR. ::aNummern[nSatz,ENDENR] <= ::aNummern[nSatz,ANFANGNR]
             lErfolg := .F.
          ENDIF
       ELSEIF Upper(cVorgang) == "RESERVE"
          IF ::aNummern[nSatz,RESERVE] = 0 .OR. ::aNummern[nSatz,RESERVE] <= ::aNummern[nSatz,ENDENR] - ::aNummern[nSatz,ANFANGNR]
             lErfolg := .F.
          ENDIF
       ENDIF
       IF ! lErfolg
          oSysPara:oMessage:anzeigen("Bitte Eingabe prüfen. Nicht korrekt!!!")
       ENDIF
RETURN lErfolg
warum kann ich in pruefnummern kein getactive() abfragen? Es ergibt immer NIL. Oder mache ich einen Fehler in :maskeget()? Geht das nicht mit dem Array?
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!!
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: Array in getlist

Beitrag von AUGE_OHR »

hi,

wo ist dein READ ?
IMHO ohne READ gibt es kein "aktives" GET
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array in getlist

Beitrag von Manfred »

ach so, sorry, das steht natürlich ganz oben unter dem Aufruf des Get. Wie gesagt, es klappt alles, nur wenn die valid Abfrage läuft kann ich in der Funktion das getlist Array zwar im Debugger als gefüllt erkennen (steht voller gets), aber über getactive() wird NIL zurückgegeben. Wenn ich das Array direkt anspreche kome ich an alle Werte daran. Aber getactive() sollte doch das gerade aktive Get zurückgegeben.
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!!
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Array in getlist

Beitrag von georg »

Hallo, Markus -


da ich schon lange nicht mehr mit GET arbeite, kann ich nur ein paar Hinweise liefern:

1. getactive() ist in \xppw32\source\sys\getsys.prg definiert - vielleicht kopierst Du die Quelle mal in Dein Programmverzeichnis und nimmst sie in die xpj auf und debugst mal den Aufruf von getactive(), vielleicht liefert das einen Hinweis,
2. getactive() verwendet die Klasse ReadStatus() aus \xppw32\source\sys\getsysx.prg - auch hier würde ich mal reinschauen, weil da das aktive Get-Element abgefragt wird.
3. Würde ich eine GET-Anweisung so abändern, dass sie auf eine normale Variable verweist, und dann mal sehen, ob dort das getactive() funktioniert - das wäre ein Indiz dafür, dass es Probleme bei Array (geschachtelten Arrays) gibt.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array in getlist

Beitrag von Manfred »

Hi Georg, (ich bin übrigens Manfred, nicht Markus ;-) )

mit "normalen" Gets klappt es, deshalb ja auch meine Eingangsfrage. Da benutze ich es ja auch. Ich habe es jetzt mal ohne Schleife nur mit einem Element geprüft. Da klappt es auch nicht. Also muß ich es wohl anders lösen. Schade.
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!!
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Array in getlist

Beitrag von georg »

Hallo, Markus -


äh, Manfred ... bin wohl noch nicht wach genug.

Ich würde der Sache mit dem Debugger auf den Grund gehen, denn eigentlich spricht nichts dagegen, dass es auch mit Array-Elementen funktioniert. Vielleicht benennt Alaska dann den PDR ja nach Dir ...
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array in getlist

Beitrag von Manfred »

ich habe es mit dem Debugger geprüft. Die Gets sind alle belegt. Wenn ich die gets einzeln direkt abfrage (pauschal) dann bekomme ich auch die Werte. Also z.B.:

getlist[1]:buffer

dann bekomme ich den Inhalt angezeigt im Debugger. Bzw. im ObjectInspector steht alles drin.
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!!
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Array in getlist

Beitrag von georg »

Hallo, Manfred -


was ich so gesehen habe, wird auf eine Instanzvariable in der ReadStatus()-Klasse zugegriffen. Kann es sein, dass die in Deinem Fall nicht richtig belegt wird? Hast Du da mal ein Debugger-Auge drauf geworfen?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Array in getlist

Beitrag von Manfred »

Hi Georg,

im Moment bin ich blind. Wo soll ich drauf schauen? Das sehe ich in der Pruefroutine
Dateianhänge
getlist.JPG
getlist.JPG (80.95 KiB) 6110 mal betrachtet
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!!
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Re: Array in getlist

Beitrag von georg »

Hallo, Manfred -


aus getsys.prg:

Code: Alles auswählen

FUNCTION GetActive( oGet )
   LOCAL oPrevious := ReadStatus():activeGet
aus getsysx.prg:

Code: Alles auswählen

*****************************************************************************
* Class to monitor READ status variables
*    The class object contains the current state variables.
*    Instances of the class contain saved state variables in case of
*    nested READs
*****************************************************************************
CLASS ReadStatus
   EXPORTED:
   CLASS VAR updated , killRead , lastStatus
   CLASS VAR hitTop  , hitBottom, lastExitState
   CLASS VAR lastPos , thisPos  , nextPos
   CLASS VAR getList , activeGet, lastActiveGet
   CLASS VAR procName, procLine , readVar
   CLASS VAR useAppEvent
Wenn Du getactive() ausführst, wird im Endeffekt ReadStatus():activeGet zurückgemeldet. Um herauszufinden, warum NIL und nicht ein GET-Objekt geliefert wird, müsstest Du prüfen, wo und wie ReadStatus():activeGet mit Werten besetzt wird. Das passiert z.B. in ReadStatus:PostActiveGet() und in ReadStatus:LbClick( nMouseRow, nMouseCol ) - da würde ich mit dem Debugger ansetzen und mal schauen, was passiert. (Aber, wie schon manchesmal geschrieben, arbeite ich eigentlich nur noch mit Xbase-Parts.)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten