Getsysx und lastkey in Xbase 331 und 3355

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Antworten
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Getsysx und lastkey in Xbase 331 und 3355

Beitrag 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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Getsysx und lastkey in Xbase 331 und 3355

Beitrag von UliTs »

Hallo Peter,

bist Du Dir sicher, dass mit der 331 READ mit Hilfe von F10 (ohne weiteren Programmcode) beendet wurde?

Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Re: Getsysx und lastkey in Xbase 331 und 335

Beitrag 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
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: Getsysx und lastkey in Xbase 331 und 335

Beitrag 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 ?
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Getsysx und lastkey in Xbase 331 und 3355

Beitrag 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.
Gruß
Hubert
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: Getsysx und lastkey in Xbase 331 und 3355

Beitrag von AUGE_OHR »

wie schon gesagt man muss bei v1.9.355 SL1 auch die Express++ SL1 Versionen verwenden !!!
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Getsysx und lastkey in Xbase 331 und 3355

Beitrag 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 :!:
Gruß
Hubert
Benutzeravatar
peterdahlmann
Cut&Paste-Entwickler
Cut&Paste-Entwickler
Beiträge: 20
Registriert: Do, 20. Dez 2007 6:54
Wohnort: München

Re: Getsysx und lastkey in Xbase 331 und 3355

Beitrag 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.
Antworten