Un peu fatigué d'ajouter à la main les Declare en début des fichiers. Alors ci-dessous un code, à compiler en V4 et à ajouter au menu Outils de l'IDE.
Il ajoute ou met à jour donc les Declare relatifs aux procedures du fichier, et preserve les Declare relatifs à des procedures externes.
Cordialement
Code : Tout sélectionner
Declare.l CheckDeclare(Chaine.s)
Declare.s GetProcedureName(Chaine.s)
Declare.l CheckString(Chaine.s)
EnableExplicit
Global NewList MyProcedures.s()
Define Error.l = #False
Define Result.l = 0
Define Pos.l = 0
Define SourceFileName.s = ProgramParameter()
Define File01.s = ""
Define Chaine.s = ""
Define TempDir.s = GetTemporaryDirectory()
Define File01.s = TempDir + "DeclareGeneratorBKP.txt"
Procedure.l CheckDeclare(Chaine.s)
Define Result.l = #False
Define MyProcName.s = ""
Define Data01.s = Trim(Chaine)
If FindString(Data01,"Declare",1) = 1
MyProcName = GetProcedureName(Data01)
ResetList(MyProcedures())
While NextElement(MyProcedures())
If MyProcedures() = MyProcName
Result = #True
Break
EndIf
Wend
EndIf
ProcedureReturn Result
EndProcedure
Procedure.s GetProcedureName(Chaine.s)
Define Ptr01.l = 0
Define Ptr02.l = 0
Define Result.s = ""
Define Data01.s = Trim(Chaine)
Ptr01 = FindString(Data01," ",1)
Ptr02 = FindString(Data01,"(",1)
If Ptr01 > 0 And Ptr02 > Ptr01
Ptr01 + 1
Result = Trim(Mid(Data01,Ptr01,Ptr02 - Ptr01))
EndIf
ProcedureReturn Result
EndProcedure
Procedure.l CheckString(Chaine.s)
Define Result.l = 0
Define DoIt.l = #False
Define Data01.s = Trim(Chaine)
Define Data02.s = ""
If FindString(Data01,"ProcedureReturn",1) = 1
Result = 0
Else
If FindString(Data01,"Procedure",1) = 1
Data02 = GetProcedureName(Chaine)
AddElement(MyProcedures())
MyProcedures() = Data02
Data01 = StringField(Data01,1," ")
If FindString(Data01,".",1) > 0
Select Right(Data01,1)
Case "b" : Result = 2
Case "c" : Result = 3
Case "w" : Result = 4
Case "l" : Result = 5
Case "f" : Result = 6
Case "q" : Result = 7
Case "d" : Result = 8
Case "s" : Result = 9
EndSelect
Else
Result = 1
EndIf
EndIf
EndIf
ProcedureReturn Result
EndProcedure
If CopyFile(SourceFileName,File01) > 0
If CreateFile(0,SourceFileName)
If OpenFile(1,File01)
While Eof(1) = 0
Chaine = ReadString(1)
Result.l = CheckString(Chaine)
If Result > 0
Chaine = Trim(Chaine)
Pos = FindString(Chaine," ",1)
If Pos > 0
Select Result
Case 1 : Chaine = "Declare " + Right(Chaine,Len(Chaine) - Pos)
Case 2 : Chaine = "Declare.b " + Right(Chaine,Len(Chaine) - Pos)
Case 3 : Chaine = "Declare.c " + Right(Chaine,Len(Chaine) - Pos)
Case 4 : Chaine = "Declare.w " + Right(Chaine,Len(Chaine) - Pos)
Case 5 : Chaine = "Declare.l " + Right(Chaine,Len(Chaine) - Pos)
Case 6 : Chaine = "Declare.f " + Right(Chaine,Len(Chaine) - Pos)
Case 7 : Chaine = "Declare.q " + Right(Chaine,Len(Chaine) - Pos)
Case 8 : Chaine = "Declare.d " + Right(Chaine,Len(Chaine) - Pos)
Case 9 : Chaine = "Declare.s " + Right(Chaine,Len(Chaine) - Pos)
EndSelect
WriteString(0,Chaine + Chr(13) + Chr(10))
EndIf
EndIf
Wend
WriteString(0,"")
CloseFile(1)
If OpenFile(1,File01)
While Eof(1) = 0
Chaine = ReadString(1)
If CheckDeclare(Chaine) = #False
WriteString(0,Chaine + Chr(13) + Chr(10))
EndIf
Wend
CloseFile(1)
Else
Error = #True
EndIf
EndIf
CloseFile(0)
Else
Error = #True
EndIf
If Error
CopyFile(File01,SourceFileName)
EndIf
EndIf
End