Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1236 connectés 

 


Dernière réponse
Sujet : [Clipper] Y a-t-il encore qq1 qui utilise ce langage...
AlainTech

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:


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
AlainTech

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:

AlainTech

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.

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

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]

Ventilo

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)

AlainTech Visiblement, JE suis le dernier dinosaure! :pt1cable:
AlainTech :bounce:  
Juste pour voir si ya vraiment plus un dinosaure qu'aurait pas vu... ;)
AlainTech

[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:

[SDF]Poire Delphi roulez  :D
AlainTech Vraiment plus personne :??:  :??:  :??:
AlainTech ... 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:

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)