Code ne compilant pas

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Code ne compilant pas

Message par Micoute »

Bonsoir à tous, je me demande pourquoi ce code semble ne pas compiler.

Pouvez-vous m'aider à trouver la solution.

Code : Tout sélectionner

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.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code ne compilant pas

Message par falsam »

A cause de ton antivirus. Desactive le pour 10 minutes et essayes.

J'ai oublie : Désactives le debugguer quand tu utilises OnError()
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
GallyHC
Messages : 1703
Inscription : lun. 17/déc./2007 12:44

Re: Code ne compilant pas

Message par GallyHC »

Ou pour pas avoir de problème avec le debugger fait cela :

Code : Tout sélectionner

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)
Brayane
Messages : 54
Inscription : jeu. 27/août/2015 14:08

Re: Code ne compilant pas

Message par Brayane »

Salut, je ne pense pas que ce soit ça le problème, même code mai un peu modifier:

Code : Tout sélectionner

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 : Tout sélectionner

*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.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code ne compilant pas

Message par falsam »

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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Brayane
Messages : 54
Inscription : jeu. 27/août/2015 14:08

Re: Code ne compilant pas

Message par Brayane »

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.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Code ne compilant pas

Message par nico »

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 : Tout sélectionner

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.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code ne compilant pas

Message par falsam »

@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 : Tout sélectionner

PokeS(*MemoireID + I, "A")
par

Code : Tout sélectionner

PokeS(*MemoireID + I, "A", -1,  #PB_String_NoZero)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Brayane
Messages : 54
Inscription : jeu. 27/août/2015 14:08

Re: Code ne compilant pas

Message par Brayane »

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 : Tout sélectionner

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.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code ne compilant pas

Message par falsam »

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.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Brayane
Messages : 54
Inscription : jeu. 27/août/2015 14:08

Re: Code ne compilant pas

Message par Brayane »

Oui, effectivement tu as raison Falsam :)
Merci pour votre aide, c'est bon ça fonctionne :)
Dernière modification par Brayane le dim. 20/sept./2015 16:42, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code ne compilant pas

Message par falsam »

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
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre