[Clipper] Y a-t-il encore qq1 qui utilise ce langage...

Y a-t-il encore qq1 qui utilise ce langage... [Clipper] - Programmation

Marsh Posté le 17-03-2002 à 10:35:19    

... ou une de ses évolutions.
Habour :??:  
Visual objects
Clip4Win
Je suis en pleine indécision :eek2:  
Je crois que je maitrise assez bien ce langage, j'ai qqs programmes développés dessus mais j'ai maintenant un problème de connexion sur des bases autres que DBF.
Au taff je travaille sous VB/VBA, beurk (pas le choix) :fou:
Je me suis mis à Delphi, mais j'ai l'impression de devoir réinventer la roue (recherche de toutes les petites astuces) et je sature un peu.
Si qq1 a une expérience positive d'une des évolutions de Clipper, je suis toute ouïe  :bounce:


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 17-03-2002 à 10:35:19   

Reply

Marsh Posté le 17-03-2002 à 23:10:25    

Vraiment plus personne :??:  :??:  :??:


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 17-03-2002 à 23:11:40    

Delphi roulez  :D


---------------
Des bons sites pour Delphi? http://forum.hardware.fr/forum2.php3?post=16838&cat=10 -- informaticien -- http://www.z0rglub.com/phpwebgallery/ -- Delphi :love:
Reply

Marsh Posté le 18-03-2002 à 09:16:56    

[SDF]Poire a écrit a écrit :

Delphi roulez  :D  



Ouais, bon, OK, compris, je vais m'y remettre, mais je sens que je vais devoir ouvrir un autre topic, je bute sur une gestion des index.
Je vais encore chercher et si je trouve pas, hop, je reviens :bounce:


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 19-03-2002 à 07:18:08    

:bounce:  
Juste pour voir si ya vraiment plus un dinosaure qu'aurait pas vu... ;)


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 19-03-2002 à 17:05:10    

Visiblement, JE suis le dernier dinosaure! :pt1cable:


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 19-03-2002 à 17:08:08    

AlainTech a écrit a écrit :

Visiblement, JE suis le dernier dinosaure! :pt1cable:  




 
On peut voir le style de code que ca donne?? (je suis curieux  :D)

Reply

Marsh Posté le 20-03-2002 à 01:07:54    

Ventilo a écrit a écrit :

 
 
On peut voir le style de code que ca donne?? (je suis curieux  :D)  



Avec plaisir :love:  
Voici un extrait de code qui affiche une liste vide qui va se remplir pendant l'encodage.
Chaque élément de la liste (intersection ligne/colonne) est un objet auquel je peux appliquer des méthodes ou récupérer/modifier les propriétés.
Désolé pour les smileys dans le texte, il y a beaucoup de : dans le code (Faites un edit, ils disparaissent)
 
Function ligent(nNumEnt,aTabLEnt)
local aOldLEnt
local cEcran
local cMode
local cRech
local cTaille
local lEncore
local lModif
local lOldExit
local mTabVal
local nColNum
local nKey
local nLigArt
local nSortie
local nTotArt
local oGet
local oTbr
local bTotArt := {|x| nTotArt := nTotArt + x[3]}
local lLigEnt := .f.
local nL := 1
 
set(_SET_CONFIRM, .t.)
 
if empty(aTabLEnt)
  aTabLEnt := {{1,"*        ",0,""}}
endif
oTbr := TBrowseNew(6,1,18,78)
oTbr:goTopBlock := {|| nL := 1}
oTbr:goBottomBlock := {|| nL := len(aTablEnt)}
oTbr:skipBlock := {|n, nSaveNl| nSaveNl := nL, ;
                   nL := if(n > 0, min(len(aTabLEnt), nL + n), ;
                   max(1, nL + n)), nL - nSaveNl}
 
oTbr:addcolumn(TBColumnNew("   ", {|| str(aTabLEnt[nL,1],3)}))
oTbr:addcolumn(TBColumnNew("Article", {|| aTabLEnt[nL,2]}))
oTbr:addcolumn(TBColumnNew(" Nombre", {|| aTabLEnt[nL,3]}))
oTbr:getcolumn(3):picture := "9999"
 
lEncore := .t.
 
oTbr:colpos := 2
 
while lEncore
  while ! oTbr:stabilize()
    if (nKey := inkey()) != 0
      exit
    endif
  enddo
 
  if oTbr:stable
    nColNum := oTbr:colpos
    aOldLEnt := aclone(aTabLEnt)
    mTabVal := aTabLEnt[nL,nColNum]
    lOldExit := readexit(.t.)
    oGet := getNew(row(), col(), {|x| if(x == NIL, mTabVal, mTabVal := x)}, "mTabVal" )
    do case
      case nColNum == 2
        oGet:picture := "@!"
      case nColNum == 3
        oGet:picture := "@K 9999"
    end
    readmodal({oGet})
    nSortie := oGet:exitState
    lModif := updated()
    aTabLEnt[nL,nColNum] := mTabVal
    readexit(lOldExit)
    nKey := lastkey()
    do case
      case oTbr:colpos == 2                         // code
        if nKey == K_ENTER .or. nKey == K_TAB .or. nSortie == GE_ENTER
          if ! empty(mTabVal)
            if alltrim(mTabVal) == "*" .or. lModif
              nTitre := 7
              cRech := recherche(mTabVal)
              if cAction != cc
                cMode := ci
                push(GetList)
                cEcran := savescreen()
                cRech := gestfich(cMode,cRech)
                restscreen(,,,,cEcran)
                GetList := pop()
              endif
              if cAction == ca
                loop
              else
                aTabLEnt[nL,2] := ARTICLE->CODE
              endif
              nTitre := 12
            endif
            oTbr:colpos := 3
            nKey := 0
          else
            lEncore := .f.
          endif
        endif
      case oTbr:colpos == 3                   // quantit?
          if mTabVal != 0
          nTotArt := 0
          aeval(aTabLEnt,bTotArt)
          if nSortie == GE_ENTER
            nKey := K_DOWN
            oTbr:colpos := 2
          endif
        else
          nKey := 0
        endif
    end
    oTbr:refreshCurrent()
    oGet := {}
  endif
  @ 19, 46 say nTotArt picture "@E 9999"
  do case
    case nKey == K_DOWN
      if nL = len(aTabLEnt) .and. alltrim(aTabLEnt[nL,2]) != "*"
        aadd(aTabLEnt, {nL+1,"*        ",0,""})
        oTbr:colpos := 2
      endif
      oTbr:down()
      if alltrim(aTabLEnt[nL,2]) != "*"
        oTbr:colpos := 2
      endif
    case nKey == K_UP
      oTbr:up()
    case nKey == K_PGDN;      oTbr:pagedown()
    case nKey == K_PGUP;      oTbr:pageup()
    case nKey == K_CTRL_PGDN; oTbr:gobottom()
    case nKey == K_CTRL_PGUP; oTbr:gotop()
    case nKey == K_TAB .or. nKey == K_ENTER
      if oTbr:colpos = 2
        oTbr:colpos := 3
      else
        oTbr:down()
        oTbr:colpos := 2
      endif
    case nKey == K_SH_TAB
      if oTbr:colpos = 3
        oTbr:colpos := 2
      else
        oTbr:up()
        if nL != 1
          oTbr:colpos := 3
        endif
      endif
    case nKey == K_HOME
      oTbr:home()
      oTbr:colpos := 2
    case nKey == K_END;       oTbr:end()
    case nKey == K_ESC;       lEncore := .f.
  endcase
enddo
if empty(atail(aTabLEnt)[3])
  asize(aTabLEnt,len(aTabLEnt) - 1)
endif
if len(aTabLEnt) > 0
  lLigEnt := .t.
endif
return lLigEnt
* Fin ligent
 
Toutes les variables préfixées o sont des objets.
Des fonctions telles que push et pop n'existent pas dans le langage, je les ai créées.
 :jap:

 

[jfdsdjhfuetppo]--Message édité par AlainTech--[/jfdsdjhfuetppo]


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 20-03-2002 à 04:31:44    

Ca fait penser à du basic avec plain d'autre bout de langage...  :??:  
 
C'est pas intuitif dutout  :non:

Reply

Marsh Posté le 20-03-2002 à 11:09:49    

Ventilo a écrit a écrit :

Ca fait penser à du basic avec plain d'autre bout de langage...  :??:  
 
C'est pas intuitif dutout  :non:  



L'origine c'est dBase, mais en 100 fois plus puissant!
 
Et quel langage est intuitif, pour toi??
Pour moi, Clipper avait un énorme avantage: son comportement est toujours prévisible (contrairement à cette m***e de VB).
Si tu as un message d'erreur, tu relis les définitions et tu trouves.


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Marsh Posté le 20-03-2002 à 11:09:49   

Reply

Marsh Posté le 21-03-2002 à 00:30:28    

Ventilo a écrit a écrit :

Ca fait penser à du basic avec plain d'autre bout de langage...  :??:  
 
C'est pas intuitif dutout  :non:  



Eh, Ventilo, il est où ton langage intuitif? :sleep:


---------------
Si on vous donne une info qui marche, DITES-LE!!!! ------ Si vous trouvez seul, AUSSI, votre solution peut servir à d'autres! ------ Je dois la majorité de mes connaissances à mes erreurs!
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed