bonjour tout le monde je viens de créer deux programmes en 2 heures
le record du monde battu...
un navigateur internet = ici
un editeur de text = ici
repondez moi sur les critiques et les bugs
comment les trouvez vous???
2 en 1 alors la...
-
- Messages : 190
- Inscription : ven. 21/oct./2005 7:49
- Localisation : Quelque part en france !
2 en 1 alors la...
bonne journer à tous !!!
Re: 2 en 1 alors la...
Ton éditeur de texte n'édite rien du tout, il ne charge que la première ligne du fichier.
Voilà trois méthodes pour charger et sauvegarder les fichiers.
Pour les extensions des fichiers lors de la sauvegarde, c'est à toi de les mettre, je n'ai pas mis de vérification.
La méthode 1, c'est la plus lente. Elle lit les lignes une à une dans le fichier, et les place dans l'éditeur. A réserver pour de touts petits fichiers.
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Editeur
EndEnumeration
Enumeration
#Menu
EndEnumeration
Enumeration
#M_Ouvrir
#M_Sauver
EndEnumeration
Procedure OuvrirFichier(File.s)
If ReadFile(0, File)
Repeat
AddGadgetItem(#Editeur, -1, ReadString())
Until Eof(0)
CloseFile(0)
EndIf
ProcedureReturn
EndProcedure
Procedure SauverFichier(File.s)
If CreateFile(0, File)
For i = 0 To CountGadgetItems(#Editeur) -1
WriteStringN(GetGadgetItemText(#Editeur, i, 0))
Next
CloseFile(0)
EndIf
ProcedureReturn
EndProcedure
If OpenWindow(#Window_0, 0, 0, 600, 570, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Editeur",0)
If CreateMenu(#Menu, WindowID(#Window_0))
MenuTitle("Fichiers")
MenuItem(#M_Ouvrir, "Ouvrir")
MenuItem(#M_Sauver, "Sauver")
EndIf
If CreateGadgetList(WindowID(#Window_0))
EditorGadget(#Editeur, 0, 0, 600, 600-MenuHeight(), "Quitter")
EndIf
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_EventMenu
Select EventMenuID()
Case #M_Ouvrir
Fichier$ = OpenFileRequester("Ouvrir un fichier","C:","Fichiers texte (*.txt)|*.txt",0)
If Fichier$
OuvrirFichier(Fichier$)
EndIf
Case #M_Sauver
Fichier$ = SaveFileRequester("Sauver un fichier","C:","Fichiers texte (*.txt)|*.txt",0)
If Fichier$
SauverFichier(Fichier$)
EndIf
EndSelect
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
La sauvegarde se fait comme dans la méthode 1. Pour des fichiers de taille moyenne.
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Editeur
EndEnumeration
Enumeration
#Menu
EndEnumeration
Enumeration
#M_Ouvrir
#M_Sauver
EndEnumeration
Procedure OuvrirFichier(Gagdet.l, Fichier.s)
Size = FileSize(Fichier)
Longueur = Size : Decalage = 0
L_Max = 63999
If Size = 0
ProcedureReturn
Else
If ReadFile(0,Fichier)
*Buffer = AllocateMemory(Size)
If *Buffer
ReadData(*Buffer, Size)
EndIf
CloseFile(0)
EndIf
EndIf
;Vérification du chargement
If MemoryStringLength(*Buffer) < Size
MessageRequester("Erreur","Une erreur est survenue pendant le chargement du fichier",#MB_ICONERROR)
FreeMemory(*Buffer)
ProcedureReturn
EndIf
; Affichage du texte
If Longueur > L_Max
While Longueur > L_Max
Chaine.s = PeekS(*Buffer + Decalage, L_Max)
AddGadgetItem(gadget,-1,Chaine)
Longueur = Longueur - L_Max : Decalage = Decalage + L_Max
Wend
Chaine = PeekS(*Buffer + Decalage,Longueur)
AddGadgetItem(gadget,-1,Chaine)
Else
Chaine.s = PeekS(*Buffer,Longueur)
AddGadgetItem(gadget,-1,Chaine)
EndIf
FreeMemory(*Buffer)
EndProcedure
Procedure SauverFichier(File.s)
If CreateFile(0, File)
For i = 0 To CountGadgetItems(#Editeur) -1
WriteStringN(GetGadgetItemText(#Editeur, i, 0))
Next
CloseFile(0)
EndIf
ProcedureReturn
EndProcedure
If OpenWindow(#Window_0, 0, 0, 600, 570, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Editeur",0)
If CreateMenu(#Menu, WindowID(#Window_0))
MenuTitle("Fichiers")
MenuItem(#M_Ouvrir, "Ouvrir")
MenuItem(#M_Sauver, "Sauver")
EndIf
If CreateGadgetList(WindowID(#Window_0))
EditorGadget(#Editeur, 0, 0, 600, 545, "Quitter")
EndIf
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_EventMenu
Select EventMenuID()
Case #M_Ouvrir
Fichier$ = OpenFileRequester("Ouvrir un fichier","C:","Fichiers texte (*.txt)|*.txt",0)
If Fichier$
OuvrirFichier(#Editeur, Fichier$)
EndIf
Case #M_Sauver
Fichier$ = SaveFileRequester("Sauver un fichier","C:","Fichiers texte (*.txt)|*.txt",0)
If Fichier$ <> ""
SauverFichier(Fichier$)
EndIf
EndSelect
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
Code : Tout sélectionner
;/Constantes Window
Enumeration
#Window_0
EndEnumeration
;/Constantes Gadget
Enumeration
#Editeur
EndEnumeration
Enumeration
#Menu
EndEnumeration
Enumeration
#M_Ouvrir
#M_Sauver
EndEnumeration
Procedure StreamFileIn_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn ReadFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure StreamFileOut_Callback(hFile, pbBuff, cb, pcb)
ProcedureReturn WriteFile_(hFile, pbBuff, cb, pcb, 0)!1
EndProcedure
Procedure FileStreamIn(FileID.l, File.s, gadget.l, Mode.l)
Protected File
Protected FileID
Protected gadget
Protected StreamData.EDITSTREAM
If Mode <> #SF_RTF : Mode = #SF_TEXT : EndIf
If ReadFile(FileID, File)
StreamData\dwCookie = UseFile(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @StreamFileIn_Callback()
SendMessage_(GadgetID(gadget), #EM_STREAMIN, Mode, @StreamData)
CloseFile(FileID)
EndIf
EndProcedure
Procedure FileStreamOut(FileID.l, File.s, gadget.l, Mode.l)
Protected File
Protected FileID
Protected gadget
Protected StreamData.EDITSTREAM
If Mode <> #SF_RTF : Mode = #SF_TEXT : EndIf
If CreateFile(FileID, File)
StreamData\dwCookie = UseFile(FileID)
StreamData\dwError = #Null
StreamData\pfnCallback = @StreamFileOut_Callback()
SendMessage_(GadgetID(gadget), #EM_STREAMOUT, Mode, @StreamData)
CloseFile(FileID)
EndIf
EndProcedure
If OpenWindow(#Window_0, 0, 0, 600, 570, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Editeur",0)
If CreateMenu(#Menu, WindowID(#Window_0))
MenuTitle("Fichiers")
MenuItem(#M_Ouvrir, "Ouvrir")
MenuItem(#M_Sauver, "Sauver")
EndIf
If CreateGadgetList(WindowID(#Window_0))
EditorGadget(#Editeur, 0, 0, 600, 545, "Quitter")
EndIf
EndIf
Repeat
Select WaitWindowEvent()
Case #PB_EventMenu
Select EventMenuID()
Case #M_Ouvrir
Fichier$ = OpenFileRequester("Ouvrir un fichier","C:","Fichiers texte (*.txt)|*.txt",0)
If Fichier$
FileStreamIn(0, Fichier$, #Editeur, #SF_TEXT)
EndIf
Case #M_Sauver
Fichier$ = SaveFileRequester("Sauver un fichier","C:","Fichiers texte (*.txt)|*.txt",0)
If Fichier$ <> ""
FileStreamOut(0, Fichier$, #Editeur, #SF_TEXT)
EndIf
EndSelect
Case #PB_EventCloseWindow : quit = 1
EndSelect
Until quit = 1
End
Ben non, parce que j'ai piqué les procédures dans CodeArchiv, mais je n'ai jamais vraiment pris le temps de chercher à comprendre comment ça fonctionne exactement. (Et en plus, j'ai même pas honte...!Pierre a écrit :Chris, tu peuux juste me dire comment marche en gros le 3ème code? (j'ai juste compris les 2 premier en regardant vite fais :S)

Mais l'essentiel, c'est que ça fonctionne... non?
