Petit probleme avec mon code ...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Petit probleme avec mon code ...

Message par jbernard13 »

bonjour,je rencontre un probleme avec ce code , si je sauvegarde le fichier , et que je le recharge , il ya rien d'écris dans le fichier .
si quelq'un peux m'aider svp . Merci

Code : Tout sélectionner

*;*** Test de blocnote ***
;**** Par jbernard13****

;**** Constantes de la fenetre 
Enumeration
  #Fenetre_Main
EndEnumeration

;**** Constantes de la barre de menu ****
Enumeration
  #menu_charger
  #menu_sauver
  #menu_quitter
EndEnumeration
;**** Constantes des gadgets ****
Enumeration
  #Editeur_texte
  #fichier_sauver
EndEnumeration
;**** Procedures pour la chargement et la sauvegarde d'un fichier ****
;**** Procedure de chargement d'un fichier ****
Procedure Chargement()
  ClearGadgetItems(#Editeur_texte)
  
    text.s=OpenFileRequester( "chargement d'un fichier texte","","Fichier text|*.txt",0)
    If text<> ""
      If OpenFile(0,text)
        Repeat
          AddGadgetItem(#Editeur_texte,-1,ReadString(0))
        Until Eof(0)
        CloseFile(0)
      EndIf
    EndIf
  EndProcedure 
 


;**** Procedure de sauvegarde d'un fichier **** 
Procedure Sauvegarde()
  Sauver.s =SaveFileRequester("Sauvegarde  d'un fichier","","Fichier.texte|*.txt",0)
  If LCase(GetExtensionPart(Sauver)) <> "text"
    Sauver.s+".txt"
    
    CreateFile(#fichier_sauver ,Sauver)
    For nb_ligne = 0 To CountGadgetItems(#Editeur_texte ) 
      texte_ligne$=GetGadgetItemText(#Editeur_texte , nb_ligne,0) 
      WriteStringN(#fichier_sauver ,texte_ligne$) 
    Next 
  EndIf
  
  
EndProcedure





;**** Creation de la fenetre, de la barre de menu et du gadget ****
If OpenWindow(#Fenetre_Main,0,0,560,480,"BlocNote demo",#PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
  If CreateMenu(0,WindowID(#Fenetre_Main))
    MenuTitle("Fichier")
    MenuItem(#menu_charger,"Charger un fichier")
    MenuItem(#menu_sauver,"Sauver un fichier")
    MenuBar()
    MenuItem(#menu_quitter,"Quitter")
    EndIf
 EditorGadget(#Editeur_texte,10,20,540,380)
EndIf



;****Boucle du programme ****
Repeat 
  Select WaitWindowEvent()
    Case #PB_Event_Menu
      Select EventMenu()
        Case #menu_charger : Chargement()
        Case #menu_sauver : Sauvegarde()
          Case #menu_quitter
          MessageRequester("information","Au revoir")
          CloseWindow(#Fenetre_Main)
      EndSelect
      Case #PB_Event_CloseWindow
      Fermer_fenetre =#True
  EndSelect
Until Fermer_fenetre
End


Jbernard13
Atomo
Messages : 207
Inscription : lun. 17/sept./2007 12:27

Message par Atomo »

Tu as oublié de fermer ton fichier après une sauvegarde, il suffit d'ajouter un CloseFile(#fichier_sauver) dans ta procédure sauvegarde() à la fin de l'écriture dans le fichier texte.

Code : Tout sélectionner

Procedure Sauvegarde() 
  Sauver.s =SaveFileRequester("Sauvegarde  d'un fichier","","Fichier.texte|*.txt",0) 
  If LCase(GetExtensionPart(Sauver)) <> "text" 
    Sauver.s+".txt" 
    
    CreateFile(#fichier_sauver ,Sauver) 
    For nb_ligne = 0 To CountGadgetItems(#Editeur_texte ) 
      texte_ligne$=GetGadgetItemText(#Editeur_texte , nb_ligne,0) 
      WriteStringN(#fichier_sauver ,texte_ligne$) 
    Next
    CloseFile(#fichier_sauver)
  EndIf 
EndProcedure 
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci beaucoup
Jbernard13
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

je complète

il y a déjà une erreur sur l'ajout de l'extension.

Ensuite j'ai ajouter un test pour savoir si le nom de fichier est correct

et je demande, si le fichier existe, si il faut l'écraser ou non.

Code : Tout sélectionner

Procedure Sauvegarde()
  Sauver.s =SaveFileRequester("Sauvegarde  d'un fichier","","Fichier.texte|*.txt",0)
  If LCase(GetExtensionPart(Sauver)) <> "txt" ; Si il manque l'extension, on l'ajoute
    Sauver+".txt"
  EndIf
  If CheckFilename(GetFilePart(Sauver)) ; On vérifie que le nom de fichier est correct
    If FileSize(Sauver) >= 0 ; Si le fichier existe, on demande si on doit l'écraser
      If MessageRequester("Sauvegarde", "Ecraser le fichier existant ?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_No
        ; Si on ne veut pas écraser le fichier, on sort de la procedure
        ProcedureReturn
      EndIf
    EndIf
    CreateFile(#fichier_sauver ,Sauver)
    For nb_ligne = 0 To CountGadgetItems(#Editeur_texte )
      texte_ligne$=GetGadgetItemText(#Editeur_texte , nb_ligne,0)
      WriteStringN(#fichier_sauver ,texte_ligne$)
    Next
    CloseFile(#fichier_sauver)
  Else
    ; message d'erreur, nom de fichier incorrect
    MessageRequester("Erreur", "Le nom de fichier est incorrect")
  EndIf
EndProcedure
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

Merci Régis

pour ton cours
Jbernard13
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

Le Soldat Inconnu a écrit :je complète
Encore plus complet :wink:
jbernard13, il faut toujours vérifier le succès d'une fonction, sinon on s'expose à des plantages ...
Dans ce cas, il faut vérifier que le fichier a pu être ouvert en écriture.
Exemple :

Code : Tout sélectionner

Procedure Sauvegarde() 
  Sauver.s =SaveFileRequester("Sauvegarde  d'un fichier","","Fichier.texte|*.txt",0) 
  If LCase(GetExtensionPart(Sauver)) <> "txt" ; Si il manque l'extension, on l'ajoute 
    Sauver+".txt" 
  EndIf 
  If CheckFilename(GetFilePart(Sauver)) ; On vérifie que le nom de fichier est correct 
    If FileSize(Sauver) >= 0 ; Si le fichier existe, on demande si on doit l'écraser 
      If MessageRequester("Sauvegarde", "Ecraser le fichier existant ?", #PB_MessageRequester_YesNo) = #PB_MessageRequester_No 
        ; Si on ne veut pas écraser le fichier, on sort de la procedure 
        ProcedureReturn 
      EndIf 
    EndIf 
    If CreateFile(#fichier_sauver ,Sauver) 
      For nb_ligne = 0 To CountGadgetItems(#Editeur_texte ) 
        texte_ligne$=GetGadgetItemText(#Editeur_texte , nb_ligne,0) 
        WriteStringN(#fichier_sauver ,texte_ligne$) 
      Next 
      CloseFile(#fichier_sauver) 
    Else
      MessageRequester("Erreur", "Impossible de créer le fichier !") 
    EndIf
  Else 
    ; message d'erreur, nom de fichier incorrect 
    MessageRequester("Erreur", "Le nom de fichier est incorrect") 
  EndIf 
EndProcedure
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci Gnozal
et pour charger le fichier on écris la meme procedure?
Jbernard13
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message par gnozal »

jbernard13 a écrit :merci Gnozal
et pour charger le fichier on écris la meme procedure?
En gros, oui.
Il faut remplacer CreateFile() par ReadFile() et WriteStringN() par ReadString().
Répondre