Publié : jeu. 19/févr./2004 20:17
Bonjour
Si vous voulez utiliser l'éditeur JaPBe
téléchargeable : http://fr.srd.yahoo.com/S=9159818:WS1/R ... sic/jaPBe/ qui est bien meilleur que celui livré avec PureBasic avec un raccourci clavier qui ultise "Alt+F1" faut utiliser le code suivant pour que le programme fonctionne correctement !

Si vous voulez utiliser l'éditeur JaPBe


Code : Tout sélectionner
While getkeystate_(#VK_LMENU)<0
Delay(10)
Wend
;*********************************************************************************************
;* Il est Possible de passer en Paramètre le nombre de Blanc correspondant à l'indentation ! *
;* La valeur par défaut (Tab) est de "2" mais ne demande qu'à être modifiée *
;*********************************************************************************************
Global Res.l, Deb.l, Fin.l , Hwnd, Handle.l, LineIndent.s, ProgText.s,Txt.s, Prog.s, RC.s, Blanc.l, Cde.s, Pos.l, Fin.l, DejaCom.b
If Txt=""
Tab=0
Else
Tab= Val(Txt)
EndIf
RC = Chr(13)+Chr(10)
Blanc=0
DejaCom = 0
DejaElse = 0
;*******************************************************
; Recherche de la Fenêtre contenat le texte à Indenter *
;*******************************************************
Hwnd = FindWindow_( 0, 0 )
While Hwnd <> 0
Txt = Space(256)
GetWindowText_(Hwnd, Txt, 256)
If FindString(UCase(Txt),"JaPBe",1) = 1 And FindString(UCase(Txt),"DEBUG",1) =0
Handle=Hwnd
EndIf
Hwnd = GetWindow_(Hwnd, #GW_HWNDNEXT)
Wend
;*****************************************************
;* Activationn de la Fenêtre de Programme à Indenter *
;* Copie du Texte du Programme dans le pResse papier *
;* Puis du contenu du pResse papier dans ProgText *
;*****************************************************
SetFocus_(Handle)
Res = Keybd_Event_(17,0,0,0)+ Keybd_Event_(65,0,0,0)+ Keybd_Event_(67,0,0,0)+Keybd_Event_(17,0,2,0)
Delay(20)
ProgText=GetClipboardText()+RC+RC
;**************************
;* Sauvegarde de sécurité *
;**************************
If CreateFile(#1,"c:\sauvegarde.bak")
WriteString(ProgText)
CloseFile(#1)
EndIf
;*****************************************
;* Mise en Forme du texte et Indentation *
;*****************************************
Prog=""
Deb = 1
Fin = FindString(ProgText,RC,Deb)
While Fin + 2 < Len(ProgText)
LineIndent = Trim(Mid(ProgText,Deb,Fin-Deb))
If LineIndent > ""
Pos.l = FindString(LineIndent," ",1)
If Pos = 0
Cde = LineIndent
Else
Cde=Left(LineIndent,Pos-1)
EndIf
Cde=UCase(Cde)
If FindString("*ENDIF*ENDPROCEDURE*ENDSELECT*ELSE*CASE*WEND*NEXT*UNTIL*DEFAULT*ELSEIF*","*"+Cde+"*",1)>0 : Blanc - Tab :EndIf
If Blanc < 0 : Blanc=0: EndIf
If Left(Cde,1)=";"
If DejaCom = 0 : DejaCom =1 : Prog + RC : EndIf
Prog + LineIndent +RC
Else
If DejaCom=1 : Prog + RC : EndIf
DejaCom=0
Prog + Space(Blanc) + LineIndent +RC
EndIf
If FindString("*IF*FOREACH*REPEAT*WHILE*FOR*SELECT*ELSE*CASE*DEFAULT*ELSEIF*","*"+Cde+"*",1)>0
If FindString(UCase(LineIndent),"UNTIL",1)=0 And FindString(UCase(LineIndent),"ENDIF",1)=0
Blanc + Tab
EndIf
EndIf
EndIf
Deb = Fin+2
Fin = FindString(ProgText,RC,Deb)
Wend
;*********************************************************
;* Remplacement du programme Actuel par le texte indenté *
;*********************************************************
SetClipboardText(Prog)
SetFocus_(Handle)
Res = Keybd_Event_(17,0,0,0)+ Keybd_Event_(65,0,0,0)+Keybd_Event_(86,0,0,0)+Keybd_Event_(36,0,0,0)
Delay(20)
Res = Keybd_Event_(17,0,2,0)
;********** Fin du Programme ***************