PureBasic

Forums PureBasic
Nous sommes le Mar 19/Jan/2021 10:39

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 12 messages ] 
Auteur Message
 Sujet du message: Code ne compilant pas
MessagePosté: Sam 19/Sep/2015 19:25 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2332
Localisation: 50200 Coutances
Bonsoir à tous, je me demande pourquoi ce code semble ne pas compiler.

Pouvez-vous m'aider à trouver la solution.
Code:
Procedure ErrorHandler()

  ErrorMessage$ = "A program error was detected:" + Chr(13)
  ErrorMessage$ + Chr(13)
  ErrorMessage$ + "Error Message:   " + ErrorMessage()      + Chr(13)
  ErrorMessage$ + "Error Code:      " + Str(ErrorCode())    + Chr(13) 
  ErrorMessage$ + "Code Address:    " + Str(ErrorAddress()) + Chr(13)

  If ErrorCode() = #PB_OnError_InvalidMemory   
    ErrorMessage$ + "Target Address:  " + Str(ErrorTargetAddress()) + Chr(13)
  EndIf

  If ErrorLine() = -1
    ErrorMessage$ + "Sourcecode line: Enable OnError lines support to get code line information." + Chr(13)
  Else
    ErrorMessage$ + "Sourcecode line: " + Str(ErrorLine()) + Chr(13)
    ErrorMessage$ + "Sourcecode file: " + ErrorFile() + Chr(13)
  EndIf

  ErrorMessage$ + Chr(13)
  ErrorMessage$ + "Register content:" + Chr(13)

  CompilerSelect #PB_Compiler_Processor
    CompilerCase #PB_Processor_x86
      ErrorMessage$ + "EAX = " + Str(ErrorRegister(#PB_OnError_EAX)) + Chr(13)
      ErrorMessage$ + "EBX = " + Str(ErrorRegister(#PB_OnError_EBX)) + Chr(13)
      ErrorMessage$ + "ECX = " + Str(ErrorRegister(#PB_OnError_ECX)) + Chr(13)
      ErrorMessage$ + "EDX = " + Str(ErrorRegister(#PB_OnError_EDX)) + Chr(13)
      ErrorMessage$ + "EBP = " + Str(ErrorRegister(#PB_OnError_EBP)) + Chr(13)
      ErrorMessage$ + "ESI = " + Str(ErrorRegister(#PB_OnError_ESI)) + Chr(13)
      ErrorMessage$ + "EDI = " + Str(ErrorRegister(#PB_OnError_EDI)) + Chr(13)
      ErrorMessage$ + "ESP = " + Str(ErrorRegister(#PB_OnError_ESP)) + Chr(13)

    CompilerCase #PB_Processor_x64
      ErrorMessage$ + "RAX = " + Str(ErrorRegister(#PB_OnError_RAX)) + Chr(13)
      ErrorMessage$ + "RBX = " + Str(ErrorRegister(#PB_OnError_RBX)) + Chr(13)
      ErrorMessage$ + "RCX = " + Str(ErrorRegister(#PB_OnError_RCX)) + Chr(13)
      ErrorMessage$ + "RDX = " + Str(ErrorRegister(#PB_OnError_RDX)) + Chr(13)
      ErrorMessage$ + "RBP = " + Str(ErrorRegister(#PB_OnError_RBP)) + Chr(13)
      ErrorMessage$ + "RSI = " + Str(ErrorRegister(#PB_OnError_RSI)) + Chr(13)
      ErrorMessage$ + "RDI = " + Str(ErrorRegister(#PB_OnError_RDI)) + Chr(13)
      ErrorMessage$ + "RSP = " + Str(ErrorRegister(#PB_OnError_RSP)) + Chr(13)
      ErrorMessage$ + "Display of registers R8-R15 skipped."         + Chr(13)

    CompilerCase #PB_Processor_PowerPC
      ErrorMessage$ + "r0 = " + Str(ErrorRegister(#PB_OnError_r0)) + Chr(13)
      ErrorMessage$ + "r1 = " + Str(ErrorRegister(#PB_OnError_r1)) + Chr(13)
      ErrorMessage$ + "r2 = " + Str(ErrorRegister(#PB_OnError_r2)) + Chr(13)
      ErrorMessage$ + "r3 = " + Str(ErrorRegister(#PB_OnError_r3)) + Chr(13)
      ErrorMessage$ + "r4 = " + Str(ErrorRegister(#PB_OnError_r4)) + Chr(13)
      ErrorMessage$ + "r5 = " + Str(ErrorRegister(#PB_OnError_r5)) + Chr(13)
      ErrorMessage$ + "r6 = " + Str(ErrorRegister(#PB_OnError_r6)) + Chr(13)
      ErrorMessage$ + "r7 = " + Str(ErrorRegister(#PB_OnError_r7)) + Chr(13)
      ErrorMessage$ + "Display of registers r8-R31 skipped."       + Chr(13)

  CompilerEndSelect

  MessageRequester("OnError example", ErrorMessage$)
  End

EndProcedure

OnErrorCall(@ErrorHandler())

Structure MyStringBuilder
 
  MyStringBuilderAllocateMemory.B
  *MyStringBuilderMemoryID
  MyStringBuilderSize.I
  MyStringBuilderRemaining.I
  MyStringBuilderPosition.I
 
EndStructure

Global MyStringBuilder.MyStringBuilder

Procedure.B StringBuilderClearString()
 
  If MyStringBuilder\MyStringBuilderAllocateMemory = #True And MyStringBuilder\MyStringBuilderMemoryID <> 0
   
    FreeMemory(MyStringBuilder\MyStringBuilderMemoryID)
   
    MyStringBuilder\MyStringBuilderAllocateMemory = #False
    MyStringBuilder\MyStringBuilderMemoryID = 0
    MyStringBuilder\MyStringBuilderSize = 0
    MyStringBuilder\MyStringBuilderRemaining = 0
    MyStringBuilder\MyStringBuilderPosition = 0
   
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
 
EndProcedure

Procedure.I StringBuilderAddString(String.s)
 
  If MyStringBuilder\MyStringBuilderAllocateMemory = #True And MyStringBuilder\MyStringBuilderMemoryID <> 0
   
    If Len(String.s) > MyStringBuilder\MyStringBuilderRemaining.I
     
      MyStringBuilder\MyStringBuilderMemoryID = ReAllocateMemory(MyStringBuilder\MyStringBuilderMemoryID, MemorySize(MyStringBuilder\MyStringBuilderMemoryID) + Len(String.s) * 10)
     
      If MyStringBuilder\MyStringBuilderMemoryID <> 0

        MyStringBuilder\MyStringBuilderRemaining = MemorySize(MyStringBuilder\MyStringBuilderMemoryID) - MyStringBuilder\MyStringBuilderPosition
        MyStringBuilder\MyStringBuilderSize = MemorySize(MyStringBuilder\MyStringBuilderMemoryID)
       
        OctetsWrite = PokeS(MyStringBuilder\MyStringBuilderMemoryID + MyStringBuilder\MyStringBuilderPosition, String.s)
       
        If OctetsWrite > 0
         
          MyStringBuilder\MyStringBuilderRemaining - OctetsWrite
          MyStringBuilder\MyStringBuilderPosition + OctetsWrite
         
          ProcedureReturn MyStringBuilder\MyStringBuilderRemaining
         
        Else
          ProcedureReturn -1
         
        EndIf
       
      Else
        ProcedureReturn -1
       
      EndIf
     
    Else
     
      OctetsWrite = PokeS(MyStringBuilder\MyStringBuilderMemoryID + MyStringBuilder\MyStringBuilderPosition, String.s)
       
        If OctetsWrite > 0
         
          MyStringBuilder\MyStringBuilderRemaining - OctetsWrite
          MyStringBuilder\MyStringBuilderPosition + OctetsWrite
         
          ProcedureReturn MyStringBuilder\MyStringBuilderRemaining
         
        Else
          ProcedureReturn -1
         
        EndIf
       
    EndIf
   
  Else
   
    MyStringBuilder\MyStringBuilderMemoryID = AllocateMemory(Len(String.s) * 10)
   
    If MyStringBuilder\MyStringBuilderMemoryID <> 0
     
      MyStringBuilder\MyStringBuilderAllocateMemory = #True
      MyStringBuilder\MyStringBuilderRemaining = MemorySize(MyStringBuilder\MyStringBuilderMemoryID)
      MyStringBuilder\MyStringBuilderSize = MemorySize(MyStringBuilder\MyStringBuilderMemoryID)
     
      OctetsWrite = PokeS(MyStringBuilder\MyStringBuilderMemoryID, String.s)
     
      If OctetsWrite > 0
       
        MyStringBuilder\MyStringBuilderRemaining - OctetsWrite
        MyStringBuilder\MyStringBuilderPosition + OctetsWrite
       
        ProcedureReturn MyStringBuilder\MyStringBuilderRemaining
       
      Else
        ProcedureReturn -1
       
      EndIf
     
    Else
      ProcedureReturn -1
     
    EndIf
   
  EndIf
 
EndProcedure

Procedure.S StringBuilderGetString()
 
  If MyStringBuilder\MyStringBuilderAllocateMemory = #True And MyStringBuilder\MyStringBuilderMemoryID <> 0
    ProcedureReturn PeekS(MyStringBuilder\MyStringBuilderMemoryID)
   
  Else
    ProcedureReturn ""
   
  EndIf
 
EndProcedure

Abc$ = "A"

For I = 1 To 1000000
  StringBuilderAddString(Abc$)
Next

MessageRequester("", "Ok")

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.72 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Sam 19/Sep/2015 19:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6926
Localisation: IDF (Yvelines)
A cause de ton antivirus. Desactive le pour 10 minutes et essayes.

J'ai oublie : Désactives le debugguer quand tu utilises OnError()

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Sam 19/Sep/2015 19:33 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1671
Ou pour pas avoir de problème avec le debugger fait cela :

Code:
CompilerIf #PB_Compiler_Debugger = 0
  OnErrorCall(@ErrorHandler())
CompilerEndIf


Cordialement,
GallyHC

_________________
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 15:16 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
Salut, je ne pense pas que ce soit ça le problème, même code mai un peu modifier:
Code:
Procedure ErrorHandler()
 
  ErrorMessage$ = "A program error was detected:" + Chr(13)
  ErrorMessage$ + Chr(13)
  ErrorMessage$ + "Error Message:   " + ErrorMessage()      + Chr(13)
  ErrorMessage$ + "Error Code:      " + Str(ErrorCode())    + Chr(13) 
  ErrorMessage$ + "Code Address:    " + Str(ErrorAddress()) + Chr(13)
 
  If ErrorCode() = #PB_OnError_InvalidMemory   
    ErrorMessage$ + "Target Address:  " + Str(ErrorTargetAddress()) + Chr(13)
  EndIf
 
  If ErrorLine() = -1
    ErrorMessage$ + "Sourcecode line: Enable OnError lines support to get code line information." + Chr(13)
  Else
    ErrorMessage$ + "Sourcecode line: " + Str(ErrorLine()) + Chr(13)
    ErrorMessage$ + "Sourcecode file: " + ErrorFile() + Chr(13)
  EndIf
 
  ErrorMessage$ + Chr(13)
  ErrorMessage$ + "Register content:" + Chr(13)
 
  CompilerSelect #PB_Compiler_Processor
    CompilerCase #PB_Processor_x86
      ErrorMessage$ + "EAX = " + Str(ErrorRegister(#PB_OnError_EAX)) + Chr(13)
      ErrorMessage$ + "EBX = " + Str(ErrorRegister(#PB_OnError_EBX)) + Chr(13)
      ErrorMessage$ + "ECX = " + Str(ErrorRegister(#PB_OnError_ECX)) + Chr(13)
      ErrorMessage$ + "EDX = " + Str(ErrorRegister(#PB_OnError_EDX)) + Chr(13)
      ErrorMessage$ + "EBP = " + Str(ErrorRegister(#PB_OnError_EBP)) + Chr(13)
      ErrorMessage$ + "ESI = " + Str(ErrorRegister(#PB_OnError_ESI)) + Chr(13)
      ErrorMessage$ + "EDI = " + Str(ErrorRegister(#PB_OnError_EDI)) + Chr(13)
      ErrorMessage$ + "ESP = " + Str(ErrorRegister(#PB_OnError_ESP)) + Chr(13)
     
    CompilerCase #PB_Processor_x64
      ErrorMessage$ + "RAX = " + Str(ErrorRegister(#PB_OnError_RAX)) + Chr(13)
      ErrorMessage$ + "RBX = " + Str(ErrorRegister(#PB_OnError_RBX)) + Chr(13)
      ErrorMessage$ + "RCX = " + Str(ErrorRegister(#PB_OnError_RCX)) + Chr(13)
      ErrorMessage$ + "RDX = " + Str(ErrorRegister(#PB_OnError_RDX)) + Chr(13)
      ErrorMessage$ + "RBP = " + Str(ErrorRegister(#PB_OnError_RBP)) + Chr(13)
      ErrorMessage$ + "RSI = " + Str(ErrorRegister(#PB_OnError_RSI)) + Chr(13)
      ErrorMessage$ + "RDI = " + Str(ErrorRegister(#PB_OnError_RDI)) + Chr(13)
      ErrorMessage$ + "RSP = " + Str(ErrorRegister(#PB_OnError_RSP)) + Chr(13)
      ErrorMessage$ + "Display of registers R8-R15 skipped."         + Chr(13)
     
    CompilerCase #PB_Processor_PowerPC
      ErrorMessage$ + "r0 = " + Str(ErrorRegister(#PB_OnError_r0)) + Chr(13)
      ErrorMessage$ + "r1 = " + Str(ErrorRegister(#PB_OnError_r1)) + Chr(13)
      ErrorMessage$ + "r2 = " + Str(ErrorRegister(#PB_OnError_r2)) + Chr(13)
      ErrorMessage$ + "r3 = " + Str(ErrorRegister(#PB_OnError_r3)) + Chr(13)
      ErrorMessage$ + "r4 = " + Str(ErrorRegister(#PB_OnError_r4)) + Chr(13)
      ErrorMessage$ + "r5 = " + Str(ErrorRegister(#PB_OnError_r5)) + Chr(13)
      ErrorMessage$ + "r6 = " + Str(ErrorRegister(#PB_OnError_r6)) + Chr(13)
      ErrorMessage$ + "r7 = " + Str(ErrorRegister(#PB_OnError_r7)) + Chr(13)
      ErrorMessage$ + "Display of registers r8-R31 skipped."       + Chr(13)
     
  CompilerEndSelect
 
  MessageRequester("OnError example", ErrorMessage$)
  End
 
EndProcedure

OnErrorCall(@ErrorHandler())

Structure MyStringBuilder
 
  MyStringBuilderAllocateMemory.B
  *MyStringBuilderMemoryID
  MyStringBuilderSize.I
  MyStringBuilderRemaining.I
  MyStringBuilderPosition.I
 
EndStructure

Global MyStringBuilder.MyStringBuilder

Procedure.B StringBuilderClearString()
 
  If MyStringBuilder\MyStringBuilderAllocateMemory = #True And MyStringBuilder\MyStringBuilderMemoryID <> 0
   
    FreeMemory(MyStringBuilder\MyStringBuilderMemoryID)
   
    MyStringBuilder\MyStringBuilderAllocateMemory = #False
    MyStringBuilder\MyStringBuilderMemoryID = 0
    MyStringBuilder\MyStringBuilderSize = 0
    MyStringBuilder\MyStringBuilderRemaining = 0
    MyStringBuilder\MyStringBuilderPosition = 0
   
    ProcedureReturn 1
  Else
    ProcedureReturn 0
  EndIf
 
EndProcedure

Procedure.S StringBuilderAddString(String.s)
 
  If MyStringBuilder\MyStringBuilderAllocateMemory = #True And MyStringBuilder\MyStringBuilderMemoryID <> 0
   
    If Len(String.s) > MyStringBuilder\MyStringBuilderRemaining.I
     
      MyStringBuilder\MyStringBuilderMemoryID = ReAllocateMemory(MyStringBuilder\MyStringBuilderMemoryID, MemorySize(MyStringBuilder\MyStringBuilderMemoryID) + (Len(String.s) * 10))
     
      If MyStringBuilder\MyStringBuilderMemoryID <> 0
       
        MyStringBuilder\MyStringBuilderRemaining = MemorySize(MyStringBuilder\MyStringBuilderMemoryID) - MyStringBuilder\MyStringBuilderPosition
        MyStringBuilder\MyStringBuilderSize = MemorySize(MyStringBuilder\MyStringBuilderMemoryID)
       
        OctetsWrite = PokeS(MyStringBuilder\MyStringBuilderMemoryID + MyStringBuilder\MyStringBuilderPosition, String.s)
       
        MyStringBuilder\MyStringBuilderRemaining - OctetsWrite
        MyStringBuilder\MyStringBuilderPosition + OctetsWrite
       
        ProcedureReturn Str(MyStringBuilder\MyStringBuilderSize) + "." + Str(OctetsWrite) + "." + Str(MyStringBuilder\MyStringBuilderRemaining)
       
      Else
        ProcedureReturn "Mémoire non initialisé !"
       
      EndIf
     
    Else
     
      OctetsWrite = PokeS(MyStringBuilder\MyStringBuilderMemoryID + MyStringBuilder\MyStringBuilderPosition, String.s)
     
      MyStringBuilder\MyStringBuilderRemaining - OctetsWrite
      MyStringBuilder\MyStringBuilderPosition + OctetsWrite
     
      ProcedureReturn Str(MyStringBuilder\MyStringBuilderSize) + "." + Str(OctetsWrite) + "." + Str(MyStringBuilder\MyStringBuilderRemaining)
     
    EndIf
   
  Else
   
    MyStringBuilder\MyStringBuilderMemoryID = AllocateMemory(Len(String.s) * 10)
   
    If MyStringBuilder\MyStringBuilderMemoryID <> 0
     
      MyStringBuilder\MyStringBuilderAllocateMemory = #True
      MyStringBuilder\MyStringBuilderRemaining = MemorySize(MyStringBuilder\MyStringBuilderMemoryID)
      MyStringBuilder\MyStringBuilderSize = MemorySize(MyStringBuilder\MyStringBuilderMemoryID)
     
      OctetsWrite = PokeS(MyStringBuilder\MyStringBuilderMemoryID, String.s)
     
      MyStringBuilder\MyStringBuilderRemaining - OctetsWrite
      MyStringBuilder\MyStringBuilderPosition + OctetsWrite
     
      ProcedureReturn Str(MyStringBuilder\MyStringBuilderSize) + "." + Str(OctetsWrite) + "." + Str(MyStringBuilder\MyStringBuilderRemaining)
     
    Else
      ProcedureReturn "Mémoire non initialisé !"
     
    EndIf
   
  EndIf
 
EndProcedure

Procedure.S StringBuilderGetString()
 
  If MyStringBuilder\MyStringBuilderAllocateMemory = #True And MyStringBuilder\MyStringBuilderMemoryID <> 0
    ProcedureReturn PeekS(MyStringBuilder\MyStringBuilderMemoryID)
   
  Else
    ProcedureReturn ""
   
  EndIf
 
EndProcedure

Abc$ = "A"
CreateFile(0, "Log.txt")

For I = 1 To 1000000
 
  Resultat$ = StringBuilderAddString(Abc$)
 
  TailleMemoire$ = StringField(Resultat$, 1, ".")
  OctetsEcrit$ = StringField(Resultat$, 2, ".")
  OctetsRestant$ = StringField(Resultat$, 3, ".")
 
  WriteStringN(0, TailleMemoire$)
  WriteStringN(0, OctetsEcrit$)
  WriteStringN(0, OctetsRestant$)
  WriteStringN(0, "------------------------------")

Next

MessageRequester("", "Ok")

Sinon en plus simple:
Code:
*MemoireID = AllocateMemory(10)

Debug *MemoireID

For I = 0 To 10000000
 
  A + 1
 
  PokeS(*MemoireID + I, "A")
 
  S + 1
 
  If A = 10
   
    *NouvelleMemoireID = ReAllocateMemory(*MemoireID, MemorySize(*MemoireID) + 10)
    D = MemorySize(*NouvelleMemoireID)
    F + 1
   
    If *NouvelleMemoireID <> 0
      *MemoireID = *NouvelleMemoireID
    Else
      Debug "Bug"
    EndIf
   
    A = 0
   
  EndIf
 
Next


Dans le second code qui est plus clair, pourquoi ça ne fonctionne pas ?
La mémoire allouer est pourtant bien correcte, juste se qui faut.

J'ai une erreur (Boîte) qui apparais avec comme message un truc du style: L'exécutable du débogueur se ferme d'une façon inattendu.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 15:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6926
Localisation: IDF (Yvelines)
Brayane a écrit:
Salut, je ne pense pas que ce soit ça le problème, même code mai un peu modifier:
Brayanne, à peine de nouveau actif et déja tu balances un commentaire pas tout à fait adéquate.

A partir du moment ou tu utilises la fonction OnErrorCall() tu dois désactiver le déboguer car la bibliothéque OnError peut ne pas intercepter toutes les erreurs avec le débogueur activé. C'est d'ailleurs ce que tu dois lire dans le rapport de compilation de ton éditeur.

La réponse de Gally est adéquate et il n'y avait pas besoin d'étoffer plus que ça le code précédent.

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 15:41 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
Citation:
Brayanne, à peine de nouveau actif et déja tu balances un commentaire pas tout à fait adéquate.

Pas tous ta fais adéquate hein :arrow:
PB 4.40 bêta 6, * 64

Tu as essayé le code ?
Vous avez essayez le code ?

La procédure ErrorHandler n'est là que pour faire un second test.
Que tu active ou pas le débogueur ne change rien du tout !

Si j'active le débogueur, alors la Boîte apparais au bout d'un moment.
Si je le désactive le débogueur, rien ne se passe et le programme plante sans même rien signalé !

Et a ma connaissance, l'entie virus ne change rien à cela, en tous les cas pas chez moi.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 15:48 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3702
Je répond depuis mon tel portable, je n'ai donc pas fait de tests.

Je dirais qu'il y a un problème avec cette ligne:
Code:
PokeS(*MemoireID + I, "A")


Ça ne copie pas un mais deux caractères avec le 0 de fin, rajoute le flag #PB_String_NoZero pour voir ce que ça donne sur le PokeS.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 16:00 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6926
Localisation: IDF (Yvelines)
@Nico: Tu as raison sur le second code de Brayane. PokeS() ajoute toujours null-character en fin de chaine sauf si on utilise le flag #PB_String_NoZero.

Deux solutions Brayanne : AllocateMemory(11) au lieu de 10 ou on tu ne touches pas à l'allocation mémoire et tu remplaces
Code:
PokeS(*MemoireID + I, "A")
par
Code:
PokeS(*MemoireID + I, "A", -1,  #PB_String_NoZero)

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 16:17 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
Merci, cependant:

Nico, tu as bien raison, ya un problème ici.
Falsam, si je met 11 au lieu de 10, alors je me retrouve avec de la mémoire alloué mais non utiliser, et ça pour rien, déjà essayé.

Code:
PokeS(*MemoireID + I, "A", -1, #PB_String_NoZero)

Si le débogueur est activer, ne fonctionne pas car le flag est pas reconnue, il doit être utiliser avec une autre valeur je présume
mais le truc le plus bizarre est que si je désactive le débogueur, tout passe nickel !

Donc avec le flag, ça fonctionne nickel mais ya un truc que je pige pas...
Je repasse sur le caractère #Nul donc à chaque fois, il est remplacer par la nouvelle valeur donc étrange...

Vraiment pas simple la mémoire hein.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 16:23 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6926
Localisation: IDF (Yvelines)
Brayanne, éxécutes tes tests avec la version 5.31 de PureBasic.

La version 5.41 que tu utilises est une version Beta : C'est à dire une version à tester et pas forcément fiable.

Effectivement ton code ne fonctionne pas avec la version 5.41 car #PB_String_NoZero n'est plus reconnu.

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 16:30 
Hors ligne

Inscription: Jeu 27/Aoû/2015 14:08
Messages: 54
Oui, effectivement tu as raison Falsam :)
Merci pour votre aide, c'est bon ça fonctionne :)


Dernière édition par Brayane le Dim 20/Sep/2015 16:42, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Code ne compilant pas
MessagePosté: Dim 20/Sep/2015 16:54 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6926
Localisation: IDF (Yvelines)
De rien et arretes avec ces smileys à chaque ligne !

J'ai signalé l'erreur obtenu avec version 5.40 quand on utilise le flag #PB_String_NoZero.
:arrow: http://www.purebasic.fr/english/viewtop ... 64#p472264

_________________

➽ Config PureBasic : Windows 10 Version 64 Bits - DirectX 11 - PB 5.72

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 12 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 24 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye