[Problem avec NextPackFile] problem isolé

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

bon ba c'est partie XD dsl si c'est un peut le bordel dans mon code mais chuis pressé de developer :p

le 1er fichier :

Code : Tout sélectionner

Global vers.f
back:
test=FileSize("data\config.ini") 
If test<0 
CreatePreferences("data\config.ini")
PreferenceComment("configuration géneral") 
PreferenceGroup("Géneral") 
WritePreferenceString("langue", "Français")
PreferenceComment("configuration de Chaos Editor") 
PreferenceGroup("Chaos Editor")
WritePreferenceString("Version", "0")
ClosePreferences()    
EndIf
test=InitNetwork()
ExamineIPAddresses()
ip$=IPString(NextIPAddress())
ip$ = ReplaceString(ip$, ".", ",",1 ) 
OpenPreferences("data\config.ini")
Result = PreferenceGroup("Géneral") 
lang$ = ReadPreferenceString("langue", "")  
If lang$ = "":End:EndIf
Result = PreferenceGroup("Chaos Editor") 
ClosePreferences()
Procedure test()
Static vers_str$
vers_str$="0"   
GetPrivateProfileString_("Chaos Editor", "Version", "Default", vers_str$, 255, "data\config.ini")
vers=ValF(vers_str$)
EndProcedure 
test()
If lang$ = "Français"
file_lang$="LaunchFR.txt"
ElseIf lang$ = "English"
file_lang$="LaunchENG.txt"
EndIf

Dim Mot.s(50)
OpenFile(1, "data\lang\"+file_lang$) 
;Mot(0) =
For x=0 To 50 Step 1  
Mot(x)=ReadString() 
Next 
CloseFile(1) 
 
DataSection
  incone:
  IncludeBinary "editeur.ico"
EndDataSection 


Global versdl$
Global file_dl_size$
Global file_dl$
Global last_value  
IncludeFile "Common.pb"
Open_Window_0()
gadget_text$=""
LoadImage(#Image1, "editeur.ico") 
Repeat
menu=0

     EventID = WaitWindowEvent() 
     
     Select EventID 
     
       Case #PB_Event_Gadget 
         Select EventGadgetID() 
           Case #Button_4 : menu=1
           Case #Button_6 : menu=2  
           Case #Button_2 : menu=3          
           Case #Button_8 : End
           Case #Button_11: CloseWindow(#Window_1):win_actif=0
           Case #Button_12
           curentstring$=GetGadgetText(1) 
           CloseWindow(#Window_2)
           win_actif=0
           If curentstring$<>lang$
           WritePrivateProfileString_("Géneral","langue",curentstring$,"data\config.ini")
           Goto back 
           EndIf
           Case #Button_10
           
           id_Thread=CreateThread(@ftp(),0)
                        
         EndSelect
         
        Case #PB_Event_CloseWindow  
          If EventWindowID()=#Window_0
           
           End
          ElseIf EventWindowID()=#Window_1 
           CloseWindow(#Window_1)
           win_actif=0
           KillThread(id_Thread)            
          ElseIf EventWindowID()=#Window_2
           win_actif=0 
           CloseWindow(#Window_2)  
          EndIf  

                
     EndSelect
     
     Select menu 
     
       Case 1
          If vers=0
          
          Else 
          RunProgram("data/CE.exe", "", "1")
          AddSysTrayIcon(#SysTrayIcon,WindowID(#Window_0) ,UseImage(#Image1))  
          EndIf  
          ;HideWindow(#Window_0,1)                 
       Case 2
         Open_Window_2()
         win_actif=2  
       Case 3 
         Open_Window_1() 
         win_actif=1  
                 
     EndSelect

     If win_actif=2
        UseWindow(#Window_2)
        ActivateWindow() 
     EndIf
     If win_actif=1
        UseWindow(#Window_1)
        ActivateWindow() 
     EndIf
     


Until menu=4 
puis le second "comon.pb"

Code : Tout sélectionner

Enumeration
  #Window_0
  #Window_1
  #Window_2
EndEnumeration

;- Gadget Constants
;
Enumeration
  #SysTrayIcon
  #Image1
  #Button_2
  #Image_0
  #Button_4
  #Button_6
  #Web_1
  #Web_2
  #Button_8
  #Text_0
  #Web_3
  #Frame3D_0
  #ProgressBar_1
  #Button_10
  #Button_11
  #Text_3
  #Panel_0
  #Text_8
  #Frame3D_3
  #Combo_1
  #Frame3D_4
  #Combo_2
  #Button_12
  #Message
  
  
  #INTERNET_SERVICE_FTP=1 
  #INTERNET_OPEN_TYPE_DIRECT=1 
  #FTP_PORT=21 
  #FTP_TRANSFER_ASCII=1 
  #FTP_TRANSFER_BINARY=2 
   
EndEnumeration
*Buffer.s
;- Fonts
;
Global FontID1
FontID1 = LoadFont(1, "Times New Roman", 10)
Global FontID2
FontID2 = LoadFont(2, "Times New Roman", 10)
;- Image Plugins
UsePNGImageDecoder()

;- Image Globals
Global Image0

;- Catch Images
Image0 = CatchImage(0, ?Image0)

;- Images
DataSection
Image0:
  IncludeBinary "C:\ChaosEditorImage.png"
EndDataSection

Procedure Open_Window_0()
  If OpenWindow(#Window_0 , 245, 100, 602, 412,  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Chaos Editor")
    If CreateGadgetList(WindowID())
      ButtonGadget(#Button_2, 85, 195, 145, 30, Mot(0), #PB_Button_Default)
      GadgetToolTip(#Button_2, Mot(1))
      SetGadgetFont(#Button_2, FontID1)
      ImageGadget(#Image_0, 20, 5, 250, 85, Image0)
      ButtonGadget(#Button_4, 85, 105, 145, 30, Mot(2), #PB_Button_Default)
      GadgetToolTip(#Button_4, Mot(3))
      SetGadgetFont(#Button_4, FontID1)
      ButtonGadget(#Button_6, 85, 150, 145, 30, Mot(4), #PB_Button_Default)
      GadgetToolTip(#Button_6, Mot(4))
      SetGadgetFont(#Button_6, FontID1)
      WebGadget(#Web_1, 290, 10, 290, 255, "http://argenweb.homedns.org/magicdream/chaosnews.php")
      WebGadget(#Web_2, 80, 295, 510, 95, "http://argenweb.homedns.org/magicdream/pubCE.html")
      ButtonGadget(#Button_8, 85, 240, 145, 30, Mot(5), #PB_Button_Default)
      GadgetToolTip(#Button_8, Mot(5))
      SetGadgetFont(#Button_8, FontID1)
      
    EndIf
  EndIf
EndProcedure

Procedure Open_Window_1()
  If OpenWindow(#Window_1   , 246, 149, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Mise a jour")
    If CreateGadgetList(WindowID())
      SetGadgetFont(#Text_0, FontID1)
      ;WebGadget(#Web_3, 20, 15, 245, 260, "about:blank")
      ;EditorGadget(#Message, 20, 15, 245, 260) 
      StringGadget(#Message, 20, 15, 245, 260, "", #PB_String_ReadOnly | #PB_String_Multiline)
      Frame3DGadget(#Frame3D_0, 305, 20, 270, 255, Mot(6))
      ProgressBarGadget(#ProgressBar_1, 325, 210, 235, 15, 0, 10)
      ButtonGadget(#Button_10, 325, 235, 100, 30, Mot(7))
      SetGadgetFont(#Button_10, FontID1)
      ButtonGadget(#Button_11, 455, 235, 100, 30, Mot(5))
      TextGadget(#Text_3, 330, 55, 215, 135, "")
      
      
    EndIf
  EndIf
EndProcedure

Procedure Open_Window_2()
  If OpenWindow(#Window_2, 404, 150, 300, 150,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Option") And CreateGadgetList(WindowID(0)) 
    If CreateGadgetList(WindowID())
      
      ;- Panel0
      PanelGadget(#Panel_0, 5, 5, 290, 140)
      AddGadgetItem(#Panel_0, -1, Mot(8))
      Frame3DGadget(#Frame3D_3, 13, 9, 255, 45, Mot(9))   
      ComboBoxGadget(1,48,24,200,100) 
      AddGadgetItem(1,-1,"Français")
      AddGadgetItem(1,-1,"English")      
      SetGadgetState(1,0)
      SetGadgetFont(1, FontID2) 
      ButtonGadget(#Button_12, 90, 80, 100, 25, Mot(10), #PB_Button_Default)
      GadgetToolTip(#Button_12, Mot(11))
      SetGadgetFont(#Button_12, FontID1)
      CloseGadgetList()


     
    EndIf
  EndIf
EndProcedure
Procedure get_file_size()  
Repeat
fsize=FileSize("data\"+file_dl$)
gadget_text$=""
gadget_text$=gadget_text$+"Version "+Str(vers)+" --> "+versdl$+Chr(10)+Chr(13)+file_dl$+" : "+Str(fsize)+"/"+file_dl_size$ 
SetGadgetText(#Text_3, gadget_text$)
last_value=fsize
Delay(1000) 
Until fsize>=Val(file_dl_size$)
EndProcedure
Procedure ftp()
;la c'est les varaible pour acceder au ftp alors jai remplacé le contenu par des *
Adresse$ = ******** ;<-- Serveur ici 
Login$ = ***** ;<-- Login ici 
Pass$ = ****** ; <-- Mot de passe ici
PWD$ = "/ibays/magicdream/"
gadget_text$=""
gadget_text$=gadget_text$+Mot(12)
SetGadgetText(#Message, gadget_text$) 
hInternet=InternetOpen_("FTP",1,"","",0)
gadget_text$=gadget_text$+"."
SetGadgetText(#Message, gadget_text$)
gadget_text$=gadget_text$+"."
SetGadgetText(#Message, gadget_text$)   
hConnect=InternetConnect_(hInternet,Adresse$,21,Login$,Pass$,1,0,0)
SetGadgetState(#ProgressBar_1,1)
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(13)
SetGadgetText(#Message, gadget_text$) 

gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(14)
SetGadgetText(#Message, gadget_text$)  
give = FtpSetCurrentDirectory_(hConnect,PWD$+"files")
test = FtpGetFile_(hConnect,"ceupdape.dat","ceupdape.dat",0,0,1,0) 
If test=1
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(15)
SetGadgetText(#Message, gadget_text$)
SetGadgetState(#ProgressBar_1,2)
OpenFile(1,"ceupdape.dat")
versdl$=ReadString() 
If ValF(versdl$)>vers 
nb_fichier=Val(ReadString())
gadget_avancement=Int(8/nb_fichier)
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(16)
SetGadgetText(#Message, gadget_text$)
For x=1 To nb_fichier
file_dl$=ReadString()
file_dl_size$=ReadString()
;id_Thread2=CreateThread(@get_file_size(),0)

FtpGetFile_(hConnect,file_dl$,"Data\"+file_dl$,0,0,2,0)
;If ReadString()="Unpack"
;nb_file=Val(ReadString()) 
;If OpenPack("Data\"+file_dl$)
;For x=1 To nb_file
;

;      Addresse=NextPackFile()
;      Debug Addresse 
;      NomFichier$=PeekS(addresse)
;      Debug NomFichier$ 
;      If CreateFile(2,"data\"+NomFichier$) 
;      While Addresse     
;      addresse=NextPackFile()
;      MessageRequester("", "1" )   
;      WriteData(Addresse,PackFileSize())
;      MessageRequester("", "1" )   
;      addresse=NextPackFile()
;      Wend   
;      CloseFile(2)
;      EndIf

    
;Next x
;ClosePack()
;DeleteFile("Data\"+file_dl$)  
;EndIf    
;EndIf
Dat$="data\"

If ReadString()="Unpack" 
      If OpenPack(Dat$+file_dl$) 
            Addresse=NextPackFile() 
            While Addresse      
               NomFichier$=PeekS(addresse) 
               addresse=NextPackFile() 
               If CreateFile(2,Dat$+NomFichier$) 
                  WriteData(Addresse,PackFileSize()) 
                  CloseFile(2) 
               EndIf 
               addresse=NextPackFile() 
            Wend    
        ClosePack() 
        DeleteFile(Dat$+file_dl$) 
      EndIf    
EndIf







SetGadgetState(#ProgressBar_1,gadget_avancement*x)
;KillThread(id_Thread2)
SetGadgetText(#Text_3, "")
Next x

;WritePrivateProfileString_("Chaos Editor","Version",versdl$,"data\config.ini")
CloseFile(1)
DeleteFile("ceupdape.dat")   
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(17)+Chr(13) + Chr(10)+Mot(18)
SetGadgetText(#Message, gadget_text$)
vers=ValF(versdl$)
Else
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(20)
SetGadgetText(#Message, gadget_text$) 
DeleteFile("ceupdape.dat")   
EndIf
SetGadgetState(#ProgressBar_1,10)
If hInternetConnect 
     InternetCloseHandle_(hInternetConnect) 
EndIf 
If hInternetSession 
     InternetCloseHandle_(hInternetSession) 
EndIf 
Else
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(21)
SetGadgetText(#Message, gadget_text$) 
EndIf  
;KillThread(id_Thread)
EndProcedure 
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Ton code ne m'apporte rien, ce n'est pas possible de l'utiliser et donc de se mettre dans les conditions du problème.
Pas accès au fichier concerné (le pack) donc impossible de tester. :cry:

Bon, je n'ai pas analysé ton code mais tu reçois le fichier depuis un serveur, as-tu regardé l'integrité du fichier par rapport à l'original (taille, tous les octets identiques etc ?)
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

ouai jai verfié et tout :p menfin c bizare que sa me fasse sa que pour les aplications en darkbasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

cha0s a écrit :ouai jai verfié et tout :p menfin c bizare que sa me fasse sa que pour les aplications en darkbasic
Je reste persuadé que ça ne doit avoir aucun rapport.
Tu parles d'applications, c'est des fichiers exe ? tu as essayé avec des exe différents et de taille sensiblement identiques à tes applications Dark ?

Tu as essayé de ne compacter qu'une seule application dark et de la décompresser ?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

jai teste des apli en db de 28k a 8mo et des apli autre de diferente taile rien n'y fait ..... seul les apli db font planter le log
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

J'ai compressé et décompressé les 2 fichiers DarkBasic sans aucun problème, les fichiers décompressés sont identiques aux originaux.

Il y a peut-être un problème dans le fichier compacté, peut-être lors de la compression.

Essaye le code suivant pour décompresser avec le debugger on et on aura le numéro du dernier fichier avant plantage, les valeurs des adresses etc. J'ai ajouté un test supplémentaire que voici car si adresse vaut 0, on va droit au plantage du type pas possible de lire l'adresse

Code : Tout sélectionner

If Addresse And CreateFile(2,Dat$+NomFichier$)
Lors du plantage avec le debugger on, celui-ci n'indique rien ?
vérifie aussi dans le code suivant si se sont bien tes variables pour le fichier créé etc

Code : Tout sélectionner

Dat$="data\"

If ReadString()="Unpack"
      If OpenPack(Dat$+file_dl$)
            Addresse=NextPackFile()
            Debug "Addresse = "+Str(Addresse)
            While Addresse     
               NomFichier$=PeekS(addresse)
               Debug "NomFichier$ = "+NomFichier$
               addresse=NextPackFile()
               Debug "Addresse = "+Str(Addresse)
               If Addresse And CreateFile(2,Dat$+NomFichier$)
                  NbFichier+1
                  Debug "Fichier en cours n°: "+ NbFichier
                  Debug "creation fichier : " + Dat$+NomFichier$
                  WriteData(Addresse,PackFileSize())
                  CloseFile(2)
               EndIf
               Debug "- - - - "
               addresse=NextPackFile()
               Debug "Addresse = "+Str(Addresse)
            Wend   
        ClosePack()
        DeleteFile(Dat$+file_dl$)
      EndIf   
EndIf
Ce code fonctionne parfaitement avec les fichiers Darkbasic que j'ai testé.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

ok merci je testerai une fois que jaurai finie le compacter que je suis en train d'ameliorer
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

jai compris le problem
jetai en train de recoder le lecteur de script

Code : Tout sélectionner

test = FtpGetFile_(hConnect,"ceupdape.dat","ceupdape.dat",0,0,1,0) 
If test=1
gadget_text$=gadget_text$+Chr(13) + Chr(10)+Mot(15)
SetGadgetText(#Message, gadget_text$)
SetGadgetState(#ProgressBar_1,2)
Readto = OpenFile(1,"ceupdape.dat")
versdl$=ReadString() 
If ValF(versdl$)>vers 
id_Thread2=CreateThread(@get_file_size(),0)

  Repeat
    ligne$=ReadString()
    Debug ligne$ 
    Select ligne$
    
      Case "dl"
      file_dl$=ReadString()
      dir$=ReadString()
      file_dl_size$=ReadString()
      FtpGetFile_(hConnect,file_dl$,dir$+file_dl$,0,0,2,0)
      Select ReadString()
        Case "End"
                
        Case "Unpack"
        Debug "unpack"
          If OpenPack(dir$+file_dl$) 
            Addresse=NextPackFile() 
            While Addresse      
               NomFichier$=PeekS(addresse) 
               addresse=NextPackFile() 
               If CreateFile(2,dir$+NomFichier$) 
                  WriteData(Addresse,PackFileSize()) 
                  CloseFile(2)
                  FileSeek(Readto) 
               EndIf 
               addresse=NextPackFile()
                
            Wend
   
          ClosePack() 
          DeleteFile(dir$+file_dl$) 
        EndIf
        Debug "unpack"    
        Debug ReadString()
      EndSelect
    EndSelect 
  Until ligne$="EndScript"
Debug "fini"  
KillThread(id_Thread2)

;WritePrivateProfileString_("Chaos Editor","Version",versdl$,"data\config.ini")
CloseFile(1)
et jai trouvé le problem c'est du au fait que je crée un fichier donc a la fin de la procedure de depacktage il lisait un ficheir inexistant du moin c'est ma theory seulement je n'arrive pas a replacer le poiteur de lecture vers mon premier fichier
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

(je n'ai pas lus tout le post ni examiner les sources, donc je suis désolé si je suis hors-sujet...)
seulement je n'arrive pas a replacer le poiteur de lecture vers mon premier fichier
C'est pas UserFile(#Fichier) que tu cherche ?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

efectivement c'est la comande que je cherchais :p merci
PS : c'est UseFile(#fichier)

DSL denis j'etait completement a coté de la plaque :lol:
Avatar de l’utilisateur
cederavic
Messages : 1338
Inscription : lun. 09/févr./2004 23:38
Localisation : Bordeaux

Message par cederavic »

Faute de frappe :oops:
bebou007
Messages : 79
Inscription : dim. 06/mars/2005 20:18

Message par bebou007 »

salut chaos normalement se que tu a dit devrais marche j'ai travailler aussi sur les fichier (lecture) et je me suis apersu que dans une procedure le fichier etais mal lu alors j'ai mit sa UseFile(#fichier) et voila mon probleme etais regler.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

lu bebou les forums sont petit :p (elle estait facile c'est vrai)
maintenant j'ai plus aucun problem et je vais enfin pouvoir finir ChaosEditor
bebou007
Messages : 79
Inscription : dim. 06/mars/2005 20:18

Message par bebou007 »

ben ouais il sont petit mais bon on est pas que tous les deux y en a plein d'autre nomrale moi je dit pure vas avec dbpro il devrais etre vendu enssemble enfin plus cher mais enssemble db pro pour les niveau jeu et pure pour le reste dll etc.
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

c'est vrai que depuis que j'ai pure je melange tout le temp les 2 languagues d'ailleur jai prevue de rendre chaoseditor compatible avec le moteur de PB le seul problem c'est que en pb ya pas de shader :p
Répondre