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
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