Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Compilateur de fichiers *.bas Mar 30 Oct 2012 - 16:11 | |
| Un petit jouet... Comme beaucoup, j' ai adopté les "#include " pour mes programmes. C' est plus facile pour structurer les sources et le programme devient plus clair. Mais la publication sur le forum, avec la multiplication des fichiers, devient vite fastidieuse. D'où l'idée de raccrocher ensemble tous ces fichiers ensembles et la naissance de ce petit utilitaire. Il rassemble les fichiers selon l'ordre de la liste et passe en commentaire les lignes "#include" - Code:
-
' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ' ¤ MAIN ¤ ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Init() Interface() End ' ============================================================================== Sub Init() Dlist 901 Dim menu6$ menu6$=string$(144," ") End_Sub ' ============================================================================== Sub Interface() Dim_Local x% Formulaire(0,1,"Source Include Compilator",800,350,0,0) Menu(0,1,7) For x%=3 To 5:Inactive x%:Next x% :inactive 7 Caption_Menu(1,7) List 100: Width 100,784:Height 100,292:Color 100,0,0,0:Font_Color 100,255,255,255 Font_Bold 100:Font_Name 100,"Courier New":hide 100 End_Sub ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ' ¤ INTERFACE ¤ ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Sub Formulaire(No%,V%,Titre$,W%,H%,T%,L%) If No% > 0 Then Form No% If V%=0 Then Hide No% Command_Target_Is No% Width No%,W% :Height No%,H% If T%=0 :Top No%,(Screen_y-H%)/2 :Else :Top No%,T% :End_If If L%=0 :Left No%,(Screen_x-W%)/2:Else :Left No%,L%:End_If Font_Name No%,"Times new roman":Font_Size No%,10:Caption No%,Titre$ End_Sub ' ============================================================================== Sub Menu(No%,Num%,Nbre%) If Label("Clic")=0 Then Label Clic If Variable("M%")=0 Then Dim M% Dim_local x% Command_Target_Is No% Main_Menu Num% For x% =Num%+1 To Num%+Nbre% :Sub_Menu x% :Parent x%,Num% :On_Click x%,Clic Next x% End_Sub ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ' ¤ MENU CLIC ¤ ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Clic: if variable("Menu%")=0 Then Dim Menu% Menu%=Number_Click Select Menu% case 2 show 100 Nouveau() case 3 Ajouter(100) case 4 Supprimer(100) case 5 Executer(100,901) case 6 Quitter() case 8 Aide(300) Case 203 C203() Case 204 C204() End_Select Return ' ============================================================================== ' Case 2 Sub Nouveau() If Object_Exists(200)=0 Formulaire(200,1,"Nouveau",440,150,0,0) Alpha 201:Top 201,13:Left 201,10:Caption 201,"Dossier de Sortie" Edit 202 :Top 202,30:Left 202,10:Width 202,300 Alpha 205:Top 205,53:Left 205,10:Caption 205,"Nom du nouveau fichier" Edit 206 :Top 206,70:Left 206,10:Width 206,200 Button 203:Top 203,29:Left 203,315:Width 203,20:Height 203,20:Cursor_Point 203 Font_Name 203,"Wingdings":Caption 203,"1":On_Click 203,Clic Button 204:Top 204,69:Left 204,215:Width 204,20:Height 204,20:Cursor_Point 204 Caption 204,"Ok":On_Click 204,Clic Else Show 200 End_if End_Sub ' ============================================================================== ' Case 3 Sub Ajouter(No%) If Variable("File$")=0 Then Dim File$ Open_Dialog 900 filter 900,"*.bas|*.bas" File$=File_Name$(900) If File$<>"_" Then Item_Add No%,File$ Delete 900 End_Sub ' ============================================================================== ' Case 4 Sub Supprimer(No%) If Item_Index(No%)<>0 Then Item_Delete No%,Item_Index(No%) End_Sub ' ============================================================================== ' Case 5 Sub Executer(No%,Liste%) Dim_Local x%,i$,y% If Count(No%)>0 x%=Count(No%) Repeat y%=y%+1 File_Add Liste%,Item_Read$(No%,1) Item_Delete No%,1 Until y%=x% For x%=1 to count(Liste%) i$=Item_read$(Liste%,x%) If left$(Upper$(i$),8)="#INCLUDE" i$="' "+i$ Item_delete Liste%,x% Item_Insert Liste%,x%,i$ End_If Next x% File_Save Liste%,Output$+Nom$+".bas" End_If Inactive 3 :inactive 4 :inactive 5 hide 100 End_Sub ' ============================================================================== ' Case 6 Sub Quitter() Terminate End_Sub ' ============================================================================== ' Case 8 Sub Aide(No%) If Object_Exists(No%)=0 Formulaire(No%,1,"Aide",600,300,0,0) No%=No%+1: Alpha No% :Top No%,20:Left No%,20 Caption No%,"Cette application Colle entre eux les fichiers *.bas sélectionnés dans l'ordre de la liste." No%=No%+1: Alpha No% :Top No%,35:Left No%,20 Caption No%,"Elle lit le fichier créé et dès qu'elle trouve '#include' met la ligne en commentaire" No%=No%+1: Alpha No% :Top No%,50:Left No%,20 Caption No%,"Puis, enregistre le fichier dans le dossier sélectionné avec le nom désigné et l'extension *.bas" No%=No%+1: Alpha No% :Top No%,80:Left No%,20:Font_bold No% :font_color No%,0,0,250 Caption No%,"Ajouter" No%=No%+1: Alpha No% :Top No%,100:Left No%,20 Caption No%,"Permet d'ajouter un fichier *.bas à la liste" No%=No%+1: Alpha No% :Top No%,130:Left No%,20:Font_bold No% :font_color No%,0,0,250 Caption No%,"Supprimer" No%=No%+1: Alpha No% :Top No%,150:Left No%,20 Caption No%,"Permet de supprimer l'item sélectionné dans la liste" No%=No%+1: Alpha No% :Top No%,180:Left No%,20:Font_bold No% :font_color No%,0,0,250 Caption No%,"Exécuter" No%=No%+1: Alpha No% :Top No%,200:Left No%,20 Caption No%,"Lance l'exécution du programme" No%=No%+1: Alpha No% :Top No%,230:Left No%,20:Font_bold No% :font_color No%,0,0,250 Caption No%,"Quitter" No%=No%+1: Alpha No% :Top No%,250:Left No%,20 Caption No%,"Ferme l'application" No%=No%+1: Alpha No% :Top No%,280:Left No%,20:Font_bold No% :font_color No%,0,0,250 Caption No%,"Aide" No%=No%+1: Alpha No% :Top No%,300:Left No%,20 Caption No%,"Vous y êtes !" Else Show No% End_if End_Sub ' ============================================================================== ' Case 203 Sub C203() If Variable("Output$")=0 Then Dim Output$ Open_Dialog 900 Filter 900,"*.bas|*.bas" Output$=File_Extract_Path$(File_Name$(900)) If Output$<>"_" Then Text 202,Output$ Delete 900 End_Sub ' ============================================================================== ' Case 204 Sub C204() If Variable("Nom$")=0 then Dim Nom$ If text$(206)<>"" Nom$=Text$(206) active 3:active 4:active 5:text 202,"":Hide 200 else If Message_Warning_Yes_No("Veuillez entrer un nom pour le nouveau fichier")<>1 Output$="":text 202,"":Hide 200 End_If End_If End_Sub ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ ' ¤ DATA MENU ¤ ' ¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ Sub Caption_Menu(R%,N%) Dim_local M$,x%,def$(N%) Restore Read M$ While M$<>"Menu"+str$(R%) Read M$ End_While For x%=1 to N% :Read def$(x%): caption R%+x%,def$(x%):Next x% End_Sub
Data "Menu1" Data "Nouveau" Data "Ajouter" Data "Supprimer" Data "Exécuter" Data "Quitter" Data menu6$ Data "Aide" @ tous,Il n'y a aucun fichier en auto-création, mis à part le nouveau source que l'on sauvegarde là où on veut... Edit : Une précision pour choisir un dossier, il faut sélectionner un fichier dans le dossier souhaité. Une autre solution imposerait l' utilisation de la dll de Klaus mais ce petit utilitaire le justifie t il ?
Dernière édition par ygeronimi le Mar 30 Oct 2012 - 16:22, édité 1 fois (Raison : Précision) | |
|