Seite 1 von 1
Getsysx und lastkey in Xbase 331 und 3355
Verfasst: Mo, 04. Feb 2013 17:02
von peterdahlmann
Hallo Kollegen,
habe vor 6 Jahren mal testweise eine größeres Clipper-Anwendung auf Xbase 331 rübergezogen und ein bisschen mit GUI und Hybridversion rumgespielt. Klappte erstaunlich gut und so es nahe das ganze nochmal mit dem neuesten 335 recompliert. Ich verwendet dabei zwei Batches 331.bat und 335.bat, die sich nur durch die Pfade auf das Xbase-Verzeichnis unterscheiden. Ich kann also wahlweise "alte" und "neue" Programme ereugn.
Dummerweise verhalten sich die erzeugten Programme im Bezug auf Get/Read und lastkey() deutlich.
Ich kann z.B. im alten Programm mit den Funktionstasten F10 das aktuelle Read beenden und dann über Lastkey() entsprechend verzweigen:
z.B.
@ 10,10 get Artikel
Read
lk=lastkey()
do case
Case lk=-9 .or. autopost
.....
Das klappt leider in der mit der 335er-Version nicht mehr. Da bleibt das Programm im Read "hängen" - so als wenn Getsysx nicht verwendet würde.
Hat jemand eine Idee?
Ist schon klar, dass ich das umschreiben müsste, aber leider ist die Anwendung im Betrieb..
Peter
Re: Getsysx und lastkey in Xbase 331 und 3355
Verfasst: Mo, 04. Feb 2013 17:17
von UliTs
Hallo Peter,
bist Du Dir sicher, dass mit der 331 READ mit Hilfe von F10 (ohne weiteren Programmcode) beendet wurde?
Uli
Re: Getsysx und lastkey in Xbase 331 und 335
Verfasst: Mo, 04. Feb 2013 17:45
von peterdahlmann
Klar - ich kanns ja nachvollziehen. Habe irgendwann mal die getsysx ein wenig angepasst und dann ging es. Also nach einer Funktionstaste springt der Cursor immer ins nächste Feld.
Ich compiliere die getsysx immer durch beide Batches und linke ihn dann an den Code
die Batches 331 und 335 unterscheiden sich nur in den folgenden Blöcken mit den Pfaden auf den Compiler:
Code: Alles auswählen
331
===
SET LIB=e:\alaska19\xppw32\LIB
SET PATH=e:\alaska19\xppw32\BIN;\alaska19\xppw32\LIB;\alaska19\express++\bin
SET INCLUDE=e:\alaska19\xppw32\INCLUDE
SET XPPRESOURCE=e:\alaska19\xppw32\RESOURCE\BITMAP;%XPPRESOURCE%
SET XPPRESOURCE=e:\alaska19\xppw32\RESOURCE\ICON;%XPPRESOURCE%
SET XPPRESOURCE=e:\alaska19\xppw32\RESOURCE\FONT;%XPPRESOURCE%
SET XPPRESOURCE=e:\alaska19\xppw32\RESOURCE\POINTER;%XPPRESOURCE%
335
===
SET LIB=e:\alaska19\alaska\xppw32\LIB
SET PATH=e:\alaska19\alaska\xppw32\BIN;\alaska19\alaska\xppw32\LIB;\alaska19\alaska\express++\bin
SET INCLUDE=e:\alaska19\alaska\xppw32\INCLUDE
SET XPPRESOURCE=e:\alaska19\alaska\xppw32\RESOURCE\BITMAP;%XPPRESOURCE%
SET XPPRESOURCE=e:\alaska19\alaska\xppw32\RESOURCE\ICON;%XPPRESOURCE%
SET XPPRESOURCE=e:\alaska19\alaska\xppw32\RESOURCE\FONT;%XPPRESOURCE%
SET XPPRESOURCE=e:\alaska19\alaska\xppw32\RESOURCE\POINTER;%XPPRESOURCE%
und die project.xpj sieht für Beide gleich aus:
Code: Alles auswählen
[PROJECT]
COMPILE = xpp
COMPILE_FLAGS = /q /b /a /err:5
DEBUG = YES
GUI = YES
LINKER = alink
LINK_FLAGS =
RC_COMPILE = arc
RC_FLAGS = /v
PROJECT.XPJ
[PROJECT.XPJ]
TRU19.EXE
[TRU19.EXE]
tru.res
STD.CH
SET.CH
NATMSG.CH
GET.CH
PROMPT.CH
MEMVAR.CH
COLLAT.CH
INKEY.CH
GETEXIT.CH
APPEVENT.CH
SETCURS.CH
adressen.prg
artikel.prg
redef.prg
vertrete.prg
vertabre.prg
fibmen.prg
kundlist.prg
eindruck.prg
offdruck.prg
openproc.prg
openpos.prg
skl.prg
wv.prg
einzahl.prg
artmen.prg
textmen.prg
artlist.prg
recinfo.prg
beleg.prg
adrmen.prg
anzumsat.prg
adrber1.prg
f_info.prg
f_varin.prg
sysloesc.prg
f_makefi.prg
f_sstr.prg
f_kalend.prg
f_browss.prg
frmdruck.prg
rectest.prg
auftrag.prg
artmen.prg
mahn.prg
adrmen.prg
vertkund.prg
bestell.prg
zusatz.prg
admin.prg
umsatz.prg
texte.prg
textmod.prg
network.prg
s_einzah.prg
appsys.prg
dbesys.prg
errorsys.prg
parsetes.prg
datum.prg
procs.prg
graprint.prg
v_exp.prg
root.obj
verkauf.prg
startpro.prg
netz.prg
appsys.obj
f_fileio.obj
linebib.obj
getsysx.obj
//ace32.lib
//adsdbe.dll
dclipx.dll
Mein Verdacht ist, dass in der 335er Version die Getsysx nicht oder anders zum Einsatz kommt als in der 331er Version
Peter
Re: Getsysx und lastkey in Xbase 331 und 335
Verfasst: Di, 05. Feb 2013 1:41
von AUGE_OHR
peterdahlmann hat geschrieben:
SET PATH=e:\alaska19\xppw32\BIN;\alaska19\xppw32\LIB;\alaska19\express++\bin
SET PATH=e:\alaska19\alaska\xppw32\BIN;\alaska19\alaska\xppw32\LIB;\alaska19\alaska\express++
\bin
Mein Verdacht ist, dass in der 335er Version die Getsysx nicht oder anders zum Einsatz kommt als in der 331er Version
sehe ich das richtig das du Express++ verwendest ? verwendest du für die v1.9.355 SL1 auch die Express++ SL1 Versionen ?
Re: Getsysx und lastkey in Xbase 331 und 3355
Verfasst: Di, 05. Feb 2013 10:28
von brandelh
bei meinen Programmen die noch die alte Optik nutzen habe ich keine Unterschiede im Verhalten von GET / READ festgestellt.
ich nutze umfangreiche SET KEY Konstrukte für Funktionstasten:
Code: Alles auswählen
...
set key K_F2 to f2hilfe
...
set key K_F7 to Notizen
...
set key K_F8 to EuroRech()
...
set key K_F9 to rechnen
...
set key K_F10 to F10_HPMENU
...
READ
...
procedure f2hilfe (proz,zei,_var)
local altcursor,nochmal,altfarb,altselect,af[12],a,altget,altbild,altsetescape
proz=upper(alltrim(proz))
_var=upper(alltrim(_var))
if proz="MEMOEDIT" .or. proz="DBEDIT" // hier nicht erlaubt.
return
endif
Falls Quellcode von einem zum anderen Release nicht mehr "richtig" funktioniert und man keine interne Funktionen verwendet hat (__FunktionsName, die können nämlich Ihr Verhalten ändern), dann sind meist neue
SCHLÜSSELWÖRTER schuld, also neue Klassen / Funktionen mit Namen die du für z.B. Felder oder Variablen verwendet hast.
Re: Getsysx und lastkey in Xbase 331 und 3355
Verfasst: Di, 05. Feb 2013 22:06
von AUGE_OHR
wie schon gesagt man muss bei v1.9.355 SL1 auch die Express++ SL1 Versionen verwenden !!!
Re: Getsysx und lastkey in Xbase 331 und 3355
Verfasst: Mi, 06. Feb 2013 11:12
von brandelh
die "richtige" Toolversion zu verwenden ist natürlich pflicht, aber es geht weiter
Wenn man (Alaska) Systemfunktionen durch angepasste Versionen (also Quellcode vom SYS Verzeichnis) ersetzt,
tut man gut daran bei neuen Xbase++ Versionen die neuen Quellcodedateien auf Änderungen zu untersuchen.
Manches ist nicht wichtig, oft ist es auch gleich geblieben,
aber ab und zu muss man etwas ändern
Re: Getsysx und lastkey in Xbase 331 und 3355
Verfasst: Do, 07. Feb 2013 7:50
von peterdahlmann
Ja das habe ich mir gedacht dass man doch ab und an den Code ändern muss.
Werde also den Code, der bei Funktionstasten-Drücken aufgerufen wird in eigene Funktionen auslagern, dann sollte es wieder gehen. Ist halt etwas holpriger als vorher - aber das ganze gehört ja sowieso abgelöst. Eine gute Gelegenheit nochmal zu überdenken wie man das in Zukunft gestalten möchte.
Ich habe übrigens mal die Express++-Teile rausgeschmissen und ohne Express- compiliert/gelinkt. Das Verhalten bleibt gleich.