Comportement mystérieux

Programmation d'applications complexes
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Comportement mystérieux

Message par gansta93 »

Bonjour,

Dans ce code, j'ai un problème lors du traitement, si le fichier est vide. Même s'il y a erreur (comme dans le cas où le fichier est vide), la fenêtre qui indique que c'est en cour d'enregistrement s'ouvre quand même, et ça fait tout bugger après.
Si quelqu'un pouvait me dire où est le problème dans ce code, ça me rendrait vraiment service...
Ce code requière la lib PureTTS (à moins de mettre les fonctions concernées en commentaire).
voilà le code.

Code : Tout sélectionner

EnableExplicit

#Im_x = 800
#imy = 125
#bordure = 20

Global FileName.s, FileLength, WavFile.s, Name$
Define.s Dossier, Contenu
Define VoicesList, Voice

Procedure Start() ; Est appelé lorsque l'enregistrement du fichier démarre.
  If FileName And WavFile
    If OpenWindow(0, #PB_Ignore, #PB_Ignore, 800, 60, "Enregistrement de " + GetFilePart(FileName) + "...", #PB_Window_BorderLess | #WS_BORDER | #WS_SYSMENU | #WS_MINIMIZEBOX | #PB_Window_ScreenCentered, WindowID(1)) = 0 Or CreateGadgetList(WindowID(0)) = 0 Or CreateStatusBar(0, WindowID(0)) = 0
      TTSStop()
      MessageRequester("Erreur", "Impossible d'ouvrire la fenêtre.", #MB_ICONSTOP)
      SetActiveWindow(1)
    EndIf
    CreateImage(1, #im_x + 2 * #bordure, 25)
    LoadFont(0, "arial", 14, #PB_Font_Bold)
    StartDrawing(ImageOutput(1))
      DrawingFont(FontID(0))
      FrontColor(RGB(50, 150, 255))
      DrawingMode(1)
      DrawText(50, 2, "Enregistrement de " + GetFilePart(FileName) + "...")
    StopDrawing()
    ImageGadget(10, 0, 0, #Im_X + 2 * #Bordure, 20, ImageID(1))
    ProgressBarGadget(11, 350, 20, 100, 20, 0, 100, #PB_ProgressBar_Smooth | #PB_ProgressBar_Vertical)
    GadgetToolTip(11, "0% effectués")
    ButtonGadget(12, 350, 40, 100, 20, "Annuler")
    AddStatusBarField(WindowWidth(0))
    ResizeWindow(0, #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(0) + StatusBarHeight(0))
    DisableWindow(1, 1)
    HideWindow(1, 1)
    SetActiveWindow(0)
    Repeat
      Select WaitWindowEvent()
          
        Case #PB_Event_CloseWindow
          TTSStop()
          DeleteFile(WavFile)
          FreeGadget(10)
          FreeGadget(11)
          FreeGadget(12)
        CloseGadgetList()
        FreeStatusBar(0)
        CloseWindow(0)
        DisableWindow(1, 0)
        HideWindow(1, 0)
        SetActiveWindow(1)
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 12
            TTSStop()
            DeleteFile(WavFile)
            FreeGadget(10)
            FreeGadget(11)
            FreeGadget(12)
          CloseGadgetList()
          FreeStatusBar(0)
          CloseWindow(0)
          DisableWindow(1, 0)
          HideWindow(1, 0)
          SetActiveWindow(1)
      EndSelect
  EndSelect
  Delay(0)
ForEver
EndIf
EndProcedure

Procedure Position(Position) ; Définit la position pour la barre de progression d'enregistrement.
If FileName And WavFile
Define Diviser, Pourcents
Diviser = FileLength / Position
Pourcents = 100 / Diviser
SetGadgetState(11, Pourcents)
GadgetToolTip(11, Str(Pourcents) + "% effectués")
StatusBarText(0, 0, Str(Pourcents) + " effectués")
EndIf
EndProcedure

Procedure Stop() ; Est appelé lorsque l'enregistrement est terminé.
If FileName And WavFile
FreeGadget(10)
FreeGadget(11)
FreeGadget(12)
CloseGadgetList()
FreeStatusBar(0)
CloseWindow(0)
DisableWindow(1, 0)
HideWindow(1, 0)
SetActiveWindow(1)
EndIf
EndProcedure

If TTSInit( @Start(), @Stop(), @Position()) = 0
MessageRequester("Erreur", "L'environement de parole n'a pas pu être initialiser.", #MB_ICONSTOP)
End
EndIf

If OpenWindow(1, #PB_Ignore, #PB_Ignore, 600, 60, "Audio Texte", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_TitleBar) = 0 Or CreateGadgetList(WindowID(1)) = 0
MessageRequester("Erreur", "Impossible d'ouvrir la fenêtre.", #MB_ICONSTOP)
End
EndIf

TextGadget(0, 0, 0, 100, 20, "Dossier :")
StringGadget(1, 100, 0, 450, 20, "")
ButtonGadget(2, 550, 0, 50, 20, "...", #PB_Button_Default)
TextGadget(3, 0, 20, 150, 20, "Voix à utiliser :")
ListViewGadget(4, 150, 20, 450, 20)
ButtonGadget(5, 0, 40, 150, 20, "Commencer", #PB_Button_Right)
ButtonGadget(6, 150, 40, 150, 20, "Quitter", #PB_Button_Left)
For VoicesList = 0 To TTSEngCount()
AddGadgetItem (4, -1, TTSEngName(VoicesList))
Next
SetActiveGadget(1)
SetGadgetState(4, 0)
SetActiveGadget(1)
TTSSpeak("La voix " + TTSEngName(0) + " est actuellement sélectionné comme voix utilisée pour l'enregistrement. Pour la changer, allez dans la liste des voix, et sélectionnez une autre voix. La voix prononcera son nom lorsque vous changerez d'élément dans la liste.")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
TTSEnd()
End
Case #PB_Event_Gadget
Select EventGadget()
  Case 2
    SetGadgetText(1, PathRequester("Choisissez le dossier où sont stokés les fichiers textes :", ""))
  Case 4
    TTSStop()
    Voice = GetGadgetState(4)
    Name$ = GetGadgetText(4)
    TTSSelect(Voice)
    TTSSpeak(Name$)
  Case 5
    Dossier = GetGadgetText(1)
    If Dossier
      If Right(Dossier, 1) <> "\" : Dossier + "\" : EndIf
      If ExamineDirectory(0, Dossier, "*.txt")
        SetCurrentDirectory(Dossier)
        While NextDirectoryEntry(0)
          If DirectoryEntryType(0) = #PB_DirectoryEntry_File
            FileName = DirectoryEntryName(0)
            If DirectoryEntrySize(0) = 0
              MessageRequester("Information", "La taille du fichier '" + FileName + "' est de zéro octets. Sa conversion est donc inutile et ne sera donc pas faite.", #MB_ICONEXCLAMATION)
              FileName = "\\"
              Continue
            EndIf
            If ReadFile(0, FileName) = 0
              MessageRequester("Erreur", "Impossible d'ouvrire le fichier '" + FileName + "' pour le lire. Il ne sera donc pas converti en fichier audio.", #MB_ICONSTOP)
              FileName = "\\"
              Continue
            EndIf
            If FileName <> "\\" And FileName <> ""
              WavFile = ReplaceString(FileName, "txt", "wav", 1, 4)
              FileLength = Lof(0)
              Contenu = Space(FileLength)
              ReadData(0, @Contenu, FileLength)
              CloseFile(0)
              TTSSpeak(Contenu, WavFile)
            EndIf
          EndIf
        Wend
        FinishDirectory(0)
        MessageRequester("Information", "La conversion des fichiers est terminée.", #MB_ICONASTERISK)
      Else
        MessageRequester("Erreur", "Ne peut récupérer le contenu du dossier '" + Dossier + "'. Cela peut être du à l'absence de fichier de type '.txt' ou à l'inexistence de ce dossier. Si ce dossier existe, vérifiez que vous y avez accès.", #MB_ICONSTOP)
      EndIf
    Else
      MessageRequester("Erreur", "Veuillez sélectionner le dossier où sont stoqués les fichier textes (.txt) à convertire en fichier audio.", #MB_ICONEXCLAMATION)
    EndIf
  Case 6
    TTSEnd()
    End
EndSelect
EndSelect
Delay(0)
ForEver
End
Code edité pour l'indentation... qui me semble étrange au passage, j'ai du faire une annerie. :-)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Ben que le fichier soit vide ou pas tu excutes quand même le code, ta condition ne sert strictement à rien alors que fait -elle dans ton code?.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Pour ne pas créer de fichier wav vide, ça ne serait pas très propre... et je me dis que si ça bug pour cette erreur, ça pourait aussi bugger dans les autres.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'ai aussi un bug bizzard !!

mon lecteur de news, lit une image en mode debug, mais il fait n'importe quoi en mode normal !! 8O :?

c'est bizard non ?

je m'en suis rendu compte apres 3 jours d'acharnement !! :lol:

il ne fonctionne qu'avec debug en mode Pas a Pas !!
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Dobro a écrit :j'ai aussi un bug bizzard !!

mon lecteur de news, lit une image en mode debug, mais il fait n'importe quoi en mode normal !! 8O :?

c'est bizard non ?

je m'en suis rendu compte apres 3 jours d'acharnement !! :lol:

il ne fonctionne qu'avec debug en mode Pas a Pas !!
ça pourait être le même bug que pour moi ? parce que je voi pas trop...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

gansta93 a écrit :
Dobro a écrit :j'ai aussi un bug bizzard !!

mon lecteur de news, lit une image en mode debug, mais il fait n'importe quoi en mode normal !! 8O :?

c'est bizard non ?

je m'en suis rendu compte apres 3 jours d'acharnement !! :lol:

il ne fonctionne qu'avec debug en mode Pas a Pas !!
ça pourait être le même bug que pour moi ? parce que je voi pas trop...
oui !! car j'ecris un fichier "txt" en mode normal il fait 243 kilo
alors qu'en mode debug (pas a pas ), il fait 53 kilo , (53 kilo c'est la bonne taille !! :D)

j'ai beau cherché , je comprends vraiment pas ce qui se passe ! :?

je cherche encore jusqu'a demain, apres, je passe la main :lol:
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

J'ai réussi à ce que ça marche, mais ça n'en reste pas moins étrange.
Pour que ça marche, j'ai due, après la ligne 160

Code : Tout sélectionner

TTSSpeak(Contenu,WavFile)
Ajouter

Code : Tout sélectionner

FileName=""
WavFile=""
FileLength=0
Je ne voi pas pourquoi quand je ne faisais pas ça le MessageRequester apparaissait, puis disparaissait tout seul pour laisser place à la fenêtre de progression d'enregistrement du fichier vide (dont la bare de progression restait à zéro, et dont d'ailleur la bare d'état ne s'affich pas :lol: mais ça doit être moi ça lol). Lors que je cliquais sur Annuler/si je fermais la fenêtre, le programme ne répondait plus.
Voilà en gros ce que ça faisait pour ceux qui n'auraient aps tester.
Mais quelqu'un saurait-il pourquoi lorsque ces variables ne sont pas à null/0 la procédure de commencement d'enregistrement est quand même appelée même s'il y a le MessageRequester qui bloque le programme plus après le "Continue" qui doit faire passer à la séquence de boucle suivante ? Je trouve ça louche...
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

c'est peut etre lié à ce problème, cité ici :

http://www.purebasic.fr/english/viewtop ... highlight=

un correctif de la lib interne 'string' a été apporté aujourd'hui.
le lien en bas du post.

on sait jamais :)
Image
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci Flype, :D

j'ai mis a jour, mais ça deconne toujours !
c'est vraiment bizzard !! 8O

mon prg recupere le txt d'un attachmen sur un newsgroup
(une image en fait)
lorsque je fait executer le rapatriment du fichier (juste la partie image)

je la sauve dans un fichier text

en mode normal, on dirai qu'il ecrit des données suplementaires
le fichier text est 4 fois trop long avec repetition de certains bloc de données , ensuite le but est de decoder le uuencode,
de le sauver comme image puis de le recharger a l'ecran
forcement l'image deconne a l'affichage puisque le TXT est corrompu


par contre si j'execute pas a pas (avec des "Démarer" et des calldebugger ) , le fichier txt se sauvegarde niquel, et donc l'image s'affiche tres bien !!! 8O 8O



-----------------------------------------------------------------------------------
le problem c'est que les newsgroup changent avec le temps, donc un article precis pour l'exemple, ne reste pas valable tres longtemps !!
generalement 12 ou 24 haures max

(je test sur des news cochon :oops: , car il n'y a que la que je trouve des images uuencodé a l'ancienne , faut bien pouvoir tester hein :lol:

, car sinon on trouve de plus en plus de "Yenc" et de Base64 <-- je voulais m'attaquer a ça apres :D )

bon pis le temps que je perds a regarder les images je bosse pas non plus :lol: :lol:


bon il y a quand meme un Vrais probleme avec PureBasic je pense !! :?
poshu
Messages : 1138
Inscription : sam. 31/juil./2004 22:32

Message par poshu »

tu a threadé ton programme?
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

poshu a écrit :tu a threadé ton programme?
ben non ! 8O
pourquoi c'est obligatoire ? 8O

cela n'explique pas la difference de comportement entre Mode Debug/on/off

8O

en fait! j'ai une boucle While-wend, qui attends et ...............
je vais poster mon listing ce sera plus simple :D

pour que ça marche chez vous faudra mettre votre Login et pass

a l'endroit indiqué: " ************* "
mais a part ça rien d'autre a faire que de lancer soit en mode Debug
en cliquant sur "Démaré" jusqu'a la fin du prg
soit sans mode debug, et la ça deconne :D (c'est marrant en principe c'est l'inverse ) !!

Code : Tout sélectionner

; ============CHANGER ICI=================== 
IP$   = "news.wanadoo.fr"  ; votre prestataire (news.free.fr)
login$="*********"  ; votre login chez ce prestataire
pass$="******"  ; votre pass 
nom_group$=" alt.binaries.pictures.erotica.exhibitionism " ; le nom du groupe qu'on va lire
n_art$="592000" ; ici le numero de l'article qu'on va lire  !!! 
  ; ============CHANGE HERE =================== 

en principe le numero de l'article est toujours bon
il sagit d'une fille devetue, mais cela reste "correct" (on en vois plus pendant les pubs !! :D )

si toutefois l'article n'etait pas bon prenez votre lecteur de news habituel
pour choisir un group et un numero d'article (generalement indiqué en bout de ligne ) ou une image se trouve dedans elle doit imperativement
commencer par "Begin 644" ou "begin 666" ce sera la garantie qu'il sagit d'une image "uuencodé" (il existe en gros 3 style d'encodage)
et le plus repandu est "Yenc" et "Base64" :D


voici mon listing, comparez le fichier text generé en mode normal
et en mode debug (vous cliquez sur "Démarer" jusqu'a la fin !! )

le prg genere 2 fichiers
un "uucode.txt" c'est l'image decodé en format txt
un "uucode.jpg " c'est l'image qui est créé d'apres "uucode.txt"

on peu visuellement apercevoir le problem car lorsque ça marche (mode debug) l'image est niquel , sinon (mode run normal sans debug)
l'image est "bariolé" !!


voici le listing :

Code : Tout sélectionner

; Marche sous debug mais pas en normal !!!


Declare.l UUDecode_2()
; Par Dobro (routine uudecode : Lna)
UseJPEGImageDecoder()

Structure adresse_uu
  P.B[4]
EndStructure

Global buf$
CallDebugger

buffer2$=""

  
Buffer.d = AllocateMemory(500000) 
If InitNetwork() = 0 
  MessageRequester("Error", "peux pas initializer le reseau", 0) 
  End 
EndIf 
  
Port = 119
envoi$=Chr(13)+Chr(10) 
  



  ; ============CHANGER ICI=================== 
IP$   = "news.wanadoo.fr"  ; votre prestataire (news.free.fr)
login$="*********"  ; votre login chez ce prestataire
pass$="*******"  ; votre pass 
nom_group$=" alt.binaries.pictures.erotica.exhibitionism " ; le nom du groupe qu'on va lire
n_art$="592000" ; ici le numero de l'article qu'on va lire  !!! 
  ; ============CHANGE HERE =================== 





ConnectionID = OpenNetworkConnection(IP$, Port) 
If ConnectionID  
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000)
  a$ = PeekS(Buffer.d,ab.d)  
  
  ; ************************************************************************************
  ; ************************************************************************************
  ;                    LOGIN sur compte privé !!
  SendNetworkString(ConnectionID, "AUTHINFO USER "+login$+envoi$)  
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000)
  b.s = PeekS(Buffer.d,ab.d)   
  code_erreur$ = (StringField(b.s, 1, " ") ) 
  Debug code_erreur$
  
  SendNetworkString(ConnectionID, "AUTHINFO PASS "+pass$+envoi$) 
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000)
  b.s = PeekS(Buffer.d,ab.d)   
  code_erreur$ = (StringField(b.s, 1, " ") )
  Debug code_erreur$
  
  
  
  ; ************************************************************************************
  ; ************************************************************************************
  ; ; *** recupere la liste des groupes ***
  ; 
  ; SendNetworkString(ConnectionID, "LIST"+envoi$) 
  ; ab.d= ReceiveNetworkData(ConnectionID, Buffer.d  , 500000)
  ; b.s = PeekS(Buffer.d ,ab.d)  
  ; nbr_ligne = CountString( b.s, Chr(13))  
  ; For i=1 To nbr_ligne
  ; liste$ = (StringField(b.s, i, Chr(13)) ):liste$=Mid(liste$,2,Len(liste$))
  ; Debug liste$
  ; Next i   
  ;************************************************************************************
  ;                  LECTURE D'un GROUPe PRECISEMENT
  ;************************************************************************************
  ; permet de sélectionner le groupe de discussion désiré,
  ; par exemple « alt.pictures.monsters »,
  ; la commande retourne « 211 » (en cas de réussite) 
  ; suivi du nombre d'articles dans le groupe 
  ; et les indices du premier et du dernier article.
  
  ;nom_group$=" fr.comp.sys.atari "
  
  SendNetworkString(ConnectionID, "GROUP"+nom_group$+envoi$) 
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000)
  b.s = PeekS(Buffer.d,ab.d)  
  
  
  code_erreur$ = (StringField(b.s, 1, " ") )
  nbr_article$ = (StringField(b.s, 2, " ") )
  premier_art$ = (StringField(b.s, 3, " ") )
  dernier_art$ = (StringField(b.s, 4, " ") )
  
  Debug  nom_group$
  Debug "code erreur "+code_erreur$ ; si 211 tout vas bien sinon erreur si code = 
  Debug "nombre d'article dans le groupe "+ nbr_article$
  Debug  "index du premier article "+premier_art$
  Debug "index du dernier article "+dernier_art$ 
  Debug " numero d'article demandé "+n_art$
  ; ************************************************************************************
  ;                AFFICHE L'ARTICLE
  ; ************************************************************************************
  
  ; AFFICHE l'ENTETE DU MESSAGE
  corp=0
  
  
  
  numero_article=Val(n_art$) ; c'est le numero du premier article renvoyé par la commande ci-dessus
  SendNetworkString(ConnectionID, "ARTICLE "+Str(numero_article)+envoi$)  
  ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000) 
  
  
  
  ;  *************** ensuite regarde la presence d'une image uuencodé *****************
  ; si on trouve une image uuencodé , on extrait le fammeux code
  ; qui est compris entre "M_]C_X``02" et "_]D"
  ; pour le sauver dans un fichier texte au nom de "uucode.txt"
  ; ******************************************************************************
  
  corp=0
  ok=0
  
  While  corp$<>"quitte" ; il reste des données a lire 
    compt=compt+1
    ab.d= ReceiveNetworkData(ConnectionID, Buffer.d , 500000) 
    Debug ab.d
    b.s = PeekS(Buffer.d,-1,#PB_Ascii ) 
    nbr_ligne = CountString( b.s, Chr(10))
    CallDebugger
    Debug "nombre de ligne= "+Str(nbr_ligne)
    For i=1 To nbr_ligne 
      message$ = (StringField(b.s, i, Chr(10)) )
      Debug  message$ 
      
      If  Left (message$,40)="423 No such article number in this group" ; 
        MessageRequester("erreur","pas trouvé l'article n°= " +premier_art$+" dans le group",#PB_MessageRequester_Ok ) 
        End
      EndIf   
      
      
      
      If  Left (message$,7)="Lines: " ; entete de jpg uuencodé presente
      nbr_ligne2=Val(Mid(message$,7,Len(message$)))-1
    EndIf  
      
      ; If  Left (message$,9)="begin 644" ; entete de jpg uuencodé presente
        ; image=1 ; on a trouvé une image
      ; EndIf  
      
      If  Left (message$,12)="M_]C_X``02D9" ; entete de jpg uuencodé presente
        corp$="boss" ; indique que nous allons prendre les données d'une image uuencodé
        ok=1 
      EndIf
      
      If ok=1 
            boite$=boite$+message$ 
            If  Left(message$, 3)= "_]D"   Or  Left(message$, 3)="end"  ;fin de Jpg trouvé 
              corp$="quitte" 
              i=nbr_ligne 
              
              CloseNetworkConnection(ConnectionID) 
              Delay(5)
         ; Goto suit ; on quitte le traitement
        EndIf 
      EndIf
      
      
      ; If corp$="boss"
        ; Resultat = OpenFile(1, "uucode.txt") ; on sauve dans un ficher txt
        ; FileSeek(1, Lof(1) ) ; va a la fin du fichier
        ; WriteString(1, message$)
        ; CloseFile(1)  
      ; EndIf    
      
      message$=""
    Next i    
  Wend   
  suit:
  
  If ok=1
  Resultat = OpenFile(1, "uucode.txt") ; on sauve dans un ficher txt
  WriteString(1, boite$)
  CloseFile(1)  
  boite$=""
  ok=0
EndIf

  
  
  
  
  ; If ok=0 And image=1
    ; MessageRequester("Erreur","trouvé une image mais pas uuencodé",#PB_MessageRequester_Ok ) 
  ; EndIf
  ; 
  ; If ok=0 And image=0
    ; MessageRequester("Erreur","Pas trouvé d'image uuencodé",#PB_MessageRequester_Ok )
    ; End
  ; EndIf
  ; 
  
  ; ****************************************************************************
  ; nous allons decoder le uuencode (Merci Lna) , puis sauver l'image sous le nom uucode.jpg
  ; ***************************************************************************************
buffer2$=""
CallDebugger
  OpenFile(1,"uucode.txt")
  OpenFile(2,"uucode.jpg")
  
  While  Eof(1)=0  
    phrase$=ReadString(1) 
    buf$=(Right(phrase$,Len(phrase$)-1)) ; on retire le premier caractere
    long_binaire=UUDecode_2() 
    WriteData(2,@buf$,long_binaire)  
  Wend 
  Delay(5)
  CloseFile(1)
  CloseFile(2)
  
  
  ; *****************************************************************************
  ;          AFFICHAGE DE l'image en clair dans une fenetre
  ; *****************************************************************************
  
  
  If OpenWindow(0, 0, 0, 1024, 768, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
    If LoadImage(0, "uucode.jpg")    ; changez le 2ème paramètre en indiquant le chemin/fichier contenant votre image
      ImageGadget(0,  0, 0, 1024,768, ImageID(0))                      ; imagegadget standard 
    EndIf
    Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
  EndIf  
 
Else 
  MessageRequester("PureBasic - Client", "Can't find the server (Is it launched ?).", 0) 
EndIf 

End   


; ************* Procedures a Lna *****************************
Procedure.l UUDecode_2()
  Protected a1.l,a2.l,a3.l,a4.l,format.l,lLoop.l 
  format=Len(buf$)
  buf$+"   "            ; SOUPAPE DE SECURITE POUR L'AVENIR : PRENDRA LA VALEUR $00 UNE FOIS 32 - 32 
  *p_read.adresse_uu=@buf$
  *p_read_num.adresse_uu=@a1
  *p_write.adresse_uu=@buf$
  
  For lLoop=1 To format Step 4 
    a1.l=(*p_read\P[0]-32) & %111111
    a2.l=(*p_read\P[1]-32) & %111111
    a3.l=(*p_read\P[2]-32) & %111111
    a4.l=(*p_read\P[3]-32) & %111111 
    a1<<18
    a2<<12
    a3<<6 
    a1|a2|a3|a4 
    *p_write\P[0]=*p_read_num\P[2]
    *p_write\P[1]=*p_read_num\P[1]
    *p_write\P[2]=*p_read_num\P[0] 
    *p_read+4
    *p_write+3 
  Next lLoop 
  ProcedureReturn format / 4 * 3
EndProcedure


gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Erf, quand j'active la gestion des threads pour mon code, ça me met une boîte de dialogue POLINK qui dit "POLINK: error: Unresolved external symbol '_PB_StringBasePosition'". Comment ça se fait ? en plus, appart en commentant toutes les lignes une par une, on peut pas savoir d'où sa vien... :?
J'ai activé la gestion des thread parce que j'ai cru comprendre que PureTTS en utilisait (quand le code marchait pas, j'ai regardé toutes les libs utilisées) et la liste de la lib Thread contenait un élément.
Répondre