Creating a resident file using the c compiler

Everything else that doesn't fall into one of the other PB categories.
Denis
Enthusiast
Enthusiast
Posts: 778
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Creating a resident file using the c compiler

Post by Denis »

I'm wrinting a little asm lib (x86-x64) using simple functions.

I use some constants and I'm tring to create a resident file with c compiler (x86-x64) but without success.
The file is created, but it only represents a few bytes.
With ASM compiler all is Ok.

I have tried with a personnal code in my ASM tool, I have tried with ResidentCreator from StarBootics (with a bit changes).
My test file represents a res file of 6646 bytes with the ASM compiler and a res file of 44 bytes with C compiler.

I don't know whether this is a problem with the PB code or a PB bug.

here is the PB code with my constants

Code: Select all

;-------------------------------------------------------------------------------------------------
;-
;-;      Les erreurs
Enumeration 0 Step -1
      
      ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      ; les 2 constantes #Error__Success et #Error__Gadget
      ; doivent absolument rester dans cet ordre à cause des tests asm
      ; des librairies
      ;-.         ListiconGadget
      #Error__ListIcon_Success
      ; l'identifiant #gadget n'est pas un n'est pas un gadget valide
      #Error__ListIcon_Gadget   ; -1
      ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      
      ; l'API UpdateWindow a échouée
      #Error__UpdateWindow
      
      ;-.         les messages HDM
      ; les messages ont échoués
      #Error__HDM_GETITEMCOUNT
      
      ;-.         les messages LVM
      ; les messages ont échoués
      #Error__ListIcon_APPROXIMATEVIEWRECT
      #Error__ListIcon_ARRANGE
      #Error__ListIcon_CANCELEDITLABEL
      #Error__ListIcon_CREATEDRAGIMAGE
      #Error__ListIcon_DELETEALLITEMS
      #Error__ListIcon_DELETECOLUMN
      ;  -10 = LVM_DELETEITEM
      ; LVM_DELETEITEM
      #Error__ListIcon_Unable_To_Delete_Item
      #Error__ListIcon_EDITLABEL
      #Error__ListIcon_ENABLEGROUPVIEW
      ; #LVM_ENSUREVISIBLE
      #Error__ListIcon_Unable_To_Display_Item_Entirely_or_Partially
      ; #LVM_FINDITEM
      #Error__ListIcon_Unable_To_Find_Item
      #Error__ListIcon_GETBKCOLOR
      #Error__ListIcon_GETBKIMAGE
      #Error__ListIcon_GETCALLBACKMASK
      ; #LVM_GETCOLUMN
      #Error__ListIcon_Unable_To_Get_ColumnAttributes
      #Error__ListIcon_GETCOLUMNORDERARRAY
      ;  -20 = #Error__ListIcon_GETCOLUMNWIDTH
      #Error__ListIcon_GETCOLUMNWIDTH
      #Error__ListIcon_GETCOUNTPERPAGE
      #Error__ListIcon_GETEDITCONTROL
      #Error__ListIcon_GETEMPTYTEXT
      #Error__ListIcon_GETEXTENDEDLISTVIEWSTYLE
      #Error__ListIcon_GETFOCUSEDGROUP
      #Error__ListIcon_GETFOOTERINFO
      #Error__ListIcon_GETFOOTERITEM
      #Error__ListIcon_GETFOOTERITEMRECT
      #Error__ListIcon_GETFOOTERRECT
      ;  -30 = #Error__ListIcon_GETGROUPCOUNT
      #Error__ListIcon_GETGROUPCOUNT
      #Error__ListIcon_GETGROUPINFO
      #Error__ListIcon_GETGROUPINFOBYINDEX
      #Error__ListIcon_GETGROUPMETRICS
      #Error__ListIcon_GETGROUPRECT
      #Error__ListIcon_GETGROUPSTATE
      ; #LVM_GETHEADER
      #Error__ListIcon_Unable_To_Get_HeaderID
      #Error__ListIcon_GETHOTCURSOR
      #Error__ListIcon_GETHOTITEM
      #Error__ListIcon_GETHOVERTIME
      ;  -40 = #Error__ListIcon_GETIMAGELIST
      #Error__ListIcon_GETIMAGELIST
      #Error__ListIcon_GETINSERTMARK
      #Error__ListIcon_GETINSERTMARKCOLOR
      #Error__ListIcon_GETINSERTMARKRECT
      #Error__ListIcon_GETISEARCHSTRING
      ;#LVM_GETITEM
      #Error__ListIcon_Unable_To_Get_ItemAttributes
      ;#LVM_GETITEMCOUNT
      #Error__ListIcon_Unable_To_Get_ItemNumber
      #Error__ListIcon_GETITEMINDEXRECT
      ; LVM_GETITEMPOSITION
      #Error__ListIcon_Unable_To_Retrieve_ItemPosition
      ; LVM_GETITEMRECT
      #Error__ListIcon_Unable_To_Retrieve_Item_Bounding_Dimensions
      #Error__ListIcon_GETITEMSPACING
      #Error__ListIcon_GETITEMSTATE
      #Error__ListIcon_GETITEMTEXT
      #Error__ListIcon_GETNEXTITEM
      #Error__ListIcon_GETNEXTITEMINDEX
      #Error__ListIcon_GETNUMBEROFWORKAREAS
      #Error__ListIcon_GETORIGIN
      #Error__ListIcon_GETOUTLINECOLOR
      #Error__ListIcon_GETSELECTEDCOLUMN
      #Error__ListIcon_GETSELECTEDCOUNT
      #Error__ListIcon_GETSELECTIONMARK
      #Error__ListIcon_GETSTRINGWIDTH
      #Error__ListIcon_GETSUBITEMRECT
      #Error__ListIcon_GETTEXTBKCOLOR
      #Error__ListIcon_GETTEXTCOLOR
      #Error__ListIcon_GETTILEINFO
      #Error__ListIcon_GETTILEVIEWINFO
      #Error__ListIcon_GETTOOLTIPS
      #Error__ListIcon_GETTOPINDEX
      #Error__ListIcon_GETUNICODEFORMAT
      ; #LVM_GETVIEW
      #Error__ListIcon_Unable_To_Get_ViewMode
      #Error__ListIcon_GETVIEWRECT
      #Error__ListIcon_GETWORKAREAS
      #Error__ListIcon_HASGROUP
      #Error__ListIcon_HITTEST
      #Error__ListIcon_INSERTCOLUMN
      #Error__ListIcon_INSERTGROUP
      #Error__ListIcon_INSERTGROUPSORTED
      #Error__ListIcon_INSERTITEM
      #Error__ListIcon_INSERTMARKHITTEST
      #Error__ListIcon_ISGROUPVIEWENABLED
      #Error__ListIcon_ISITEMVISIBLE
      #Error__ListIcon_MAPIDTOINDEX
      #Error__ListIcon_MAPINDEXTOID
      #Error__ListIcon_MOVEGROUP
      #Error__ListIcon_MOVEITEMTOGROUP
      ; #LVM_REDRAWITEMS
      #Error__ListIcon_Unable_To_Redraw_ItemRange
      #Error__ListIcon_REMOVEALLGROUPS
      #Error__ListIcon_REMOVEGROUP
      ; #LVM_SCROLL
      #Error__ListIcon_Unable_To_Scroll
      #Error__ListIcon_SETBKCOLOR
      #Error__ListIcon_SETBKIMAGE
      #Error__ListIcon_SETCALLBACKMASK
      ; #LVM_SETCOLUMN
      #Error__ListIcon_Unable_To_Set_ColumnAttributes
      #Error__ListIcon_SETCOLUMNORDERARRAY
      #Error__ListIcon_SETCOLUMNWIDTH
      #Error__ListIcon_SETEXTENDEDLISTVIEWSTYLE
      #Error__ListIcon_SETGROUPINFO
      #Error__ListIcon_SETGROUPMETRICS
      #Error__ListIcon_SETHOTCURSOR
      #Error__ListIcon_SETHOTITEM
      #Error__ListIcon_SETHOVERTIME
      #Error__ListIcon_SETICONSPACING
      #Error__ListIcon_SETIMAGELIST
      #Error__ListIcon_SETINFOTIP
      #Error__ListIcon_SETINSERTMARK
      #Error__ListIcon_SETINSERTMARKCOLOR
      ; #LVM_SETITEM
      #Error__ListIcon_Unable_To_Set_ItemAttributes
      #Error__ListIcon_SETITEMCOUNT
      #Error__ListIcon_SETITEMINDEXSTATE
      #Error__ListIcon_SETITEMPOSITION
      #Error__ListIcon_SETITEMPOSITION32
      ; #LVM_SETITEMSTATE
      #Error__ListIcon_Unable_To_Set_ItemState
      #Error__ListIcon_SETOUTLINECOLOR
      #Error__ListIcon_SETSELECTEDCOLUMN
      #Error__ListIcon_SETSELECTIONMARK
      #Error__ListIcon_SETTEXTBKCOLOR
      #Error__ListIcon_SETTEXTCOLOR
      #Error__ListIcon_SETTILEINFO
      #Error__ListIcon_SETTILEVIEWINFO
      #Error__ListIcon_SETTILEWIDTH
      #Error__ListIcon_SETTOOLTIPS
      #Error__ListIcon_SETUNICODEFORMAT
      ; LVM_SETVIEW
      #Error__ListIcon_Unable_To_Set_ViewMode
      #Error__ListIcon_SETWORKAREAS
      #Error__ListIcon_SORTGROUPS
      #Error__ListIcon_SORTITEMS
      #Error__ListIcon_SORTITEMSEX
      #Error__ListIcon_SUBITEMHITTEST
      ; #LVM_UPDATE
      #Error__ListIcon_Unable_To_Update_an_Item
      ; mauvais paramètre
      #Error__ListIcon_Parameter_badValue
      #Error__ListIcon_Memory
      #Error__ListIcon_Empty
      #Error__ListIcon_Not_Enough_Items_To_Switch_Rows
      #Error__ListIcon_NoLoopback_available
      #Error__ListIcon_UnableToMoveItems
      #Error__ListIcon_bad_viewMode
      ; #Error__ListIcon_Parameter_badValue à laisser en dernier
      #Error__ListIcon_Internal_Function_Error
EndEnumeration

;-------------------------------------------------------------------------------------------------
EnumerationBinary 1
      ; affiche toujours la ligne déplacée, pas au dabut mais défini par le système
      #ListIcon__ShowRow
      ; bloque l'élément en haut ou bas de liste selon la fonction MoveRow Down or Up
      #ListIcon__ShowRow_NoLoopback
      ; affiche toujours la ligne déplacée en haut de la liste
      #ListIcon__ShowRowAtTop
      ; affiche toujours la ligne déplacée en bas de la liste
      #ListIcon__ShowRowAtBottom
      ; sélectionne la ligne déplacée, si d'autres lignes sont sélectionnées (multisélection),
      ; elles resteront également sélectionnées
      #ListIcon__SelectMovedRow
      ; sélectionne la ligne déplacée, toutes les autres seront désélectionnées
      #ListIcon__SelectOnlyMovedRow
EndEnumeration
#ListIcon__ShowRow_NoOption = -1
;-------------------------------------------------------------------------------------------------
; la fonction ListIcon_Get_View(gadget) retourne une des valeurs du mode d'affichage
; la fonction retourne 0 en cas de succès donc on ne peut pas utiliser ces valeurs
EnumerationBinary 1
      #ListIcon_View_LargeIcon     ; ->    #PB_Explorer_LargeIcon   --> LV_VIEW_ICON
      #ListIcon_View_Report        ; -->   #PB_Explorer_Report      --> LV_VIEW_DETAILS
      #ListIcon_View_SmallIcon     ; -->   #PB_Explorer_SmallIcon   --> LV_VIEW_SMALLICON
      #ListIcon_View_LIST          ; -->   #PB_Explorer_List        --> LV_VIEW_LIST
      #ListIcon_View_TILE          ; -->   n'exixte pas en PB       --> LV_VIEW_TILE
EndEnumeration
;-------------------------------------------------------------------------------------------------
;-;      Text alignment
; alignement du texte des colonnes de la listicon
#Listicon_TextAlign_left   = 0
#Listicon_TextAlign_right  = 1
#Listicon_TextAlign_center = 2
;-------------------------------------------------------------------------------------------------
;-;      Image List
; #define LVSIL_NORMAL            0
; #define LVSIL_SMALL             1
; #define LVSIL_STATE             2
; #define LVSIL_GROUPHEADER       3
#Listicon_ImageList_NORMAL      = 0     ; = #LVSIL_NORMALImage, List With large icons"
#Listicon_ImageList_SMALL       = 1     ; = #LVSIL_SMALL, Image List with small icons"
#Listicon_ImageList_STATE       = 2     ; = #LVSIL_STATE, Image List with state icons"
#Listicon_ImageList_GROUPHEADER = 3     ; = #LVSIL_GROUPHEADER, Image list for group header"
;-------------------------------------------------------------------------------------------------
#ListIcon_LVIS_CHECKED        =  $2000
#ListIcon_LVIS_UNCHECKED      =  $1000
;// Pas vraiment MS mais bon ..., pour être homogène
#ListIcon_LVIS_UNDROPHILITED = 0
#ListIcon_LVIS_UNFOCUSED     = 0
#ListIcon_LVIS_UNSELECTED    = 0
#ListIcon_LVIS_UNCUT         = 0


; EnumerationBinary 4
; ;       #ListIcon_Cut            ; = 4
; ;       #ListIcon_DragnDrop      ; = 8
; ;       #ListIcon_RowFocused     ; = 16
; ;       #ListIcon_STATEIMAGEMASK ; = 32
; EndEnumeration


EnumerationBinary 1
      #ListIcon_NoRotation
      #ListIcon_ShowRow
      #ListIcon_ShowRowAtTop
      #ListIcon_ShowRowAtBottom
      #ListIcon_SelectMovedRow
      #ListIcon_SelectOnlyMovedRow  ;32
      #ListIcon_ToggleCheckBoxes  ; Inverse l'état des CheckBox
      #ListIcon_SelectAll         ; sélectionne tous les éléments
      #ListIcon_UnselectAll       ; Désélectionne tous les éléments
      #ListIcon_Cut
      #ListIcon_DragnDrop
      #ListIcon_RowFocused
      #ListIcon_Checked
      #ListIcon_Selected
      #ListIcon_STATEIMAGEMASK
      ;4096
      ;8192
EndEnumeration

#LVIF_COLFMT  =  $00010000
;// masque de lecture écriture
;#ListIcon_Reading_Mask        = #LVIF_TEXT|#LVIF_IMAGE|#LVIF_PARAM|#LVIF_STATE|#LVIF_INDENT|#LVIF_GROUPID|#LVIF_NORECOMPUTE
#ListIcon_Reading_Mask        = #LVIF_COLFMT|#LVIF_COLUMNS|#LVIF_GROUPID|#LVIF_IMAGE|#LVIF_INDENT|#LVIF_PARAM|#LVIF_STATE|#LVIF_TEXT


#ListIcon_Item_WritingMask    = #ListIcon_Reading_Mask
#ListIcon_Reading_StateMask   = #LVIS_FOCUSED|#LVIS_SELECTED|#LVIS_CUT|#LVIS_DROPHILITED|#LVIS_OVERLAYMASK|#LVIS_STATEIMAGEMASK
#ListIcon_SubItem_WritingMask = #LVIF_TEXT|#LVIF_IMAGE


; #ListIcon_SelectAll           = $00000002
; #ListIcon_UnselectAll         = $00000004
#ListIcon_CheckAll            = #ListIcon_SelectAll
#ListIcon_UnCheckAll          = #ListIcon_UnselectAll
; #ListIcon_ToggleCheckBoxes    = $00000001 ; Inverse l'état des CheckBox
#ListIcon_CheckRow            =  %10000000000000000000000000000000
#ListIcon_UnCheckRow          =  %01000000000000000000000000000000
#ListIcon_ToggleSelectedRows  = #ListIcon_ToggleCheckBoxes
#ListIcon_SelectedRow         = #ListIcon_CheckRow
#ListIcon_UnSelectedRow       = #ListIcon_UnCheckRow
#ListIcon_CutAll              = #ListIcon_SelectAll
#ListIcon_UnCutAll            = #ListIcon_UnselectAll
#ListIcon_ToggleCutRows       = #ListIcon_ToggleCheckBoxes
#ListIcon_CutRow              = #ListIcon_CheckRow
#ListIcon_UnCutRow            = #ListIcon_UnCheckRow
#ListIcon_DragnDropAll        = #ListIcon_SelectAll
#ListIcon_UnDragnDropAll      = #ListIcon_UnselectAll
#ListIcon_ToggleDragnDropRows = #ListIcon_ToggleCheckBoxes
#ListIcon_DragnDropRow        = #ListIcon_CheckRow
#ListIcon_UnDragnDropRow      = #ListIcon_UnCheckRow
#ListIcon_FocusedRow          = #ListIcon_CheckRow
#ListIcon_UnFocusedRow        = #ListIcon_UnCheckRow


; #ListIcon_LVIS_FOCUSED = #LVIS_FOCUSED
; #ListIcon_LVIS_STATEIMAGEMASK = #LVIS_STATEIMAGEMASK
; #ListIcon_LVIS_SELECTED = #LVIS_SELECTED
; #ListIcon_LVIS_CUT = #LVIS_CUT
; #ListIcon_LVIS_DROPHILITED    = #LVIS_DROPHILITED

#ListIcon_ItemState_FOCUSED         = #LVIS_FOCUSED
#ListIcon_ItemState_SELECTED        = #LVIS_SELECTED
#ListIcon_ItemState_CUT             = #LVIS_CUT
#ListIcon_ItemState_DROPHILITED     = #LVIS_DROPHILITED

; #ListIcon_ItemState_GLOW            = #LVIS_GLOW
; #ListIcon_ItemState_ACTIVATING      = #LVIS_ACTIVATING
#ListIcon_ItemState_OVERLAYMASK     = #LVIS_OVERLAYMASK
#ListIcon_ItemState_STATEIMAGEMASK  = #LVIS_STATEIMAGEMASK
#LVIS_State_Flag                    = #LVIS_CUT|#LVIS_DROPHILITED|#LVIS_FOCUSED|#LVIS_SELECTED
#ListIcon_AllItemStates             = #LVIS_State_Flag|#LVIS_OVERLAYMASK|#LVIS_STATEIMAGEMASK

here is the PB code from StarBootics i use:

Code: Select all

; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Project name : ResidentCreator
; File Name : ResidentCreator.pb
; File version: 1.0.0
; Programming : OK
; Programmed by : uwekel
; Modified by : StarBootics
; Date : 25-03-2013
; Last Update : 23-02-2015
; PureBasic code : V5.31
; Platform : Windows, Linux, MacOS X
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


DeclareModule ResidentCreator
      Enumeration plateforme 1
            #x86
            #x86_C
            #x64
            #x64_C
      EndEnumeration
      
      
      Declare Initialize()
      Declare Run(Plateform)
      Declare Reset()
      
EndDeclareModule

Module ResidentCreator
      
      #Option_Unicode = "/UNICODE /RESIDENT"
      
      #Title = "Resident-Creator"
      
      Global GLB_Compiler_x86$   = "G:\PureBasic\PureBasic__Environnement_X86\Compilers\pbcompiler.exe"
      Global GLB_Compiler_x86_C$ = "G:\PureBasic\PureBasic__Environnement_X86\Compilers\pbcompilerc.exe"
      Global GLB_Compiler_x64$   = "G:\PureBasic\PureBasic__Environnement_X64\Compilers\pbcompiler.exe"
      Global GLB_Compiler_x64_C$ = "G:\PureBasic\PureBasic__Environnement_X64\Compilers\pbcompilerc.exe"
      
      Structure Instance
            Source.s
            Extension.s
            Name_x86.s
            Name_x86_C.s
            Name_x64.s
            Name_x64_C.s
            Path_Compiler_x86.s
            Path_Compiler_x86_C.s
            Path_Compiler_x64.s
            Path_Compiler_x64_C.s
            ResidentFile_x86.s
            ResidentFile_x86_C.s
            ResidentFile_x64.s
            ResidentFile_x64_C.s
            ; CompilerFile.s
            Command_x86.s
            Command_x86_C.s
            Command_x64.s
            Command_x64_C.s
            Argument_x86.s
            Argument_x86_C.s
            Argument_x64.s
            Argument_x64_C.s
      EndStructure
      
      Global Instance.Instance
      
      Procedure Initialize()
            
            ;get src filename
            Instance\Source = "G:\PureBasic\Projets\Denis\ASM_Generator\ASM_Generator\PureAsm\ListIconGadget_Ex\ListIconGadget_Ex_res.pb"
            
            ;make resident name
            Instance\Extension = "." + GetExtensionPart(Instance\Source)
            
            ;  Instance\CompilerFile = "pbcompiler.exe"
            Instance\Name_x86   = ReplaceString(GetFilePart(Instance\Source), Instance\Extension, "_x86.res")
            Instance\Name_x86_C = ReplaceString(GetFilePart(Instance\Source), Instance\Extension, "_x86_C.res")
            Instance\Name_x64   = ReplaceString(GetFilePart(Instance\Source), Instance\Extension, "_x64.res")
            Instance\Name_x64_C = ReplaceString(GetFilePart(Instance\Source), Instance\Extension, "_x64_C.res")
            
            ; Instance\ResidentFile_x86 = GetEnvironmentVariable("PUREBASIC_HOME") + #Residents + #Separator + Instance\Name_x86_A
            Instance\ResidentFile_x86   = "G:\PureBasic\PureBasic__Environnement_X86\Residents\"   + Instance\Name_x86
            Instance\ResidentFile_x86_C = "G:\PureBasic\PureBasic__Environnement_X86\Residents\"   + Instance\Name_x86_C
            Instance\ResidentFile_x64   = "G:\PureBasic\PureBasic__Environnement_X64\Residents\"   + Instance\Name_x64
            Instance\ResidentFile_x64_C = "G:\PureBasic\PureBasic__Environnement_X64\Residents\" + Instance\Name_x64_C
            
            
            Instance\Path_Compiler_x86   = GetPathPart(GLB_Compiler_x86$)
            Instance\Path_Compiler_x86_C = GetPathPart(GLB_Compiler_x86_C$)
            Instance\Path_Compiler_x64   = GetPathPart(GLB_Compiler_x64$)
            Instance\Path_Compiler_x64_C = GetPathPart(GLB_Compiler_x64_C$)
            
            Instance\Command_x86   = GLB_Compiler_x86$
            Instance\Command_x86_C = GLB_Compiler_x86_C$
            Instance\Command_x64   = GLB_Compiler_x64$
            Instance\Command_x64_C = GLB_Compiler_x64_C$
            
            Instance\Argument_x86   = #DQUOTE$ + Instance\Source + #DQUOTE$ + " " + #Option_Unicode + " " + #DQUOTE$ + Instance\ResidentFile_x86 + #DQUOTE$
            Instance\Argument_x86_C = #DQUOTE$ + Instance\Source + #DQUOTE$ + " " + #Option_Unicode + " " + #DQUOTE$ + Instance\ResidentFile_x86_C + #DQUOTE$
            Instance\Argument_x64   = #DQUOTE$ + Instance\Source + #DQUOTE$ + " " + #Option_Unicode + " " + #DQUOTE$ + Instance\ResidentFile_x64 + #DQUOTE$
            Instance\Argument_x64_C = #DQUOTE$ + Instance\Source + #DQUOTE$ + " " + #Option_Unicode + " " + #DQUOTE$ + Instance\ResidentFile_x64_C + #DQUOTE$
            
      EndProcedure
      
      
      Procedure Run(Plateform)
            Protected out1.s = ""
            
            Select Plateform
                        
                  Case #X86
                        If FileSize(Instance\ResidentFile_x86) >= 0 And Not DeleteFile(Instance\ResidentFile_x86)
                              MessageRequester(#Title, "The Resident-File could not be deleted!")
                              Reset()
                              End
                        Else
                              Debug "*****************"
                              Debug Instance\Command_x86
                              Debug Instance\Argument_x86
                              Debug Instance\Path_Compiler_x86
                              
                              p = RunProgram(Instance\Command_x86, Instance\Argument_x86 , Instance\Path_Compiler_x86, #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
                              If IsProgram(p)
                                    While ProgramRunning(p)
                                          If AvailableProgramOutput(p)
                                                out1.s + ReadProgramString(p) + #CRLF$
                                                Debug out1
                                          EndIf
                                    Wend
                                    CloseProgram(p)
                              EndIf
                              
                              MessageRequester(#Title + "  #X86", out$ +Chr(10) + out1)
                              
                        EndIf
                        
                        
                  Case #x86_C
                        If FileSize(Instance\ResidentFile_x86_C) >= 0 And Not DeleteFile(Instance\ResidentFile_x86_C)
                              MessageRequester(#Title, "The Resident-File could not be deleted!")
                              Reset()
                              End
                        Else
                              Debug "*****************"
                              Debug Instance\Command_x86_C
                              Debug Instance\Argument_x86_C
                              Debug Instance\Path_Compiler_x86_C
                              
                              p = RunProgram(Instance\Command_x86_C, Instance\Argument_x86_C, Instance\Path_Compiler_x86_C, #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
                              If IsProgram(p)
                                    While ProgramRunning(p)
                                          If AvailableProgramOutput(p)
                                                out1.s + ReadProgramString(p) + #CRLF$
                                                Debug out1
                                          EndIf
                                    Wend
                                    CloseProgram(p)
                              EndIf
                              
                              MessageRequester(#Title + "  #X86_C", out$ +Chr(10) + out1)
                              
                        EndIf
                        
                        
                  Case #X64
                        If FileSize(Instance\ResidentFile_x64) >= 0 And Not DeleteFile(Instance\ResidentFile_x64)
                              MessageRequester(#Title, "The Resident-File could not be deleted!")
                              Reset()
                              End
                        Else
                              Debug "*****************"
                              Debug Instance\Command_x64
                              Debug Instance\Argument_x64
                              Debug Instance\Path_Compiler_x64
                              
                              p = RunProgram(Instance\Command_x64, Instance\Argument_x64 , Instance\Path_Compiler_x64, #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
                              If IsProgram(p)
                                    While ProgramRunning(p)
                                          If AvailableProgramOutput(p)
                                                out1.s + ReadProgramString(p) + #CRLF$
                                          EndIf
                                    Wend
                                    CloseProgram(p)
                              EndIf
                              
                              MessageRequester(#Title+ "  #X64", out$ +Chr(10) + out1)
                              
                        EndIf
                        
                        
                  Case #X64_C
                        If FileSize(Instance\ResidentFile_x64_C) >= 0 And Not DeleteFile(Instance\ResidentFile_x64_C)
                              MessageRequester(#Title, "The Resident-File could not be deleted!")
                              Reset()
                              End
                        Else
                              Debug "*****************"
                              Debug Instance\Command_x64_C
                              Debug Instance\Argument_x64_C
                              Debug Instance\Path_Compiler_x64_C
                              
                              p = RunProgram(Instance\Command_x64_C, Instance\Argument_x64_C , Instance\Path_Compiler_x64_C, #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
                              If IsProgram(p)
                                    While ProgramRunning(p)
                                          If AvailableProgramOutput(p)
                                                out1.s + ReadProgramString(p) + #CRLF$
                                          EndIf
                                    Wend
                                    CloseProgram(p)
                              EndIf
                              
                              MessageRequester(#Title+ "  #X64_C", out$ +Chr(10) + out1)
                              
                        EndIf
                        
            EndSelect
            
      EndProcedure
      
      Procedure Reset()
            
            Instance\Source = ""
            Instance\Extension = ""
            Instance\Name_x86 = ""
            Instance\Name_x64 = ""
            Instance\Name_x64_C = ""
            Instance\Path_Compiler_x86 = ""
            Instance\Path_Compiler_x64 = ""
            Instance\Path_Compiler_x64_C = ""
            Instance\ResidentFile_x86 = ""
            Instance\ResidentFile_x64 = ""
            Instance\ResidentFile_x64_C = ""
            ; Instance\CompilerFile = ""
            
      EndProcedure
      
EndModule

ResidentCreator::Initialize()
ResidentCreator::Run(ResidentCreator::#x86)
ResidentCreator::Run(ResidentCreator::#x86_C)
ResidentCreator::Run(ResidentCreator::#x64)
ResidentCreator::Run(ResidentCreator::#x64_C)
ResidentCreator::Reset()

; <<<<<<<<<<<<<<<<<<<<<<<
; <<<<< END OF FILE <<<<<
; <<<<<<<<<<<<<<<<<<<<<<<
something escapes me...

Thanks for your help
A+
Denis