Crash ide

Post bugs related to the IDE here
Denis
Enthusiast
Enthusiast
Posts: 704
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Crash ide

Post by Denis »

Stl Fred,

i get a crash of ide.

PB 5.70 LTS beta 1 (Windows - x64)

Image

and this one

Image

I use a code to generate all declarations of my project.
As a result, "les accents sont mal affiches"

Image

Here the code i use

Code: Select all

EnableExplicit

Global Directory$ = "", SourceFileName.s = "", Chaine.s = "", ChaineFinale.s = "", Date$,Time$
Global Fichier_Contient_Procedure, Premiere_occurence = #True

#Debut_ExamineDirectory = 0
#Fichier_Courant_En_Lecture = 0

#Expression_Reguliere_Fichiers = 0
#Expression_Reguliere_Procedures = 1
#Expression_Reguliere_Procedures = 1


;#_Files = "PureIconManager_Conversions.pb|PureIconManager_Destructors.pb|PureIconManager_Fonction_ASM.pb|PureIconManager_Gestion_Icl_NE.pb|PureIconManager_Procedures.pb|PureIconManager_Sauve_Au_Format_NE.pb"
;#_Files = "PureIconManager_Conversions.pb"
#_Files = "ResourceManager_" ;Conversions.pb"

#_proc1 = "^(?i)Procedure |Procedure.a|Procedure.b|Procedure.c|Procedure.d|Procedure.f|Procedure.i|Procedure.l|Procedure.q|Procedure.s|Procedure.u|Procedure.w"
#_proc2 = "ProcedureC |ProcedureC.a|ProcedureC.b|ProcedureC.c|ProcedureC.d|ProcedureC.f|ProcedureC.i|ProcedureC.l|ProcedureC.q|ProcedureC.s|ProcedureC.u|ProcedureC.w"
#_proc3 = "ProcedureCDll |ProcedureCDll.a|ProcedureCDll.b|ProcedureCDll.c|ProcedureCDll.d|ProcedureCDll.f|ProcedureCDll.i|ProcedureCDll.l|ProcedureCDll.q|ProcedureCDll.s|ProcedureCDll.u|ProcedureCDll.w"
#_proc4 = "ProcedureDll |ProcedureDll.a|ProcedureDll.b|ProcedureDll.c|ProcedureDll.d|ProcedureDll.f|ProcedureDll.i|ProcedureDll.l|ProcedureDll.q|ProcedureDll.s|ProcedureDll.u|ProcedureDll.w"
#_proc  = #_proc1+#_proc2+#_proc3+#_proc1

If CreateRegularExpression(#Expression_Reguliere_Fichiers, (#_Files), #PB_RegularExpression_DotAll)= 0
      MessageRequester("Erreur", "Impossible de créer l'expression régulière des noms de fichier" +
      Chr(10) + "L'application va se terminer", #PB_MessageRequester_Ok)
EndIf
If CreateRegularExpression(#Expression_Reguliere_Procedures, (#_proc), #PB_RegularExpression_DotAll) = 0
      MessageRequester("Erreur", "Impossible de créer l'expression régulière des noms de procedure" +
      Chr(10) + "L'application va se terminer", #PB_MessageRequester_Ok)
EndIf

;*************************************************
Directory$ = "D:\ResourceManager\Version_1"
;*************************************************

If ExamineDirectory(#Debut_ExamineDirectory, Directory$, "ResourceManager_*.pb")
      While NextDirectoryEntry(0)
            If DirectoryEntryType(0) = #PB_DirectoryEntry_File
                  SourceFileName = DirectoryEntryName(0)
                  If MatchRegularExpression(#Expression_Reguliere_Fichiers, SourceFileName)
                        If ReadFile(#Fichier_Courant_En_Lecture, Directory$+"\"+SourceFileName)
                              Fichier_Contient_Procedure = #True
                              While Eof(#Fichier_Courant_En_Lecture) = 0
                                    Chaine = Trim(ReadString(#Fichier_Courant_En_Lecture))
                                    ;// on recherche le mot 'procedure' ou un commentaire
                                    If StringByteLength(Chaine)
                                          If PeekC(@Chaine) <> ';'
                                                ;// c'est une chaine normale qui doit commencer par 'Procedure' ou ''ProcedureDll' etc avec le retour typé ou non
                                                If MatchRegularExpression(#Expression_Reguliere_Procedures, Chaine)
                                                      If Fichier_Contient_Procedure
                                                            Select Premiere_occurence
                                                                  Case #False
                                                                        ChaineFinale + Chr(13) + "; Fichier " + SourceFileName+ Chr(13)
                                                                        
                                                                  Default
                                                                        ChaineFinale  + "; Fichier " + SourceFileName+ Chr(13)
                                                                        Premiere_occurence = #False
                                                            EndSelect
                                                            Fichier_Contient_Procedure = 0
                                                      EndIf
                                                      
                                                      ;// on remplace le mot Procedure par le mot Declare
                                                      ChaineFinale + "Declare" + Right(Chaine, StringByteLength(Chaine) - StringByteLength("Procedure")) +Chr(13)
                                                EndIf
                                          EndIf
                                    EndIf
                              Wend
                              ; ChaineFinale + Chr(13)
                              CloseFile(#Fichier_Courant_En_Lecture)
                        Else
                              MessageRequester("Information", "Desolé, une erreur s'est produite lors de l'acces au fichier "+SourceFileName+" !", 0)
                              Break
                        EndIf
                  EndIf
            EndIf
      Wend
      FinishDirectory(#Debut_ExamineDirectory)
EndIf

Date$ = FormatDate("%dd/%mm/%yyyy", Date())
Time$ = FormatDate("%hh:%ii:%ss", Date())

RenameFile(Directory$+"\ResourceManager_Declare.pb", Directory$+"\ResourceManager_Declare.bak")
If CreateFile(2, Directory$+"\ResourceManager_Declare.pb")
      WriteString(2, ";// éditeur de resources : Les déclarations" + Chr(13) +"; Création du fichier le " +Date$ +" à " + Time$+ Chr(13)+ChaineFinale)
EndIf
CloseFile(2)
With this one, i have the resut above.

Now, at the end of code change

Code: Select all

WriteString(2, ";// éditeur de resources : Les déclarations" + Chr(13) +"; Création du fichier le " +Date$ +" à " + Time$+ Chr(13)+ChaineFinale)
by

Code: Select all

WriteString(2, ";// éditeur de resources : Les déclarations" + Chr(13) +"; Création du fichier le " +Date$ +" à " + Time$+ Chr(13)+ChaineFinale, #PB_Unicode)
I compile, and open the generated file but it is amost an empty file.

I close this file in the ide and it crashes
A+
Denis
Marc56us
Addict
Addict
Posts: 1477
Joined: Sat Feb 08, 2014 3:26 pm

Re: Crash ide

Post by Marc56us »

Does not crash in my pc :(

PS. For accents, force PB to add BOM to ouput file
WriteStringFormat(2, #PB_UTF8)
Without this, PB IDE detects it as an ascii file even if it is in utf-8 and well read by other editors

Code: Select all

; [...]
If CreateFile(2, Directory$+"\ResourceManager_Declare.pb")
    WriteStringFormat(2, #PB_UTF8) ; <===  add this line
    WriteString(2, ";// éditeur de resources : Les déclarations" + Chr(13) +"; Création du fichier le " +Date$ +" à " + Time$+ Chr(13)+ChaineFinale)
EndIf
CloseFile(2)
Result:

Code: Select all

;// éditeur de resources : Les déclarations
; Création du fichier le 20/06/2018 à 09:25:57
Uh? 9H30 (am) already ? It's time for coffee...
:wink:
Denis
Enthusiast
Enthusiast
Posts: 704
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: Crash ide

Post by Denis »

Salut Marc56us,
Marc56us wrote:Does not crash in my pc :(
I forgot to say that the previous file with declare was already opened.
PB ask me to reload the file and i do it.
only the character ";" is displayed.
I close this file and it crashes.

Marc56us wrote:PS. For accents, force PB to add BOM to ouput file
WriteStringFormat(2, #PB_UTF8)
Without this, PB IDE detects it as an ascii file even if it is in utf-8 and well read by other editors
OK.
The problem is by default the file is in unicode mode, and when i force this mode it crashes.
Marc56us wrote:

Code: Select all

; [...]
If CreateFile(2, Directory$+"\ResourceManager_Declare.pb")
    WriteStringFormat(2, #PB_UTF8) ; <===  add this line
    WriteString(2, ";// éditeur de resources : Les déclarations" + Chr(13) +"; Création du fichier le " +Date$ +" à " + Time$+ Chr(13)+ChaineFinale)
EndIf
CloseFile(2)
Result:

Code: Select all

;// éditeur de resources : Les déclarations
; Création du fichier le 20/06/2018 à 09:25:57
Uh? 9H30 (am) already ? It's time for coffee...
:wink:
Did you tried the code with files having procedures to generate declaration file ?

With Notepad ++, the genrated file (witch crashes ide) seems to be OK
A+
Denis
Marc56us
Addict
Addict
Posts: 1477
Joined: Sat Feb 08, 2014 3:26 pm

Re: Crash ide

Post by Marc56us »

I forgot to say that the previous file with declare was already opened.
PB ask me to reload the file and i do it.
Same here, PB detect change (timestamp) and reload, but no crash.
only the character ";" is displayed.
I close this file and it crashes.
Only two lines

Code: Select all

;// éditeur de resources : Les déclarations
; Création du fichier le 20/06/2018 à 14:31:58
Did you tried the code with files having procedures to generate declaration file ?
Yes, but whatever PB files I submit, I have only the first 2 lines of comments in file 'ResourceManager_Declare.pb'
only timestamp change

PS: After that, I change

Code: Select all

_proc1 = "^(?i)Procedure |Procedure.a|Procedure.b|Proced ...
_proc2 = "ProcedureC |ProcedureC.a|ProcedureC.b|Procedur ...
_proc3 = "ProcedureCDll |ProcedureCDll.a|ProcedureCDll.b ...
_proc4 = "ProcedureDll |ProcedureDll.a|ProcedureDll.b|Pr ...
_proc  = #_proc1+#_proc2+#_proc3+#_proc1
By

Code: Select all

#_proc = "#_proc = "^\bProcedure[CDl. abcdfilqsuw]*\b"
Same thing, no IDE crash, no line Declare in file
Denis
Enthusiast
Enthusiast
Posts: 704
Joined: Fri Apr 25, 2003 5:10 pm
Location: Doubs - France

Re: Crash ide

Post by Denis »

As we said in french "j'en perd mon latin..."

This code work perfectly with PureIconManager for a while.

I change (put PB_Ascii) and now it works .

Code: Select all

If CreateFile(2, Directory$+"\ResourceManager_Declare.pb", #PB_Ascii)
      WriteString(2, ";// éditeur de resources : Les déclarations" + Chr(13) +"; Création du fichier le " +Date$ +" à " + Time$+ Chr(13)+ChaineFinale, #PB_Ascii)
EndIf
added too

Code: Select all

                  If GetFilePart(SourceFileName) = "ResourceManager_Declare.pb"
                        Continue
                  EndIf
A+
Denis
Marc56us
Addict
Addict
Posts: 1477
Joined: Sat Feb 08, 2014 3:26 pm

Re: Crash ide

Post by Marc56us »

Denis wrote:As we said in french "j'en perd mon latin..."
This code work perfectly with PureIconManager for a while.
I change (put PB_Ascii) and now it works .
I also don't understand why this does this, except that since version 5.50 (July 2016) PB is entirely in unicode and unless otherwise specified, all file writing is done in UTF-8 instead of ASCII
:?: :wink:
Post Reply