PureBasic

Forums PureBasic
Nous sommes le Dim 16/Juin/2019 18:31

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 43 messages ]  Aller à la page Précédente  1, 2, 3  Suivante
Auteur Message
 Sujet du message:
MessagePosté: Dim 18/Avr/2004 17:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 23:14
Messages: 391
Localisation: France
.

_________________
>>>> Mesurez votre audience de site web avec RankSpirit <<<<


Dernière édition par ZapMan le Jeu 22/Avr/2004 16:54, édité 2 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 20/Avr/2004 5:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 23:14
Messages: 391
Localisation: France
DEUXIEME PARTIE DU CODE (la première partie se trouve au-dessus) :

Code:
;**********************************************
;*     Récupération des données à convertir   *
;*     We take the text to convert            *
;**********************************************

ProgText.s=""
If #Test
  ProgText=GetClipboardText()
Else
  ;File.s = OpenFileRequester("Open a C code file", "", "(*.*)|*.*", 0)
  File.s = OpenFileRequester("Ouvrir un programme en language C", "", "(*.*)|*.*", 0)
  If File
    If OpenFile(0,File)
      l=0
      While l < Lof()
        tl.s = ReadString()+#RC1
        ProgText=ProgText+tl
        l = l + Len(tl)
      Wend
    EndIf
  EndIf
EndIf
;
If ProgText<>""
  ProgText=ProgText+#RC1+#RC1

  ;*****************************
  ;- Conversion                *
  ;*****************************
  DoAsFredSaid = 1
  Prog.s=""
  ttdef = 0
  ttFcn = 1
  TFcn(1) = "MAKELONG"
  TFcnDef(1) = "(c0|(c1<<16))"
  TFcnType(1)= ".l"
  TFcnArg(1) = "c0,c1"
  TFcnArgType(1) = ".b,.b"
  ;
  ; On commence par rechercher toutes les déclarations de fonction et on les enregistre
  ; Begin by register all the fonction declarations
  SetGadgetText(1, "Analysing fonctions")
  cont = 1
  AnLine = 0
  While cont
    cont = 0
    com = 0
    LevelStruct = 0
    StartL = 1
    EndL = 0
    While EndL < Len(ProgText)
      ForgetIt = 0
      ForgetLF = 0
      CutTheLine()
      If com=0
        If LCase(TWord(1))="#define" And dtw > 2
          If UCase(TWord(2))<>"WINMMAPI" And UCase(TWord(2))<>"INTERFACE" And TWord(3)<>"\"
            mttFcn = ttFcn
            FonctionDeclaration()
            If mttFcn <> ttFcn
              cont=1
              AnLine +1
              SetGadgetText(1, "Analysing fonctions : "+Str(AnLine))
            EndIf
          EndIf
        EndIf
      EndIf
      If dcom
        com = 1
      EndIf
      If DefMode = 1
        DefMode = 2
      Else
        If DefMode = 2
          DefMode = 0
          mode$="none"
        EndIf
      EndIf
    Wend
  Wend
  ;
  ; Maintenant on analyse le reste
  ; Then do the rest of the job
  SetGadgetText(1, "Analysing all the code")
  com = 0
  LevelStruct = 0
  StartL = 1
  EndL = 0
  mode$="none"
  AnLine = 0
  While EndL < Len(ProgText)
    AnLine + 1
    SetGadgetText(1, "Analysing code line #"+Str(AnLine))
    ForgetIt = 0
    ForgetLF = 0
    TLine.s = CutTheLine()
    If com=0 And dtw>0
      ti.s = LCase(TWord(1))
      Select ti
        Case "#define"
          If dtw > 2 And UCase(TWord(2))<>"WINMMAPI" And UCase(TWord(2))<>"INTERFACE"
            If dtw = 3 And TWord(2) And TWord(3)="\"          ; a complex definition is going on
              ttdef + 1                                        ; we'll memorize it to be able
              TDefN(ttdef)=TWord(2)                            ; to use it when necessary
              ForgetIt = 1
              mode$="struct"

            Else
              If FonctionDeclaration()=0
                TWord(2)="#"+TWord(2)+" = "
                TSpace(3)=TSpace(3)-3
                TSpace(2)=TSpace(2)-1
                TLCom.s=""
                For p = 3 To dtw
                  If ConvertCType(TWord(p))<>TWord(p) ;it's a type declaration. Dont care
                    TWord(p) = ""
                    If TWord(p-1)="("
                      TWord(p-1)=""
                      TSpace(p-1)=0
                    EndIf
                    If TWord(p+1)=")"
                      TWord(p+1)=""
                      TSpace(p+1)=0
                    EndIf
                  Else
                    If TWord(p)
                      TWord(p)=ComputeValue(p)
                      TLCom=TLCom+TCom
                    EndIf
                  EndIf
                Next
                TWord(dtw)=TWord(dtw)+TLCom
              EndIf
            EndIf
          Else
            ForgetIt = 1
          EndIf
      Case "struct"
        ;DoAsFredSaid = 1
        If DoAsFredSaid
          If Left(TWord(2),3)="tag"
            TWord(2)=Right(TWord(2),Len(TWord(2))-3)
          EndIf
          If Left(TWord(2),1)="_"
            TWord(2)=Right(TWord(2),Len(TWord(2))-1)
          EndIf
          If Right(TWord(2),4)="_tag"
            TWord(2)=Left(TWord(2),Len(TWord(2))-4)
          EndIf
        EndIf
        If TWord(2)= TNameStruct(LevelStruct)
          ; ça n'est pas le début d'une nouvelle structure mais une déclaration de
          ; structure chainée.
          ; It's not the begining of a new structure. It's a chained structure declaration
          TWord(2)=""
          TWord(1)=TWord(3)
          TWord(3)=""
          If TWord(1)="*"; the * had been taken out from the name when we "cut the line" (begining of the analysis)
            TWord(1)=TWord(1)+TWord(4) ;we re-glue the * And the name
            TWord(4)=""
          EndIf
          TWord(1)=TWord(1)+"."+TNameStruct(LevelStruct)
          e = LevelStruct*2
          If TSpace(1)<e
            TSpace(1)= e
          EndIf
        Else
          mt.s=""
          Goto STRUCT ; Goto is not forbiden if it's cleverly used.
          ; Je suis un vrai rebelle (tiens, la preuve : j'ai une guitare électrique)
          ; et je suis parfois capable de faire des trucs complètement ouf (mais vraiment ouf de chez ouf)
          ; comme utiliser Goto, par exemple. WHHHHAAAAAAAAARHRHRHRH !!! Faites gaffe !!!! I'm a rocker !!
        EndIf
      Case "union"
        LevelStruct = LevelStruct + 1
        TLevStruct(LevelStruct)="union"
        TWord(1)="StructureUnion"
        If TWord(2)<>"{" And Left(TWord(2),1)<>";"
          TWord(1)=TWord(1)+" ;"
        EndIf
        If TWord(2)="{"
          TWord(2) = ""
        EndIf
        mode$="struct"
        e = (LevelStruct-1)*2
        If TSpace(1)<e
          TSpace(1)= e
        EndIf
      Case "typedef"
        ti.s = LCase(TWord(2))
        Select ti
          Case "struct"
            mt.s=TWord(2)
            If dtw=2
              TWord(2)=""
            Else
              TWord(2)=TWord(3)
            EndIf
            TWord(3)=""
STRUCT:
            mode$="struct"
            If LevelStruct = 0
              StartMainStruct = Len(Prog) ; will be used to re-order the structures
            EndIf
            LevelStruct = LevelStruct + 1
            TLevStruct(LevelStruct)="struct"
            TWord(1)="Structure"
            If Left(mt,1)=";" Or TWord(2)="" Or dtw=1
              TWord(2)=FindStructName()
              TAutoNameStruct(LevelStruct)=1
            Else
              TAutoNameStruct(LevelStruct)=0
            EndIf
            ;DoAsFredSaid = 1
            If DoAsFredSaid
              If Left(TWord(2),3)="tag"
                TWord(2)=Right(TWord(2),Len(TWord(2))-3)
              EndIf
              If Left(TWord(2),1)="_"
                TWord(2)=Right(TWord(2),Len(TWord(2))-1)
              EndIf
              If Right(TWord(2),4)="_tag"
                TWord(2)=Left(TWord(2),Len(TWord(2))-4)
              EndIf
            EndIf
            TNameStruct(LevelStruct) = TWord(2)
            TSpace(2)=1
            l = 2
            ct = 3
            While ct<dtw
              ct+1
              If Left(TWord(ct),1)=";" ; we keep the commentary
                l = 3
                TWord(3)=TWord(ct)
                ct=dtw
              EndIf
            Wend
            dtw = l
            e = (LevelStruct-1)*2
            If TSpace(1)<e
              TSpace(1)= e
            EndIf
        Case "enum"
            TWord(1) = "Enumeration ;"
            TWord(2) = ""
            If Left(TWord(3),4)="enum"
              TWord(3)= Right(TWord(3),Len(TWord(3))-4)
            EndIf
            mode$="enum"
        Default
          ForgetIt = 1
        EndSelect
      Case "enum"
          TWord(1) = "Enumeration"
          dtw = 1
          mode$="enum"
      Case "}"
        Select mode$
          Case "struct"
            Select TLevStruct(LevelStruct)
              Case "struct"
                YetExisting = 0
                For ct = 1 To ttES
                  UCName.s=UCase(TNameStruct(LevelStruct))
                  If UCase(TExistingStruct(ct))=UCName
                    YetExisting = 1
                    ct = ttES
                  EndIf
                Next

                If YetExisting
                  pp=Len(prog)
                  StrToFind$="Structure "+TNameStruct(LevelStruct)
                  lStrToFind=Len(StrToFind$)
                  While Mid(Prog,pp,lStrToFind)<>StrToFind$ And pp>0
                    pp - 1
                  Wend
                  Prog = Left(Prog,pp-1)
                Else
                  ttES + 1
                  TExistingStruct(ttES)=TNameStruct(LevelStruct)
                EndIf
                TWord(1)= "EndStructure"
                cd.s=""
                ;DoAsFredSaid = 1
                For ct=2 To dtw
                  If Left(TWord(ct),1)<>";" And Left(TWord(ct),1)<>"("
                    If TWord(ct)<>"*" ; the * had been taken out from the name when we "cut the line" (begining of the analysis)
                      If DoAsFredSaid And UCase(TWord(ct))= UCase(TNameStruct(LevelStruct))
                        TWord(ct)=""
                      EndIf
                      If TWord(ct)
                        tx.s = TNameStruct(LevelStruct)
                        l = Len(TWord(ct))
                        If Left(tx,l)=TWord(ct) And TAutoNameStruct(LevelStruct)
                          TWord(ct) = tx
                        EndIf
                        e = (LevelStruct-1)*2
                        If TSpace(ct)<e
                          TSpace(ct)= e
                        EndIf
                        cd + #RC2 + Space(TSpace(ct))+TWord(ct)+"."+TNameStruct(LevelStruct)
                        TSpace(ct)=0
                      EndIf
                    Else
                      If DoAsFredSaid
                        TWord(ct+1)= "" ; forget all variables beggining by "*"
                        TWord(ct)=""
                      Else
                        TWord(ct+1)= "*"+TWord(ct+1) ; we re-glue the * and the name
                        TWord(ct)=""
                      EndIf
                    EndIf
                  Else
                    TWord(1)= "EndStructure ;"+TWord(ct)
                    ct = dtw
                  EndIf             
                Next
                If YetExisting
                  TWord(1)= "; "+TNameStruct(LevelStruct)+" already declared in the PureBasic libs"+cd
                Else
                  TWord(1)=TWord(1)+cd
                EndIf
                dtw = 1
              Case "union"
                If dtw>1
                  TWord(1)= "EndStructureUnion ;"
                Else
                  TWord(1)= "EndStructureUnion"
                EndIf
            EndSelect
            LevelStruct = LevelStruct - 1
            If LevelStruct = 0
              mode$="none"
              ;
              ; ******* OK, now we'll re-order the structures *******
              ;
              cont = 1
              ToKeepInPlace.s=""
              ToPutUpside.s=""
              ToPutUpsideOne.s=""
              StartL2 = Len(Prog)-1
              WhatToDo.s = "KeepIt"
              While StartL2 > StartMainStruct
                EndL2 = StartL2
                While StartL2>1 And Mid(Prog,StartL2 ,1)<>#RC2
                  StartL2-1
                Wend
                If Mid(Prog,StartL2 ,1)<>#RC2
                  StartL2=0
                EndIf
                Line2.s = Mid(Prog,StartL2+1,EndL2-StartL2-1)
                l = Len(Line2)
                Line2.s = LTrim(Line2)
                l = l-Len(Line2)
                Prog = Left(Prog,StartL2-1)
                If Left(Line2,12)="EndStructure" And Left(Line2,17)<>"EndStructureUnion"
                  WhatToDo = "PutItUp"
                EndIf
                If WhatToDo = "PutItUp"
                  If Left(Line2,6)<>"Struct" And Left(Line2,6)<>"EndStr"
                    Line2="  "+Line2
                  EndIf
                  ToPutUpsideOne=Line2+#RC2+ToPutUpsideOne
                Else
                  ToKeepInPlace=Space(l)+Line2+#RC2+ToKeepInPlace
                EndIf
                If Left(Line2,10)="Structure " And ToPutUpsideOne<>""
                  WhatToDo = "KeepIt"
                  ToPutUpside=ToPutUpside+#RC2+ToPutUpsideOne ; As said Jesus : the first will be the last and the last will be the first
                  ToPutUpsideOne=""
                EndIf
              Wend
              Prog=Prog+ToPutUpside+#RC2+ToKeepInPlace ; **** well done ! ****
            EndIf
            e = LevelStruct*2
            If TSpace(1)<e
              TSpace(1)= e
            EndIf
          Case "enum"
            TWord(1)= "EndEnumeration ;"
            mode$="none"
          Case "if"
            TWord(1)= "EndIf ;"
            mode$="none"
          Case "interface"
            TWord(1)= "EndInterface ;"
            For ct = 1 To ttEI
              YetExisting = 0
              InterfaceName.s=UCase(InterfaceName)
              If UCase(TExistingInterface(ct))=InterfaceName.s
                YetExisting = 1
                ct = ttEI
              EndIf
            Next
            If YetExisting
              pp=Len(prog)
              While Mid(Prog,pp,10)<>"Interface " And pp>0
                pp - 1
              Wend
              Prog = Left(Prog,pp-1)
              TWord(1)=";"+InterfaceName+" already declared in the PureBasic libs."
              dtw=1

            Else
              ttES + 1
              TExistingInterface(ttES)=InterfaceName
            EndIf
            mode$="none"
          Case "interfacel"
            TWord(1)= "EndInterface ;"
            mode$="none"
          Default
            TWord(1)= "End ;"
            mode$="none"
        EndSelect
      ;
      Case "{"
        If dtw >1         
          TWord(1) = TWord(2)
          TWord(2) = ""
          TSpace(1)=TSpace(1)+TSpace(2)+1
          TSpace(2)=0
        Else
          TWord(1) =""
        EndIf
      ;
      Case "define_guid"
        TWord(1) = "DataSection"
        p=2
        While TWord(p)<>"(" And p<dtw
          p + 1
        Wend
        TWord(p)=""
        p + 1
        TWord(p)=#RC2+"  "+TWord(p)+":"+#RC2
        TWord(p+1)="    Data.l "+TWord(p+1)+#RC2
        TWord(p+2)="    Data.w "+TWord(p+2)+","+TWord(p+3)+#RC2
        TWord(p+3)=""
        TWord(p+4)="    Data.b "+TWord(p+4)
        For ct = p+5 To dtw
          If Left(TWord(ct),1)=";"
            TWord(p+4)=TWord(p+4)+" "+TWord(ct)
          Else
            If TWord(ct)<>")"
              TWord(p+4)=TWord(p+4)+","+TWord(ct)
            EndIf
          EndIf
          TWord(ct)=""
        Next
        TWord(p+4)=TWord(p+4)+#RC2
        TWord(p+5)="EndDataSection"
        dtw = p+5
        For ct = 1 To dtw
          TSpace(ct)=0
        Next
        mode$="none"
      ;
      Case "declare_interface_"
        TWord(1)="Interface"
        p=2
        While TWord(p)<>"("
          p + 1
        Wend
        TWord(p)=""
        p + 1
        TSpace(p)=1
        For ct = p+1 To dtw
          TWord(ct)=""
        Next
        dtw = p
        TSpace(1)=0
        mode$="interface"
        If TWord(2)=""
          TWord(2)=TWord(3)
          TWord(3)=""
        EndIf
        InterfaceName.s=TWord(2)
      ;
      Case "interface"
        ForgetIt = 1
        mode$="none"
      Case "#include"
        ForgetIt = 1
      Case "#ifndef"
        ForgetIt = 1
      Case "#ifdef"
        Repeat
        Until Left(LTrim(ReadNextLine()),6)="#endif" Or EndL >= Len(ProgText)
        ForgetIt = 1
      Case "#endif"
        ForgetIt = 1
      Case "extern"
        ForgetIt = 1
      Case "#undef"
        ForgetIt = 1
      Case "#pragma"
        ForgetIt = 1
      Case "declare_handle"
        ForgetIt = 1
      Default
        If TWord(2)="WINAPI"
          ForgetIt = 1
        Else
          If mode$ ="interface" Or mode$ = "interfacel"
            If mode$ = "interface"
              If LCase(TWord(1)) = "stdmethod"
                mode$="interfacel"
                na = Asc("a")-1
                TWord(1)=""
                TWord(2) = TWord(3)
                TWord(3) = "("
                p=4
              EndIf
              If LCase(TWord(1)) = "stdmethod_"
                mode$="interfacel"
                na = Asc("a")-1
                TWord(1)=""
                TWord(2)= TWord(4)
                TWord(3) = "("
                TWord(4) = ""
                p=5
              EndIf
            Else
              p = 1
            EndIf
            If mode$="interfacel"
              For ct = p To dtw
                If LCase(TWord(ct))="pure"
                  TWord(ct)=")"
                  mode$="interface"
                Else
                  TWord(ct)=""
                  TSpace(ct)=0
                EndIf
              Next

              If TWord(p)<>")"
                na + 1
                TWord(p)=Chr(na)+".l"
                If p=1
                  TWord(1)=","+TWord(p)
                EndIf
                For ct = 1 To NbVirg
                  na + 1
                  TWord(p)=TWord(p)+","+Chr(na)+".l"
                Next
              EndIf
            EndIf
            If mode$="interfacel"
              ForgetLF = 1
            EndIf
          EndIf
          Select mode$
            Case "enum"
              If TWord(1) And Left(TWord(1),1)<>";"
                TWord(1) = "#"+TWord(1)
                TSpace(1)=TSpace(1)-1
              EndIf
              p = 0
              While TWord(p)<>"=" And p<dtw
                p + 1
              Wend
              If TWord(p)="="
                pt = p
                TLcom=""
                For p = pt To dtw
                  If TWord(p)
                    TWord(p)=ComputeValue(p)
                    TLCom=TLCom+TCom
                  EndIf
                Next
                TWord(dtw)=TWord(dtw)+TLCom
              EndIf
            Case "struct"
              tyPB.s=ConvertCType(TWord(1))
              TWord(1)=""
              pt = 0
              If Left(tyPB,1)<>"." And Left(tyPB,1)<>";"
                If dtw=1 Or Left(TWord(2),1)=";"
                  p=0
                  ct = 0
                  While ct<ttdef
                    ct+1
                    If UCase(TdefN(ct))=tyPB
                      p=ct
                      ct=ttdef
                    EndIf
                  Wend
                  If p
                    TWord(2)=TDefD(p) ; Replace the name by its definition
                    If dtw<2
                      dtw=2
                    EndIf
                    tyPB = ""
                    TSpace(1)=0
                    TSpace(2)=0
                  EndIf
                Else
                  tyPB = ".l"
                EndIf
                pt = 1
              EndIf
              p = 2
              While TWord(p)="*"
                TWord(p)=""
                p + 1
              Wend
              m.s=TWord(p)
              TWord(p)=""
              TWord(2)=m
              If tyPB And TWord(2) And TWord(2)<>"\" And Left(tyPB,1)<>";"
                md.s = ""
                If TWord(3)="["
                  If TWord(4)
                    md=ComputeValue(4)
                  EndIf
                EndIf
                TWord(2)=TWord(2) + tyPB
                If md
                  TWord(4)=md
                EndIf
              EndIf
              If Left(tyPB,1)<>"."
                ct = 2
                l = 0
                While ct<dtw
                  ct+1
                  If Left(TWord(ct),1)=";" ; we look for the commentary
                    l = ct
                  EndIf
                Wend
                If l=0
                  dtw + 1
                  TWord(dtw)=""
                  l=dtw
                EndIf
                If TWord(l)
                  TWord(l) = "; "+tyPB+" : "+Right(TWord(l),Len(TWord(l))-1)
                Else
                  TWord(l) = "; "+tyPB
                EndIf
              EndIf
              TWord(1)=""
              TSpace(2)=TSpace(1)
              e = LevelStruct*2
              If TSpace(2)<e
                TSpace(2)= e
              EndIf
              TSpace(1)=0
          EndSelect
        EndIf   
      EndSelect
      ct=0
      TLine.s = ""
      While ct<dtw And ForgetIt=0
        ct+1
        If TWord(ct)
          p=ct-1
          While p>1 And TWord(p)=""
            p -1
          Wend
          If TSpace(ct)<1 Or TWord(ct)="[" Or TWord(p)="[" Or TWord(ct)="]" Or TWord(ct)="(" Or TWord(p)="(" Or TWord(ct)=Chr(34) Or TWord(p)=Chr(34) Or TWord(ct)=")" Or TWord(p)="(" Or TWord(ct)="<" Or TWord(ct)=">"
            TSpace(ct)=0
          EndIf
          TLine=TLine+Space(TSpace(ct))+TWord(ct)
        EndIf
      Wend
    EndIf
    If TLine And ForgetIt = 0
      TLine = ReplaceString(TLine, "; ;", ";")
      TLine = ReplaceString(TLine, "\", "")
      TLine = ReplaceString(TLine, "*/", "")
      Debug TLine
      If DefMode
        TDefD(ttdef) = TDefD(ttdef)+TLine
        If ForgetLF = 0
          TDefD(ttdef) = TDefD(ttdef)+#RC2
        EndIf
      Else
        Prog = Prog+TLine +" "
        If ForgetLF = 0
          Prog = Prog+#RC2
        EndIf
      EndIf
    EndIf

    If dcom
      com = 1
    EndIf
    If DefMode = 1
      DefMode = 2
    Else
      If DefMode = 2
        DefMode = 0
        mode$="none"
      EndIf
    EndIf
  Wend
  ; On renomme toutes les constantes portant le même nom qu'une constante PureBasic
  ; et ayant une valeur différente (pour éviter le message "Constant already declared with a different value")
  ; Rename all the constants having the same name than a PureBasic Constant and having
  ; a different value (to avoid the "Constant already declared with a different value" message).

  StartL=1
  EndL = 1
  Prog2.s=""
  While EndL>0
    EndL  = FindString(Prog,#RC2,StartL) ; on cherche le prochain retour chariot - look for the next line feed
    If EndL
      TLine = LTrim(Mid(Prog,StartL,EndL-StartL))
      If Left(Tline,1)="#"
        Prog2=Prog2+TLine+#RC2 ; on ne garde que les déclarations de constantes - We keep only constant declarations
      EndIf
      StartL=EndL+Len(#RC2)
    EndIf
  Wend
  AnLine = 0
  RenameCText$=""
  cont = 1
  While cont
    cont=0
    RTest$=TestProg(Prog2)
    If RTest$<>"OK"
      nLine=Val(StringField(Mid(RTest$,6,14), 1, ": "))
      ct=0
      StartL=1
      EndL = 1
      While ct<nLine And EndL>0
        ct + 1
        EndL  = FindString(Prog2,#RC2,StartL) ; on cherche le prochain retour chariot - look for the next line feed
        mStartL=StartL
        StartL=EndL+Len(#RC2)
      Wend
      If ct=nLine
        Const$ = StringField(LTrim(Mid(Prog2,mStartL,EndL-mStartL)),1," ")
        If FindString(RTest$,"Constant already declared with a different value",1)
          Prog=ReplaceString(Prog, Const$, Const$+"n")
          RenameCText$=RenameCText$+"; "+Const$+" has been renamed To "+Const$+"n"+#RC2
          Prog2=ReplaceString(Prog2, Const$, Const$+"n")
          AnLine + 1
          SetGadgetText(1, "Renaming some constants : "+Str(AnLine))
        Else
          Prog2=ReplaceString(#RC2+Prog2, #RC2+Const$, #RC2+";"+Const$) ; pour annuler l'erreur - To kick off the error
          Prog2=ReplaceString(Prog2, Const$, "0")
        EndIf
        cont = 1
      EndIf
    EndIf
  Wend
  If RenameCText$
    Prog="; Some constants was already declared into the PureBasic Libs with"+#RC2+"; a different value : "+#RC2+RenameCText$+#RC2+Prog
  EndIf
  SetGadgetText(1, "Ending...")
  ;
  ;*********************************************************
  ;* Recherche de la Fenêtre de PureBasic                  *
  ;* Le code original vient de Brossden et il est bien !   *
  ;* From a cool Brossden code
  ;*********************************************************
  CloseWindow(30)
  Hwnd = FindWindow_( 0, 0 )
  While Hwnd <> 0
    Txt.s = Space(256)
    GetWindowText_(Hwnd, Txt, 256)
    Hwnd = GetWindow_(Hwnd, #GW_HWNDNEXT)
    If FindString(UCase(Txt),"PUREBASIC - ",1) = 1 And FindString(UCase(Txt),"DEBUG",1) =0
      HandlePB=Hwnd
      Hwnd=0
    EndIf
  Wend

  ;******************************************
  ;* Activation de la Fenêtre de PureBasic  *
  ;* Activation of the PureBasic Window     *
  ;******************************************

  SetFocus_(HandlePB)

  ;*****************************************************
  ;* On sauvegarde le contenu du presse-papier         *
  ; save the clipboard datas
  ;*****************************************************

  Sauv.s = GetClipboardText()
 
  ;*****************************************************
  ;* On va coller le résultat de notre conversion dans *
  ;* un nouveau document que l'on crée dans PureBasic  *
  ;* We paste the result of the conversion into a new  *
  ;* document of PureBasic                             *
  ;*****************************************************
 
  tx.s =        ";***************************************************************"+#RC1
  tx.s = tx.s + ";* Programme converti du language C vers PureBasic à l'aide de *"+#RC1
  tx.s = tx.s + ";*  This Program had been converted from C to PureBasic with   *"+#RC1
  tx.s = tx.s + ";*                           GoodByeC®                         *"+#RC1
  tx.s = tx.s + ";*                Zapman - familledeborde@lagoon.nc            *"+#RC1
  tx.s = tx.s + ";***************************************************************"+#RC1
  Prog = tx+Prog
 
  SetClipboardText(Prog)
  keybd_event_(#VK_CONTROL,0,0,0)+keybd_event_(#VK_N,0,0,0) ; Nouveau (Ctrl N)
  Delay(200)
  keybd_event_(#VK_CONTROL,0,0,0)+keybd_event_(#VK_V,0,0,0) ; Coller  (Ctrl V)
  Delay(200)
  keybd_event_(#VK_CONTROL,0,#KEYEVENTF_KEYUP,0)
  Delay(500)

  ;*********************************************************
  ;*       Restauration du contenu du presse-papier        *
  ;*               Restore the clipboard                   *
  ;*********************************************************

  SetClipboardText(Sauv)
EndIf
TerminateProcess_(CompilerProcessID,0)  ; Terminate the PB Compiler process
End ; Il faut que j'aille me coucher

_________________
>>>> Mesurez votre audience de site web avec RankSpirit <<<<


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Jeu 22/Avr/2004 16:52 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 23:14
Messages: 391
Localisation: France
Les deux parties du code ci-dessus viennent d'être actualisées pour la quatrième fois.

_________________
>>>> Mesurez votre audience de site web avec RankSpirit <<<<


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Jeu 28/Juil/2005 15:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Euh... y aurait pas un fichier zip à dl ?

Merci.


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 07/Aoû/2005 19:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 0:57
Messages: 3702
Je viens de tester ton programme Zapman et voici le résultat de mes tests:

Switch n'est pas transformé en son équivalent Select
Les séparateurs "," disparaissent dans les fonctions.
On a un End à la fin d'une condition ou d'une boucle au lieu de endif ou wend par exemple.
Il manque le "_" devant le nom dans l'emploi des API
Il manque "#" devant les constantes connues de Window

Il y a bien d'autres choses mais voilà dans un premier temps.

:)


Dernière édition par nico le Dim 07/Aoû/2005 23:57, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 07/Aoû/2005 21:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Et pr ma question ? Recopier le code en plusieur partie est très fastidieux. Zapman, stp, pourais-tu faire un fichier zip ?
Merci d'avance. :-)


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Dim 07/Aoû/2005 22:47 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14537
tiens je te l'ai zipé

http://michel.dobro.free.fr/bidouilles/GoodByeC.zip

:D


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 08/Aoû/2005 12:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 23:14
Messages: 391
Localisation: France
Ohé, les gars, vous me faites le coup du retour des morts-vivants !

Ce post est vieux d'un an et demi et j'ai finalement interrompu ce développement quand je me suis lancé dans SoundEditor.

En revoyant ce bout de code, je me dit que c'est un gros tas de caca et qu'il n'y a rien à en tirer. A mon avis, il faudrait tout reprendre à zéro.

C'est sûr que l'idée était sympa, mais on ne peut pas tout faire...

_________________
>>>> Mesurez votre audience de site web avec RankSpirit <<<<


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 08/Aoû/2005 12:35 
Hors ligne

Inscription: Lun 26/Avr/2004 0:40
Messages: 14537
Citation:
faudrait tout reprendre à zéro


allez au boulot !! :lol:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 08/Aoû/2005 13:55 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 04/Juin/2004 14:27
Messages: 296
Localisation: Frontignan
Je suis tout a fait d'accord avec Dobro. :lol:
Je pense même qu'un tel convertisseur C => PB serait un outil aussi indispensable que TailBite. :idea:
Pourquoi ne pas (reprendre) et poursuivre son dévellopement ?
Voilà un projet a vocation communautaire.
Celà serait un outil qui aiderait toute la communauté PB :!:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Lun 08/Aoû/2005 14:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Merci Dobro pour le ZIP. :-D
Non, non, faut pas abandonner un projet comme ça... reprenons-le tous ensemble, ceux qui peuvent, et les autres... ben on peut apprendre ! :-D


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 09/Aoû/2005 14:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 04/Juin/2004 14:27
Messages: 296
Localisation: Frontignan
Je suis assez étonné du manque de réaction (pour ou contre) devant une idée aussi "sympa" comme le décrit Zapman son auteur. :(
Un convertisseur C => PB est a mon avis, un outil indispensable, qui servirait toute la communauté.

Apparemment, il n'y a que quelques personnes qui sont de cet avis.
Trois personnes ont manifesté leur intérêt pour un tel programme (Dobro, Gansta93, et moi-même).
Nico a fait un rapport après l'avoir utilisé, je suppose de cela traduit bien aussi son intérêt pour ce convertisseur.

Peut-être que s'il y avait plus d'intérêt et de d'attende, Zapman serait finalement enclins a en reprendre le développement ?
Zapman pense-tu en reprendre le développement ?
Pour ma part, je le souhaite vraiment. Mais qu'en pense les autres ?

Faut-il organisé un sondage pour savoir ce qu'en pense les participants a se forum :?:
Je pensait que l'intérêt collectif était évident :!:
Visiblement, nous sommes peut nombreux a le pensé !
Rassurez-moi, dit moi si développé un tel convertisseur en vaut la peine ?


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 09/Aoû/2005 15:32 
Hors ligne
Avatar de l’utilisateur

Inscription: Ven 13/Fév/2004 23:14
Messages: 391
Localisation: France
Développer ce type de convertisseur présente un intérêt qui me semble absolument certain.

Cela dit, les faut-y-aller, yaka, faukon, c'est bien joli, mais ça ne fait pas avancer beaucoup les choses.

Non, je ne reprendrais pas ce développement avant un bon moment. J'ai beaucoup trop de projets en cours, dont certains sont collectifs, pour me relancer sur cette idée pour le moment.

Colle toi-z-y, et demande de l'aide aux autres si nécessaire. C'est comme ça que ça marche !

_________________
>>>> Mesurez votre audience de site web avec RankSpirit <<<<


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 09/Aoû/2005 17:16 
Hors ligne
Avatar de l’utilisateur

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
BANDE 4INDIVIDUALISTES ! ;-)
que chacun y mette ce qu'il peut, et on aura un truc parfet. En tout cas moi je pense qu'il faut encore remercier Zapman car il nous a fourni un sacré projet même si chez moi, je n'arrive qu'à un écran figé. :jesors:


Haut
 Profil  
Répondre en citant le message  
 Sujet du message:
MessagePosté: Mar 16/Aoû/2005 0:08 
Hors ligne

Inscription: Sam 29/Jan/2005 15:01
Messages: 65
Cet outil m'a l'air très utile masi c'est du boulot ! #sleep
Pour l'instant je ne pense que je puisse aider à le developper car je suis déjà occupé par certains projets ...

_________________
The life is a game...


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 43 messages ]  Aller à la page Précédente  1, 2, 3  Suivante

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 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