Page 1 sur 1

Récupération du Code ASM

Publié : ven. 27/févr./2004 4:23
par Guimauve
Je ne sais pourquoi mais depuis que j'ai installé la mise à jour vers la version 3.81 de PB, je ne suis plus en mesure de récupérer le code ASM généré par le compilateur. Pourquoi :!: :?:

Est-ce quelqu'un pourrait la procédure complète ?

Merci à l'avance.

Publié : ven. 27/févr./2004 6:55
par Anonyme2
Pour te simplifier la vie, voici un code de Marc Vitry (codeur français mais que l'on voit peu sur le forum anglais et pas du tout ici) qui génère le fichier assembleur ou la Dll et il renomme le fichier asm avec le nom du fichier pb.

Une amélioration de ce code serait d'utiliser la procédure de Fred pour récupérer le chemin d'installation de PureBasic.

Le code:

Code : Tout sélectionner

; -------------------------------------------------------------------------------------- 
; Compiler Tools 
;   1: To be include in PB Editor user tools 
;   or 
;   2: To be use as a simple tool 
;   Functions:  Create with PBCompiler Dll Or Asm files 
; 
;   Author:     Marc VITRY - PARIS FRANCE 
;               marc.vitry@wanadoo.fr 
; 
; -------------------------------------------------------------------------------------- 

;-Constants (WINDOW1) 

    #Window1 = 1 
    #W1Btn1 = 1 
    #W1Btn2 = 2 
    #W1Text1 = 3 
    #W1Option1 = 4 
    #W1Option2 = 5 
    #W1Check1 = 6 
    
    #MV_Checked = 1 
    #MV_RunWait =1 
    #MV_RunInvisible = 2 
    #MV_CreateDll = " /DLL" 
    #MV_createAsm = " /COMMENTED" 
    
    #Window1Flags = #PB_Window_ScreenCentered | #PB_Window_SystemMenu 

;- Variables definition 

    DefType.s SourceFileName, DestFileName, CompilFlag, CompilerPath, Compiler, Parameter 
    DefType.l RunOption 

;-Program Start 

    ;Check Program Parameter the Source File 
    SourceFileName = ProgramParameter() 

    If SourceFileName = ""       ;If not running as PB Tool request Pb File 
        SourceFileName = OpenFileRequester("PBasic Source File", "", "PBasic file |*.pb", 0 ) 

        If SourceFileName = "" 
            MessageRequester("Compile TO ...", "Source file not defined", #PB_MessageRequester_Ok | #MB_ICONINFORMATION) 
            End 
        EndIf 
    EndIf 


    If OpenWindow( #Window1, 0,0,390,137, #Window1Flags,"Compile To...") 

        If CreateGadgetList(WindowID(1)) 
            ButtonGadget(#W1Btn1,300,110 ,89,25,"Quit") 
            ButtonGadget(#W1Btn2,210,110 ,89,25,"Create") 
            TextGadget(#W1Text1,10,10 ,381,17,"Source File:") 
            OptionGadget(#W1Option1,240,40 ,153,25,"Generate a DLL") 
            OptionGadget(#W1Option2,240,70 ,153,25,"Generate an ASM") 
            CheckBoxGadget(#W1Check1,10,110,153,25,"Show Compiler window") 
        EndIf 

        SetGadgetText(#W1Text1,"Source File: " + SourceFileName) 
        ;SetGadgetState(#W1Check1, #MV_Checked) 
        RunOption = #MV_RunInvisible | #MV_RunWait 


        Repeat 
            Delay(1) 
            EventID.l = WaitWindowEvent() 

            Select EventID 

                Case #PB_EventGadget 

                    Select EventGadgetID() 
                        Case #W1Btn1                ;Quit Button 
                            CloseWindow(#Window1) 
                            End 
                        
                        Case #W1Btn2                ;Create Button 
                            If Len(CompilFlag) > 0 
                            
                                DeleteFile(DestFileName)                                        ;Delete the old file 
                                CompilerPath = "C:\Program Files\PureBasic\Compilers"           ; Your CompilerPath here !! 
                                Compiler = CompilerPath + "\PbCompiler.exe"                     ; The PB Compiler !! 
                                Parameter = Chr(34) + SourceFileName + Chr(34) + CompilFlag 
                                RunProgram(compiler , Parameter, CompilerPath, RunOption) 
                        
                                Select CompilFlag 
                                    Case #MV_CreateDll 
                                        CopyFile(CompilerPath + "\purebasic.dll", DestFileName) 
                                    Case #MV_CreateAsm 
                                        CopyFile(CompilerPath + "\purebasic.asm", DestFileName) 
                                EndSelect 
                            
                                If ExamineDirectory(0,GetPathPart(DestFileName),GetFilePart(DestFileName)) 
                                    If NextDirectoryEntry() = 1 
                                        MessageRequester("Compile TO ...", DestFileName + " has been created!", #PB_MessageRequester_Ok | #MB_ICONINFORMATION) 
                                    Else 
                                        MessageRequester("Compile TO ...", "Creation of " + DestFileName + " failled!", #PB_MessageRequester_Ok | #MB_ICONINFORMATION) 
                                    EndIf 
                                EndIf 
                            
                            Else 
                                MessageRequester("Compile TO ...", "Please select a file type before", #PB_MessageRequester_Ok | #MB_ICONINFORMATION)    
                            EndIf 

                        Case #W1Option1             ;Dll option checked 
                            If GetGadgetState(#W1Option1) = #MV_Checked 
                                CompilFlag = #MV_CreateDll 
                                DestFileName = Left(SourceFileName,Len(SourceFileName) - 3) + ".dll" 
                            EndIf 

                        Case #W1Option2             ;Asm option checked 
                            If GetGadgetState(#W1Option2) = #MV_Checked 
                                CompilFlag = #MV_CreateAsm 
                                DestFileName = Left(SourceFileName,Len(SourceFileName) - 3) + ".asm" 
                            EndIf 
                        
                        Case #W1Check1              ;Compiler Run Mode 
                            If GetGadgetState(#W1Check1) = #MV_Checked 
                                RunOption = #MV_RunWait 
                            Else 
                                RunOption = #MV_RunInvisible | #MV_RunWait 
                            EndIf 

                    EndSelect 

                Case #WM_LBUTTONUP     ;----LEFT BUTTON UP 
    
                Case #WM_LBUTTONDOWN   ;----LEFT BUTTON DOWN 

                Case #WM_MOUSEMOVE     ;----MOUSE MOVE 

            EndSelect 

        Until EventID = #PB_EventCloseWindow 

    EndIf 
End

Publié : sam. 28/févr./2004 0:26
par Guimauve
Wow !! Super de petit bout de code. :D

Merci Denis pour l'info.

Et merci à Marc s'il vient ici discrètement.

Petiti coucou

Publié : mar. 18/janv./2005 16:34
par Marc
Ok je ne viens pas souvent, mais dès maintenant je reviens au PB...

Alors à bientôt.