Page 1 sur 1

comment sauvegarder les données

Publié : mar. 09/mars/2004 9:26
par france
je ne sais pas comment sauvegarder les données d'un fichier

je m'explique,

si par exemple on cree un repertoire, comment faire en sorte que l'ordinateur garde les noms renrés en memoire

Publié : mar. 09/mars/2004 10:03
par Le Soldat Inconnu
Heu, désolé, j'ai rien compris. un exemple de ce que tu souhaites faire serait surement plus compréhensible ?

tu veux choisir un nom de fichier ou un de dossier et l'utiliser pour créer un fichier, c'est ça ?

Publié : mar. 09/mars/2004 10:20
par france
:oops:

admettons qu'on fasse un repertoire telephonique.

une fois qu'on a rentre tous les noms et les numeros de telephone,

comment faire pour que l'ordinateur les garde en memoire.

Publié : mar. 09/mars/2004 10:41
par comtois
pour l'instant je fais comme ça :

Code : Tout sélectionner

Structure Parametres
   Nom.s
   Telephone.s
EndStructure

NewList Repertoire.Parametres()   

;fabrique un répertoire
For a = 1 To 3
   Read Nom$
   Read Tel$
   AddElement(Repertoire())
   Repertoire()\Nom = Nom$
   Repertoire()\Telephone = Tel$
Next a

;enregistre le repertoire
fichier$ = "RepertoireBidon.dat"
If CreateFile(0,fichier$)
   ForEach Repertoire()
      WriteStringN(Repertoire()\Nom)
      WriteStringN(Repertoire()\Telephone)
   Next
   CloseFile(0)
EndIf

;efface le repertoire
ClearList(Repertoire())

;lecture du repertoire
If OpenFile(0,fichier$)
   While Eof(0) = 0 
      AddElement(Repertoire())
      Repertoire()\Nom = ReadString()
      Repertoire()\Telephone = ReadString()
   Wend
   CloseFile(0)
EndIf

;affiche le résultat
ForEach Repertoire()
   Debug Repertoire()\Nom
   Debug Repertoire()\Telephone
Next
   
DataSection
Data.s "Toto","03.04.05.06"
Data.s "Tutu","23.23.56.26"
Data.s "Titi","43.98.54.71"
EndDataSection
Dans CodeArchiv , j'ai vu ça , c'est plus efficace ,je vais étudier ça pour le mettre en pratique :)

Code : Tout sélectionner

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=2479&highlight=
; Author: NicTheQuick
; Date: 06. October 2003

; Save linked list in a file...

; LinkedList in Datei speichern:
; Ich habe eine Liste die ich durch eine Structur definiert habe. Wie kann ich diese in eine Datei speichern und wieder auslesen. 


Structure ValueStructure 
  Long.l 
  Word.l 
  Byte.l 
  Float.f 
EndStructure 

Structure StringStructure 
  String1.s 
  String2.s 
  String3.s 
EndStructure 

NewList ValueLinkedList.ValueStructure() 
NewList StringLinkedList.StringStructure() 

Enumeration 
  #SaveFile 
EndEnumeration 

Procedure SaveLinkedList_Value(*FirstElement, StructureSize.l, File.s) 
  Protected *PosLL 
  If CreateFile(#SaveFile, File) 
    *PosLL = *FirstElement 
    Repeat 
      WriteData(*PosLL, StructureSize) 
      *PosLL = PeekL(*PosLL - 8) + 8 
    Until *PosLL = 8 
    CloseFile(#SaveFile) 
  EndIf 
EndProcedure 
Procedure LoadLinkedList_Value(StructureSize.l, File.s) 
  If ReadFile(#SaveFile, File) 
    ClearList(ValueLinkedList()) 
    While Eof(#SaveFile) = 0 
      AddElement(ValueLinkedList()) 
      ReadData(@ValueLinkedList(), StructureSize) 
    Wend 
    CloseFile(#SaveFile) 
  EndIf 
EndProcedure 

Procedure SaveLinkedList_String(*FirstElement, StructureSize.l, File.s) 
  Protected *PosLL, StringPos.l, StringLength.l, StringAddress.l 
  If CreateFile(#SaveFile, File) 
    *PosLL = *FirstElement 
    Repeat 
      For StringPos = 0 To StructureSize - 1 Step 4 
        StringAddress = PeekL(*PosLL + StringPos) 
        StringLength = Len(PeekS(StringAddress)) 
        WriteLong(StringLength) 
        WriteData(StringAddress, StringLength) 
      Next 
      *PosLL = PeekL(*PosLL - 8) + 8 
    Until *PosLL = 8 
    CloseFile(#SaveFile) 
  EndIf 
EndProcedure 
Procedure LoadLinkedList_String(File.s) 
  Protected StringPos.l, StringLength.l 
  If ReadFile(#SaveFile, File) 
    ClearList(StringLinkedList()) 
    While Eof(#SaveFile) = 0 
      AddElement(StringLinkedList()) 
      For StringPos = 1 To 3 
        StringLength = ReadLong() 
        Select StringPos 
          Case 1 
            StringLinkedList()\String1 = Space(StringLength) 
            ReadData(@StringLinkedList()\String1, StringLength) 
          Case 2 
            StringLinkedList()\String2 = Space(StringLength) 
            ReadData(@StringLinkedList()\String2, StringLength) 
          Case 3 
            StringLinkedList()\String3 = Space(StringLength) 
            ReadData(@StringLinkedList()\String3, StringLength) 
        EndSelect 
      Next 
    Wend 
    CloseFile(#SaveFile) 
  EndIf 
EndProcedure 

;- Values 
For a.l = 0 To 200 Step 4 
  AddElement(ValueLinkedList()) 
  ValueLinkedList()\Long = a 
  ValueLinkedList()\Word = a + 1 
  ValueLinkedList()\Byte = a + 2 
  ValueLinkedList()\Float = a / 10 
Next 
FirstElement(ValueLinkedList()) 
SaveLinkedList_Value(@ValueLinkedList(), SizeOf(ValueStructure), "tempvalues.dat") 

LoadLinkedList_Value(SizeOf(ValueStructure), "tempvalues.dat") 

ResetList(ValueLinkedList()) 
ForEach ValueLinkedList() 
  Debug ValueLinkedList()\Float 
Next 

;- Strings 

For a.l = 0 To 200 Step 3 
  AddElement(StringLinkedList()) 
  StringLinkedList()\String1 = "abc: " + Str(a) 
  StringLinkedList()\String2 = Str(a + 1) + "abcdefghijklmnopqrstuvwxyz" 
  StringLinkedList()\String3 = "Diese Strings wurden alle gespeichert" 
Next 
FirstElement(StringLinkedList()) 
SaveLinkedList_String(@StringLinkedList(), SizeOf(StringStructure), "tempstrings.dat") 

ClearList(StringLinkedList()) 
LoadLinkedList_String("tempstrings.dat") 

ResetList(StringLinkedList()) 
ForEach StringLinkedList() 
  Debug StringLinkedList()\String2 
Next

Publié : mar. 09/mars/2004 11:57
par CORBASE
Bah, pour faire un répertoire télép^honique, le mieux reste la base de donnée ..

Sinon, pour le mettre dans le fichier texte ou .dat, le mieux c'est l'exemple de Comtois :p

Comme je débute aussi, je te dirais de prendre les exemples fournis avec PB, surtout celui des Files qui est très bien fait :p

Publié : mar. 09/mars/2004 18:43
par Oliv
L'exemple de codearchiv marche très très bien :d