Invité Invité
| Sujet: Re: V2.84 du 16/02/2014 - nouveau paramètre pour GenerateMask Lun 17 Fév 2014 - 19:02 | |
| Bonjour, Il y a un problème. Je ne sais pas si c'est moi qui envoi mal les paramètres, ou si cela vient de la dll. J'ai voulu voir ce que cela donnait de carrément coloriser le programme, et pour ce faire, j'ai pris tous les mots-clés de celui-ci pour voir le résultat. Ceux-ci sont dans une variable, et évidemment avec les guillemts: cmd$ J'ai enregistré le programme, pour pouvoir le relire ligne par ligne dans le memo 3, mais je suis vite bloqué. Donc ce programmei il faut le sauvegarder, et mettre la bonne adresse en ligne 12. J'ai mis "*}" pour quote, mais je ne vois pas "}". Est-ce que Panoramic l'efface? Dans la première ligne concernée, j'ai ajouté une commande en fin de ligne, mais apparemment ça ne change pas. Dans la ligne type, j'ai employé g$ à la place, est-ce pour cela que cela marche? . - Spoiler:
- Code:
-
dim g$ , t$ , x% , y% , clic% , cmd$ cmd$ = " FOR TO NEXT PRINT IF THEN ELSE END_IF REM DIM CHR$ WIDTH SCREEN_X SCREEN_Y FONT_NAME FONT_SIZE FONT_BOLD EDIT HEIGHT LEFT TOP RIGHT RIGHT_POS$ INSTR INSTR_POS FORM FULL_SPACE ":' CMD$ = cmd$ + "MEMO LIST PICTURE PARENT PRINT_TARGET_IS 2D_TARGET_IS DLL_ON COLOR END SUB END_SUB DIM_LOCAL TEXT TEXT$ STRING LEN DLL_CALL6 ADR" cmd$ = cmd$ + " HIDE TO_FOREGROUND 2D_FILL_COLOR FONT_COLOR PRINT_LOCATE MESSAGE STR$ SHOW REPEAT UNTIL EXIT_REPEAT EXIT_FOR MID£ INSTR ASC UPPER$" cmd$ = cmd$ + " TRIM$ NUMERIC LEN SCANCODE OR AND " g$ = chr$(34) : t$ = chr$(13) width 0,screen_x : font_name 0,"Consolas" : font_size 0,10 : font_bold 0 edit 1 : width 1,width(0)-30 : height 1,30 edit 2 : width 2,width(1) : height 2,30 : top 2,30 edit 4 : width 4,width(1) : height 4,30 : top 4,60 memo 3 : top 3,90: width 3,width(1) : height 3,400 : file_load 3,"C:\MEMO\prg divers\colorise_code.bas" form 10 : full_space 10 picture 11 : parent 11,10 : full_space 11 : font_size 11,10 : font_bold 11 : font_name 11,"Consolas" print_target_is 11 : 2d_target_is 11 : color 11,195,140,121
dll_on "kgf.dll" teste() end ' ==================== sub teste() dim_local a$,separe$, separe2$ dim_local msk1$, msk2$, b$, res% , a% , quote$ msk1$ = "*" : msk2$ = "=" : quote$ = "*}" y% = 10 : x% = 10 separe2$ = " ,:<>='/*+-" a$ = " For a% = 1 to 10 : print " + g$ + "fort de toute expérience" + g$ + " : next a%:if a%>=10 then a%=10: rem fin de la ligne" text 1,a$ for a% = 1 to 200 text 4,"" : color 4,255,255,255
b$ = string$(len(a$)," ") res% = dll_call6("GenerateMask",adr(a$),adr(separe2$),adr(msk1$),adr(msk2$),adr(quote$),adr(b$)) text 4,b$ text 4,"" : color 4,255,255,0 b$ = string$(len(a$)," ") res% = dll_call6("GenerateMask",adr(a$),adr(separe2$),adr(msk1$),adr(msk2$),adr(quote$),adr(b$)) text 4,b$ next a% color 4,255,255,255 show 10 hide 11 : message "Prêt" for a% = 1 to count(3) a$ = item_read$(3,a%) if a$ <> "" then b$ = string$(len(a$)," "): else : b$ = " " : ' voir si ça débloque lorsque a$ = "" res% = dll_call6("GenerateMask",adr(a$),adr(separe2$),adr(msk1$),adr(msk2$),adr(quote$),adr(b$)) ' lorsque la ligne se termine par un guillemet, celui-ci est oublié. message "#>"+b$+"## pour voir les guillemts" colorise(a%,a$,b$) y% = y% +18 next a% show 11
end_sub ' ===========================================================
sub colorise(ligne% ,a$ , b$) to_foreground 10 dim_local v% , w%, c% , d$ , mot$ , rem% , j : j = 9
x% = 40 :' décalage n° ligne 2d_fill_color 230,230,230 : font_color 11,187,153,143: print_locate 0,y% : print right$(" "+str$(ligne%),4)
repeat v% = instr(b$,"*") if v% > 0 d$ = mid$(a$,v%,1) c% = asc(d$) if instr(",:<>=/*+-",d$) > 0
font_color 11, 240,100,57 print_locate x%,y% if v% = 1 print d$ : mot$="" : a$ = right_pos$(a$,2) : b$ = right_pos$(b$,2) : x% = x%+j else
mot$ = left$(a$,v%-1) :' ici il faudra tenir compte des mot-cles et afficher
if instr(cmd$," " + upper$(mot$) + " ") > 0 font_color 11, 0,0,255 if upper$(trim$(mot$)) = "REM" then rem%=1 else if numeric(mot$) = 1 font_color 11, 255,0,0 else font_color 11, 0,0,0 end_if end_if print mot$ x%=x%+(len(mot$)*j) mot$ = d$ : print_locate x%,y% :font_color 11,240,100,57 print mot$ :x%=x%+(len(mot$)*j) : a$ = right_pos$(a$,v%+1) : b$ = right_pos$(b$,v%+1) end_if else if d$ = g$ ' il faudra mettre en sub généraliste if mot$ <> "" then print_locate x%,y%:print mot$ : x%= x%+(len(mot$)*j) a$ = right_pos$(a$,v%) : w% = instr(b$,"}") : message str$( w%) + t$ + a$+t$+b$ mot$ = left$(a$,w%-1) font_color 11,34,114,61 print_locate x%,y% print mot$ x%=x%+ (len(mot$) * j) : print_locate x%,y%:print g$: x% = x%+j mot$=""
a$=right_pos$(a$,w%+1) b$ = right_pos$(b$,w%+1) else if d$ = " " mot$ = left$(a$,v%-1) +" " if instr(cmd$ , " "+upper$(trim$(mot$)) + " ") > 0 font_color 11, 0,0,255 :if upper$(trim$(mot$)) = "REM" then rem%=1 print_locate x%,y% : print mot$ : x% = x% + (len(mot$)*j) a$ = right_pos$(a$,v%+1) : b$ = right_pos$(b$,v%+1) : mot$ = "" else if numeric(mot$) = 1 font_color 11, 255,0,0 else font_color 11, 0,0,0 end_if print_locate x%,y% : print mot$ : x% = x% + (len(mot$)*j) a$ = right_pos$(a$,v%+1) : b$ = right_pos$(b$,v%+1) : mot$ = "" end_if
else if d$ = "'" font_color 11, 250,59,183 : print_locate x%,y% : print a$ : exit_repeat else font_color 11, 250,0,183 : print_locate x%,y% : print mot$ : x% = x% + (len(mot$)*j) mot$ = "" :a$ = right_pos$(a$, v%+1) : b$ = right_pos$(b$,v%) end_if end_if end_if: ' <<= g$ end_if
if rem% = 1 print_locate x%,y% :font_color 11, 250,59,183: print a$ : exit_repeat end_if end_if to_foreground 10 until b$ = "" or v% = 0 or a$ = "" or scancode = 27 end_sub
|
|