Projet Gestion Presse-Papier... besoin d'aide svp

Programmation d'applications complexes
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

J'ai testé, j'ai juste modifié le mot "Français", j'ai mis "Francais" à la place pour que ça colle avec le fichier "Francais.lng" dans le dossier "Lang".

Il faut que le nom par défaut quand tu ne peux pas lire le fichier ini, le nom contenu dans le fichier ini, et le nom du fichier de langue (sans l'extension), soient identiques "Francais" ou Français", comme tu veux, mais identique partout. sinon, ça ne fonctionne pas.

Un conseil, met plutôt "Francais", parce qu'avec certaines versions de windows, il n'aime pas trop le "ç" dans les noms de fichier. J'ai déjà eu des bugs avec ce genre de truc. Pour une fois que tu est autorisé à faire des fautes, profites-en :lol:

J'ai noté les endroits ou j'avais désactivé des lignes parce que je n'ai pas les libs. Si tu as jaPBe, elle apparaitront en vert. Sinon, elles commencent par ;/

Code : Tout sélectionner

;/ J'ai réactivé ça parce que j'ai pas les libs
#tabulation = Chr(9)
;/

Enumeration
  #fenetre
  #Fenetre_Modifier
  #fenetre_Inserer
  #copier_fichier
  #enregistrer
  #quiter
  #voir_texte
  #modifi_texte
  #insert_texte
  #insert_rep
  #insert_fichier
  #vider
  #aide
  #about
  #contact
  #maj
EndEnumeration
  
#version = "5.0"

Structure LANGUE
  Chemin.s
  Titre.s
EndStructure
NewList Lang.LANGUE()

Dim lng.s(100)
IsRun.s="Gestion Presse-Papier"

programme$ = Space(#MAX_PATH)
GetModuleFileName_(0, @programme$, #MAX_PATH)
GPPPath$=GetFilePart(programme$)
If Right(GPPPath$,1)<>"\"
  GPPPath$=GPPPath$+"\"
EndIf
SetCurrentDirectory_(@GPPPath$)

;- Au départ, tu peux définir une langue par défaut, ou alors
;- récupérer la dernière langue utilisée dans un fichier ini
OpenPreferences("gpp.ini")
LangDefaut$ = ReadPreferenceString("Lang","Francais")
ClosePreferences()
Global MenuLangue ; Cette variable sera à 1 si il y a des fichiers, et a 0 sinon
;- Recherche des fichiers de langue
Procedure ScanLanguage()
  ; Recherche si il y a des fichiers de langue
  
  If ExamineDirectory(0, GPPPath$+"Lang", "*.*")
    NbFiles = 0
    
    Repeat
      Type = NextDirectoryEntry()
      If Type = 1
        Name$ = DirectoryEntryName()
        If Right(Name$,4) = ".lng"
          AddElement(Lang())
          Lang()\Chemin = "Lang\"+Name$
          Lang()\Titre = Left(Name$,Len(Name$)-4)
          NbFiles + 1
        EndIf
      EndIf
    Until Type = 0 
    
    If NbFiles
      ProcedureReturn #True
    Else
      ProcedureReturn #False
    EndIf
  EndIf
EndProcedure

;- Lecture du fichier de langue
Procedure LoadLanguage(Language$)
  ForEach Lang()
    If Lang()\Titre = Language$
      Break
    EndIf
  Next
  
  If ReadFile(0,Lang()\Chemin)
    Repeat
      lng(i) = ReadString() : i+1
    Until Eof(0)
  EndIf
EndProcedure

;- Creation du menu des langues
Procedure MenuLangue()
  IdMenu = 500
  MenuTitle(lng(52))
  ForEach Lang()
    MenuItem(IdMenu,Lang()\Titre)
    IdMenu+1
  Next
EndProcedure

;- Mise à jour des menus
Procedure UpdateGadgets()
  StatusBarText(0, 0, GetWindowTitle(0) + " " + lng(0))
  
  If CreateMenu(0,WindowID())
    MenuTitle(lng(1))
    MenuItem(#copier_fichier, lng(2) + #tabulation + "Ctrl+O")
    AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_O, #copier_fichier)
    MenuItem(#enregistrer, lng(3) + #tabulation + "F12")
    AddKeyboardShortcut(0, #PB_Shortcut_F12, #enregistrer)
    MenuBar()
    MenuItem(#quiter, lng(4) + #tabulation + "Alt+F4")
    MenuTitle(lng(5))
    OpenSubMenu(lng(6))
    OpenSubMenu(lng(7))
    MenuItem(#voir_texte, lng(8) + #tabulation + "Ctrl+B")
    AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_B, #voir_texte)
    MenuBar()
    MenuItem(#modifi_texte, lng(9) + #tabulation + "Ctrl+M")
    AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_M, #modifi_texte)
    CloseSubMenu()
    MenuBar()
    MenuItem(#vider, lng(10) + #tabulation + "SUPPR")
    AddKeyboardShortcut(0, #PB_Shortcut_Delete, #vider)
    CloseSubMenu()
    MenuBar()
    OpenSubMenu(lng(11))
    MenuItem(#insert_texte, lng(12) + #tabulation + "Ctrl+T")
    AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_T, #insert_texte)
    MenuItem(#insert_rep, lng(13) + #tabulation + "Ctrl+R")
    AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_R, #insert_rep)
    MenuItem(#insert_fichier, lng(14) + #tabulation + "Ctrl+F")
    AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_F, #insert_fichier)
    CloseSubMenu()
    MenuTitle("&?")
    MenuItem(#aide, lng(15) + #tabulation + "F1")
    AddKeyboardShortcut(0, #PB_Shortcut_F1, #aide)
    MenuBar()
    MenuItem(#about, lng(16) + " Gestion Presse-Papier...")
    MenuBar()
    MenuItem(#contact, lng(17))
    MenuBar()
    MenuItem(#maj, lng(18))
  EndIf
EndProcedure

Procedure ReadDatas()
  Restore lng
  For n=0 To 51
    Read lng(n)
  Next
EndProcedure

;/ If AppRunning(IsRun.s)=0 ; J'ai désactivé ça parce que j'ai pas les libs
If ExamineDesktops()
  Largeure=DesktopWidth(0)-100
  Hauteure=DesktopHeight(0)-100
  ;/  gppicon = CatchExeBigIcon() ; J'ai désactivé ça parce que j'ai pas les libs
  ;/  StIcon = CatchExeSmallIcon(); J'ai désactivé ça parce que j'ai pas les libs
  
  
  quit = 0
  quit1=0
  
  If FileSize(programme$ + ".manifest")
    DeleteFile(programme$ + ".manifest")
  EndIf
  
  ;- Avant ouverture de la fenetre tu cherches les fichiers. Si il
  ;- n'y en a pas, tu passes la main aux datas
  If ScanLanguage() = 0
    ;- Pas de fichiers, on lit les datas
    ; Restore lng
    ; For n=0 To 51
    ; Read lng(n)
    ; Next
    ReadDatas()
    MenuLangue = 0
  Else
    ;- Sinon, tu charges le fichier de langues que tu veux
    LoadLanguage(LangDefaut$)
    MenuLangue = 1
  EndIf
  
  If OpenWindow(#fenetre, 0, 0, Largeure, Hauteure, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Gestion Presse-Papier") And CreateStatusBar(0, WindowID()) And CreateMenu(0, WindowID())
    ;- Tout ça se retrouve dans la procédure UpdateGadgets
    ; StatusBarIcon(0, 0, StIcon)
    ; StatusBarText(0, 0, GetWindowTitle(0) + " " + lng(0))
    ; 
    ; MenuTitle(lng(1))
    ; MenuItem(#copier_fichier, lng(2) + #tabulation + "Ctrl+O")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_O, #copier_fichier)
    ; MenuItem(#enregistrer, lng(3) + #tabulation + "F12")
    ; AddKeyboardShortcut(0, #PB_Shortcut_F12, #enregistrer)
    ; MenuBar()
    ; MenuItem(#quiter, lng(4) + #tabulation + "Alt+F4")
    ; MenuTitle(lng(5))
    ; OpenSubMenu(lng(6))
    ; OpenSubMenu(lng(7))
    ; MenuItem(#voir_texte, lng(8) + #tabulation + "Ctrl+B")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_B, #voir_texte)
    ; MenuBar()
    ; MenuItem(#modifi_texte, lng(9) + #tabulation + "Ctrl+M")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_M, #modifi_texte)
    ; CloseSubMenu()
    ; MenuBar()
    ; MenuItem(#vider, lng(10) + #tabulation + "SUPPR")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Delete, #vider)
    ; CloseSubMenu()
    ; MenuBar()
    ; OpenSubMenu(lng(11))
    ; MenuItem(#insert_texte, lng(12) + #tabulation + "Ctrl+T")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_T, #insert_texte)
    ; MenuItem(#insert_rep, lng(13) + #tabulation + "Ctrl+R")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_R, #insert_rep)
    ; MenuItem(#insert_fichier, lng(14) + #tabulation + "Ctrl+F")
    ; AddKeyboardShortcut(0, #PB_Shortcut_Control | #PB_Shortcut_F, #insert_fichier)
    ; CloseSubMenu()
    ; MenuTitle("&?")
    ; MenuItem(#aide, lng(15) + #tabulation + "F1")
    ; AddKeyboardShortcut(0, #PB_Shortcut_F1, #aide)
    ; MenuBar()
    ; MenuItem(#about, lng(16) + " Gestion Presse-Papier...")
    ; MenuBar()
    ; MenuItem(#contact, lng(17))
    ; MenuBar()
    ; MenuItem(#maj, lng(18))
    
    ;- La fenêtre est ouverte, et les menus créés, on ajoute le menu
    ;- contenant les langues
    
    If MenuLangue = 1
      ForEach Lang()
        If Lang()\Titre = LangDefaut$
          LoadLanguage(LangDefaut$)
          UpdateGadgets()
        EndIf
      Next
      MenuLangue()
    Else
      ReadDatas()
      MenuLangue = 0
      UpdateGadgets()
    EndIf
    
    If FileSize("Aide.chm") = -1
      DisableMenuItem(#aide, 1)
    EndIf
    If FileSize("GPP Update.exe") = -1
      DisableMenuItem(#maj, 1)
    EndIf
    
    Repeat
      quit1=0
      If GetClipboardText() = ""
        DisableMenuItem(#enregistrer, 1)
        DisableMenuItem(#modifi_texte, 1)
        DisableMenuItem(#voir_texte, 1)
      Else
        DisableMenuItem(#enregistrer, 0)
        DisableMenuItem(#modifi_texte, 0)
        DisableMenuItem(#voir_texte, 0)
      EndIf
      Select WaitWindowEvent()
        Case #PB_EventMenu
          If EventMenuID() >= 500
            SelectElement(Lang(),EventMenuID() - 500)
            LangDefaut$ = Lang()\Titre
            LoadLanguage(LangDefaut$)
            UpdateGadgets() : MenuLangue()
            CreatePreferences(GPPPath$+"GPP.ini"):WritePreferenceString("Lang",LangDefaut$):ClosePreferences()
          EndIf
          
          Select EventMenuID()
            Case #copier_fichier
              copier$ = OpenFileRequester(lng(19), "", lng(20) + "|*.*", 0)
              If copier$
                If ReadFile(0, copier$)
                  texte$ = ""
                  Repeat
                    texte$ = texte$ + ReadString() + #lfcr$
                    NLignes + 1
                    Delay(20)
                  Until Eof(0)
                  CloseFile(0)
                  SetClipboardText(texte$)
                  msg$=ReplaceString(lng(22),"%f%",copier$,1,1)
                  MessageRequester(lng(21), msg$, #MB_OK | #MB_ICONINFORMATION)
                Else
                  msg$=ReplaceString(lng(24),"%f%",copier$,1,1)
                  MessageRequester(lng(23), msg$, #MB_OK | #MB_ICONSTOP)
                EndIf
              EndIf
            Case #enregistrer
              reg$ = SaveFileRequester(lng(25), "gpp.log", lng(26)+"|*.log;*.txt", 0)
              If reg$
                If GetClipboardText()
                  If CreateFile(0, reg$)
                    WriteString(GetClipboardText())
                    CloseFile(0)
                    msg$=ReplaceString(lng(27),"%f%",reg$,1,1)
                    msg$=ReplaceString(msg$,"%f2%",GetFilePart(reg$),1,1)
                    MessageRequester(lng(21), msg$, #MB_OK | #MB_ICONINFORMATION)
                  Else
                    MessageRequester(lng(23), lng(28), #MB_OK | #MB_ICONSTOP)
                  EndIf
                EndIf
              EndIf
            Case #quiter
              quit = 1
            Case #voir_texte
              contenu$ = GetClipboardText()
              If contenu$
                MessageRequester(lng(29), ReplaceString(lng(30),"%f%",contenu$,1,1), #PB_MessageRequester_Ok | #MB_ICONASTERISK)
              EndIf
            Case #modifi_texte
              If GetClipboardText()
                If OpenWindow(#Fenetre_Modifier,0,0,700,500,#PB_Window_WindowCentered|#PB_Window_ScreenCentered|#PB_Window_TitleBar|#PB_Window_SystemMenu,lng(31),WindowID(#fenetre)) And CreateGadgetList(WindowID(#Fenetre_Modifier))
                  TextGadget(0,0,0,275,50,lng(32),#PB_Text_Center)
                  EditorGadget(1,1,50,600,350)
                  ButtonGadget(2,275,330,50,20,lng(33),#PB_Text_Center)
                  ButtonGadget(3,275,370,50,20,lng(34),#PB_Text_Center)
                  SetGadgetText(1,GetClipboardText())
                  ActivateGadget(1)
                  AddKeyboardShortcut(#Fenetre_Modifier,#PB_Shortcut_Escape,3)
                  Repeat
                    Select WaitWindowEvent()
                      Case #PB_EventGadget
                        Select EventGadgetID()
                          Case 2
                            If GetGadgetText(1)
                              SetClipboardText(GetGadgetText(1))
                              MessageRequester(lng(21), ReplaceString(lng(40),"%f%",GetClipboardText(),1,1), #MB_OK | #MB_ICONINFORMATION)
                            Else
                              MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                            EndIf
                            quit1=1
                          Case 3
                            MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                            quit1=1
                        EndSelect
                      Case #PB_EventMenu
                        Select EventMenuID()
                          Case 3
                            MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                            quit1=1
                        EndSelect
                      Case #PB_EventCloseWindow
                        MessageRequester(lng(21),lng(34),#MB_OK|#MB_ICONEXCLAMATION)
                        quit1=1
                    EndSelect
                    Delay(20)
                  Until quit1=1
                  CloseWindow(#Fenetre_Modifier)
                  CloseGadgetList()
                Else
                  MessageRequester(lng(23),lng(36),#MB_OK|#MB_ICONSTOP)
                EndIf
              Else
                If OpenWindow(#fenetre_Inserer,0,0,700,500,#PB_Window_WindowCentered|#PB_Window_ScreenCentered|#PB_Window_TitleBar|#PB_Window_SystemMenu,lng(37),WindowID(#fenetre)) And CreateGadgetList(WindowID(#fenetre_Inserer))
                  TextGadget(0,0,0,275,50,lng(38),#PB_Text_Center)
                  EditorGadget(1,1,50,600,350)
                  ButtonGadget(2,275,330,50,20,lng(33),#PB_Text_Center)
                  ButtonGadget(3,275,370,50,20,lng(34),#PB_Text_Center)
                  ActivateGadget(1)
                  AddKeyboardShortcut(#fenetre_Inserer,#PB_Shortcut_Escape,3)
                  Repeat
                    Select WaitWindowEvent()
                      Case #PB_EventGadget
                        Select EventGadgetID()
                          Case 2
                            If GetGadgetText(1)
                              SetClipboardText(GetGadgetText(1))
                              MessageRequester(lng(21), ReplaceString(lng(40),"%f%",GetClipboardText(),1,1), #MB_OK | #MB_ICONINFORMATION)
                            Else
                              MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                            EndIf
                            quit1=1
                          Case 3
                            MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                            quit1=1
                        EndSelect
                      Case #PB_EventMenu
                        Select EventMenuID()
                          Case 3
                            MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                            quit1=1
                        EndSelect
                      Case #PB_EventCloseWindow
                        MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                        quit1=1
                    EndSelect
                    Delay(20)
                  Until quit1=1
                  CloseWindow(#fenetre_Inserer)
                  CloseGadgetList()
                Else
                  MessageRequester(lng(23),lng(36),#MB_OK|#MB_ICONSTOP)
                EndIf
              EndIf
              UseWindow(#fenetre)
              ActivateWindow()
            Case #insert_texte
              If OpenWindow(#fenetre_Inserer,0,0,700,500,#PB_Window_WindowCentered|#PB_Window_ScreenCentered|#PB_Window_TitleBar|#PB_Window_SystemMenu,lng(37),WindowID(#fenetre)) And CreateGadgetList(WindowID(#fenetre_Inserer))
                TextGadget(0,0,0,275,50,lng(38),#PB_Text_Center)
                EditorGadget(1,1,50,600,350)
                ButtonGadget(2,275,330,50,20,lng(33),#PB_Text_Center)
                ButtonGadget(3,275,370,50,20,lng(34),#PB_Text_Center)
                ActivateGadget(1)
                AddKeyboardShortcut(#fenetre_Inserer,#PB_Shortcut_Escape,3)
                Repeat
                  Select WaitWindowEvent()
                    Case #PB_EventGadget
                      Select EventGadgetID()
                        Case 2
                          If GetGadgetText(1)
                            SetClipboardText(GetGadgetText(1))
                            MessageRequester(lng(21), ReplaceString(lng(40),"%f%",GetClipboardText(),1,1), #MB_OK | #MB_ICONINFORMATION)
                          Else
                            MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                          EndIf
                          quit1=1
                        Case 3
                          MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                          quit1=1
                      EndSelect
                    Case #PB_EventMenu
                      Select EventMenuID()
                        Case 3
                          MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                          quit1=1
                      EndSelect
                    Case #PB_EventCloseWindow
                      MessageRequester(lng(21),lng(35),#MB_OK|#MB_ICONEXCLAMATION)
                      quit1=1
                  EndSelect
                  Delay(20)
                Until quit1=1
                CloseWindow(#fenetre_Inserer)
                CloseGadgetList()
                UseWindow(#fenetre)
                ActivateWindow()
              Else
                MessageRequester(lng(23),lng(36),#MB_OK|#MB_ICONSTOP)
              EndIf
            Case #insert_rep
              chemain$ = PathRequester(lng(39), "")
              If chemain$
                SetClipboardText(chemain$)
                MessageRequester(lng(21), ReplaceString(lng(40),"%f%",GetClipboardText(),1,1), #MB_OK | #MB_ICONINFORMATION)
              EndIf
            Case #insert_fichier
              fichier$ = OpenFileRequester(lng(41), "", lng(20)+"|*.*", 0)
              If fichier$
                SetClipboardText(fichier$)
                MessageRequester(lng(21), ReplaceString(lng(40),"%f%",GetClipboardText(),1,1), #MB_OK | #MB_ICONINFORMATION)
              EndIf
            Case #vider
              confirm = MessageRequester(lng(42), ReplaceString(lng(43),"%crlf%",#lfcr$,1,1), #PB_MessageRequester_YesNo | #MB_ICONEXCLAMATION | #MB_DEFBUTTON2)
              If confirm = 6
                ClearClipboard()
                MessageRequester("Gestion Presse-Papier", lng(44), #PB_MessageRequester_Ok | #MB_ICONASTERISK)
              Else
                MessageRequester("Gestion Presse-Papier", lng(45), #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
              EndIf
            Case #aide
              OpenHelp("Aide.chm", "Fonctions.htm")
            Case #about
              ShellAbout_(WindowID(#fenetre), "Gestion Presse-Papier", "Gestion Presse-Papier " + #version + " copyright " + Chr(169) + " 2004 par Gansta93. Tous droits réservés.", gppicon)
            Case #contact
              MessageRequester("Gestion Presse-Papier", ReplaceString(lng(46),"%crlf%",#lfcr$,1,1), #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
              runoutlook = RunProgram("http://www.gansta93.com/?page=contact", "", "", 1)
              If runoutlook = 1
                MessageRequester("Gestion Presse-Papier", ReplaceString(lng(47),"%crlf%",#lfcr$,1,1), #PB_MessageRequester_Ok | #MB_ICONINFORMATION)
              Else
                MessageRequester("Gestion Presse-Papier", lng(48), #PB_MessageRequester_Ok | #MB_ICONSTOP)
              EndIf
            Case #maj
              If RunProgram("GPP Update.exe", "", "") = 0
                MessageRequester(lng(23), lng(48), #MB_OK | #MB_ICONSTOP)
              EndIf
          EndSelect
        Case #PB_Event_CloseWindow
          quit = 1
      EndSelect
      Delay(20)
    Until quit = 1
    CloseWindow(0)
  Else
    MessageRequester(lng(23),lng(49),#MB_OK|#MB_ICONSTOP)
  EndIf
Else
  MessageRequester(lng(23),lng(50),#MB_OK|#MB_ICONSTOP)
EndIf
;/ Else ; A partir de là, réactive tout
  ;/ ShowWindow_(Handle,#SW_HIDE)
  ;/ ShowWindow_(Handle,#SW_MINIMIZE)
  ;/ ShowWindow_(Handle,#SW_RESTORE)
;/ ShowWindow_(Handle,#SW_MAXIMIZE)
;/  EndIf
End
  
DataSection
lng:
Data.s "prêt à l'utilisation : Le texte vient des datas"
Data.s "&Fichier"
Data.s "C&opier le contenu d'un fichier dans le Presse-Papier..."
Data.s "&Enregistrer le presse-Papier dans un fichier..."
Data.s "&Quiter"
Data.s "F&onctions"
Data.s "&Gestion"
Data.s "&Texte Contenu"
Data.s "&Voir le texte contenu du Presse-Papier..."
Data.s "&Modifier le contenu du Presse-Papier..."
Data.s "Vi&der le Presse-Papier..."
Data.s "&Insertion"
Data.s "Insérer un &texte dans le Presse-Papier..."
Data.s "Insérer un chemain de &Répertoir dans le Presse-Papier..."
Data.s "Insérer un chemain de &Fichier dans le Presse-Papier..."
Data.s "&Aide"
Data.s "à &Propos de"
Data.s "&M'envoyer un bug/une suggestion..."
Data.s "&Vérifier les mises à jours..."
Data.s "Choisire le fichier à copier dans le Presse-Papier"
Data.s "Tout type de fichier (*.*)"
Data.s "Information"
Data.s "Le contenu de %f% est copié dans votre Presse-Papier."
Data.s "Erreure"
Data.s "Impossible d'ouvrire %f%."
Data.s "Enregistrer le Presse-Papier dans un fichier"
Data.s "Fichier journal ou text(*.log;*.txt)"
Data.s "Le contenu du Presse-Papier a été enregistré dans %f% et peut être visualisé en editant %f2%  à l'aide d'un editeur de texte comme le Bloc-Notes."
Data.s "Impossible d'enregistrer le contenu du Presse-Papier."
Data.s "Contenu du Presse-Papier"
Data.s "Votre Presse-Papier contient le texte '%f%'"
Data.s "Modification du Texte dans le Presse-Papier"
Data.s "Entrez le nouveau texte à insérer dans le Presse-Papier:"
Data.s "OK"
Data.s "Annuler"
Data.s "Vous n'avez rien entré. Rien ne sera donc modifié."
Data.s "Une erreur est survenue lors de la création de la fenêtre."
Data.s "Insertion d'un Texte dans le Presse-Papier"
Data.s "Entrez le nouveau texte à insérer dans le Presse-Papier:"
Data.s "Sélectionnez le chemain du dossier à enregistrer dans le Presse-Papier:"
Data.s "%f%  est copié dans votre Presse-Papier."
Data.s "Enregistrer un chemain de fichier dans le Presse-Papier"
Data.s "Confirmation"
Data.s "Votre Presse-Papier va être vidé.%crlf%Êtes-vous sur ?"
Data.s "Votre presse-Papier est maintenant vidé!"
Data.s "Votre Presse-Papier ne sera pas vidé."
Data.s "Votre navigateur internet va s'ouvrire.%crlf%Dans objet, choisissez à propos de Gestion Presse-Papier, tapez votre message puis cliquez sur envoyer(Alt+S).%crlf%Maintenant, cliquez sur OK."
Data.s "Merci de votre collaboration.%crlf%Je prendrai avec sérieux touts les commentaires qui me seront envoyés."
Data.s "Impossible d'ouvrire votre navigateur."
Data.s "Impossible de démarrer le module de mises à jours."
Data.s "Erreur lors de l'initialisation du programme."
Data.s "Impossible d'optenire les résolutions d'écran."
EndDataSection
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Tu crois que ça vaut vraiment le coup de faire un fichier ini seulemant pour une donnée?
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Si cette donnée change selon le choix de l'utilisateur, comment veux-tu faire autrement?
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Chris a écrit :Si cette donnée change selon le choix de l'utilisateur, comment veux-tu faire autrement?
C'est vrai... mais je disais ça parce que je trouvais ça assez bizarre quelqu'un qui va voir qu'une ligne va suremant l'effacer mais bon...
Un ami m'a dit.
Ta méthode multilangage n'est pas bonne. Si je supprime une ligne, on fichier n'est plus valable!
Maiis j'avais pas pensé... quel intérêt?
Enfin bon j'aurais voulu ton avi ou celui des autres aussi.
J'suis en train de me faire tout l'anglais... je le passerais suremant à quelqu'un pour la correction parce que c un peu mot à mot :-).
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ton ami a écrit :Citation:
Ta méthode multilangage n'est pas bonne. Si je supprime une ligne, on fichier n'est plus valable!
Ben alors demande lui de t'aider, et on verra de quoi il est capable! :wink:

C'est facile de critiquer telle ou telle méthode, encore faut-il être capable de prouver qu'on peut faire mieux, et à priori, il ne t'a rien proposé de mieux, jusqu'à preuve du contraire.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Moi j'avais pensé à la vérification du nombe de lignes... je vais lui demander un code! :-)
Sinon... on y est je vais essayer de créer l'installation pour qu'elle supporte l'anglais quoi que... ils se débrouillent!
Parcontre je n'ai plus que l'aide à mettre à jours, trouver un correcteur pour mon anglais (je vais peut-être réquisicionner ma proffe), quelqu'un pour me traduire ça en Alemand (il va peut-être aussi réquisicionner son proffe), et en Espagnol (là encore... réquicion) va me faloir des mandats!
Je vais en parler à ma hiérarchie :-).
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Je comprend rien à ton histoire! :?

Pourquoi tu veux vérifier le nombre de lignes, et dans quel fichier?

PS: Pendant que tu y est, réquisitionne aussi ton prof de français.
On ne sait jamais, si il trouvait une fôte d'ortografe... :lol:
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Chris a écrit :Je comprend rien à ton histoire! :?

Pourquoi tu veux vérifier le nombre de lignes, et dans quel fichier?

PS: Pendant que tu y est, réquisitionne aussi ton prof de français.
On ne sait jamais, si il trouvait une fôte d'ortografe... :lol:
Pour ta question, je pensais vérifier le nombre de lignes du fichier de langue pour en vérifier sa validité (par rapport à ce que disais mon ami).
Pour le proffe de français j'y ai plus que songé mais préfèrais garder le cilence à ce sujet :-).
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Tu peux vérifier si tu veux, mais il n'y a aucune raison pour que le nombre de lignes change de lui même, et encore moins pour que l'utilisateur ajoute ou supprime des lignes.

Si tu as des lignes en moins, tu auras des gadgets qui n'afficheront rien, et tu risques d'avoir un décalage dans l'affichage des messages.

Si tu as des lignes en trop, elles ne serviront à rien, c'est tout.

Sinon, pour la vérification, tu peux utiliser la procédure qui lit le fichier de langues.

Code : Tout sélectionner

;- Lecture du fichier de langue 
Procedure LoadLanguage(Language$) 
  ForEach Lang() 
    If Lang()\Titre = Language$ 
      Break 
    EndIf 
  Next 
  
  If ReadFile(0,Lang()\Chemin) 
    Repeat 
      lng(i) = ReadString() : i+1 
    Until Eof(0) 
  CloseFile(0)
  EndIf 
EndProcedure
Et tu la modifie comme ça:

Code : Tout sélectionner

;- Lecture du fichier de langue 
Procedure LoadLanguage(Language$) 
  ForEach Lang() 
    If Lang()\Titre = Language$ 
      Break 
    EndIf 
  Next 
  
  If ReadFile(0,Lang()\Chemin) 
    Repeat 
      lng(i) = ReadString() : i+1 
    Until Eof(0) 
    CloseFile(0)
    If i <> NbreDeLignes
      MessageRequester("Erreur","Le nombre de lignes est incorrect")
      ReadDatas()
    Endif
  EndIf 
EndProcedure
NbreDeLignes est une variable que tu ajoutes au début du code, et dont la valeur correspond au nombre de lignes du fichier.

J'ai modifié la procédure directement dans le forum, donc, il faudra la tester.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Voilà la procédure modifiée.

Code : Tout sélectionner

Procedure LoadLanguage(Language$)
  NbreDeLignes = 53 ; Vérifie que le nombre de lignes est correct dans tes fichiers
  
  ForEach Lang()
    If Lang()\Titre = Language$
      Break
    EndIf
  Next
  
  If ReadFile(0,Lang()\Chemin)
    Repeat
      lng(i) = ReadString() : i+1
    Until Eof(0)
    CloseFile(0)
    
    If i <> NbreDeLignes
      MessageRequester("Erreur dans le fichier de langue","Le nombre de lignes du fichier ''"+ Language$+".lng'' est incorrect."+#CRLF$+"Le programme va lire les données par défaut")
      ReadDatas()
      MenuLangue = 0
    Else 
      MenuLangue = 1
    EndIf
  EndIf
EndProcedure
Il faut également supprimer MenuLangue = 1 dans la commande qui appelle la procedure.

Code : Tout sélectionner

  ;- Avant ouverture de la fenetre tu cherches les fichiers. Si il
  ;- n'y en a pas, tu passes la main aux datas
  If ScanLanguage() = 0
    ;- Pas de fichiers, on lit les datas
    ReadDatas()
    MenuLangue = 0
  Else
    ;- Sinon, tu charges le fichier de langues que tu veux
    LoadLanguage(LangDefaut$)
    ;MenuLangue = 1 ;<--- à supprimer
  EndIf
Pense aussi à recompter le nombre de lignes de tes fichier de langues pour vérifier qu'il correspond à la valeur que j'ai donné à NbreDeLignes

J'ai mis le texte du MessageRequester directement dans la fonction, mais ce serait mieux s'il était dans les datas.
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Arf... maintenant il ne prand en compte que les datas...
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Est-ce que le message s'affiche?
Tu as vérifié que la valeur de la variable correspondait au nombre de lignes dans les fichiers?
Tu as supprimé MenuLangue = 1?
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Ah... j'ai fais un truc qui marche... à croire que mon GPPPath$ n'est vraiment pas fait comme il le faut.
Si je remplace

Code : Tout sélectionner

  If ExamineDirectory(0, GPPPath$+"Lang", "*.*")
par

Code : Tout sélectionner

  If ExamineDirectory(0, "Lang", "*.*")
ça marche.
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Ca m'étonne pas, ton truc retourne le nom de l'executable suivi d'un \

essaye plutot GPPPath$=GetPathPart(programme$)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message par gansta93 »

Chris a écrit :Ca m'étonne pas, ton truc retourne le nom de l'executable suivi d'un \

essaye plutot GPPPath$=GetPathPart(programme$)
C'est pas ce que j'ai fais?
Répondre