Fichiers texte a accès direct en PB

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Fichiers texte a accès direct en PB

Message par MLD »

Bonjour a tous

Suite a une conversation, il y a quelques jours sur la possibilité d'avoir des fichiers en accès direct en PB
Voici un PBI avec toutes les fonctions pour des fichiers textes a accès direct.
Volontairement j'ai limité les possibilités a 65000 champs de 5000 octets, ce qui a mon sens correspond a 90 % des utilisations de ce type de fichier.
Ensuite une base de données sera la bien venue.
Il n'y a aucune API, donc utilisable sur toutes les plateformes. Seulement 120 lignes de code environs seront compilées.
Il est possible qu'un Bug subsiste malgré les tests. Faites le moi savoir.
Il y a surement mieux. Faites des propositions.

A compiler en Pbi sous Filefcf.pbi

Code : Tout sélectionner


;Fichier texte a accés direct(ou a champs fixe) <.fcf>
;MLD le 5/11/2017: compilation PB6.61
;Compilez ce fichier sous Filefcf.pbi *********
;Ce fichier est libre de droits. Vous pouver l'utiliser, le copier, ou en faire une UserLib 

;******** fonctions ******** 
;1) Création du fichier = CreateFilefcf(#fichier,NomFichier$,NombreChamps.l,LongeurChamp.l)
;  Le nom de fichier  sera sans extention. (Ce sera mis automatiquement).Si le fichier existe déjà, il sera remplacé par un fichier vide !
;  Le nombre de champs maximum est de 65000 la longueur de champs est au maximum de 5000 octets 
;  Le nombre de champs est au minimum de 1, la longueur des champs est au minimum de 1 oct)
;  Selon les supports de stockage l'opération peut durer assez longtemps
;
;2)OpenFilefcf(#fichier,NomFichier$) Ouverture du fichier pour des opérations de lecture/écriture. ATTENTION contrairement a PB le fichier
;  n'est pas créer s'il n'existe pas. Le nom de fichier  sera sans extention (Ce sera mis automatiquement).
;
;3)Obtenir le nombre de champs d'un fichier = Lnbch(#fichier) (Resultat.l = Lnbch(#fichier).ATTENTION avant l'utilisation de cette fonction
;  le fichier doit être ouvert avec OpenFilefcf(#fichier,NomFichier$)
;
;4)Obtenir la longueur d'un champ = Llgch(#fichier)(Resultat.l = Llgch(#fichier).ATTENTION avant l'utilisation de cette fonction 
;  le fichier doit être ouvert avec OpenFilefcf(#fichier,NomFichier$)
;
;5)Lire un des champs = Lectchamp(#fichier,Numchamp.l(Resultat$ = Lectchamp(#fichier,Numchamp.l).ATTENTION avant l'utilisation de cette fonction 
;  le fichier doit être ouvert avec OpenFilefcf(#fichier,NomFichier$)
;
;6)Ecriture dans un des champs Ecritchamp(#fichier,Numchamp.l,Txt$):ATTENTION avant l'utilisation de cette fonction le fichier doit être ouvert
;  avec OpenFilefcf(#fichier,NomFichier$)
;
;7)Ajoute un nouveau champ a la fin du fichier Ajchp(#fichier,NomFichier$,nombredechamp.l):Le nom du fichier  sera sans extention 
;  (Ce sera mis automatiquement):ATTENTION avant l'utilisation de cette fonction le fichier doit être ouvert avec OpenFilefcf(#fichier,NomFichier$)  
;
;8)Supprime un champ  Supchp(#fichier,NomFichier$,Numchamp.l):ATTENTION les informations du champ supprimé seront perdus.Le nom de fichier
;sera sans extention (elle sera mis automatiquement).
;
;9)Augmente la longueur des champs Augchp(#fichier,NomFichier$,LongeurChamp.l);ATTENTION La longueur des champs doit impérativement
;  être supérieure a celle définie par CreateFilefcf(#fichier,NomFichier$,NombreChamps.l,LongeurChamp.l):Le nom de fichier sera sans extention 
; (Ce sera mis automatiquement).
;
;10)Obtenir la longueur du fichier FileSizefcf(#fichier)
;
;11) Supprimer du disque le fichier: DeleteFilefcf(#fichier)
;
;12) Ferme un fichier ouvert avec OpenFilefcf:CloseFile(#fichier) 

Declare CreateFilefcf(Numfich,Nmf$,Nbchp.l,Lchp.l)
Declare OpenFilefcf(Numfich,Nmf$):Declare verif_ouv(Numfich):Declare secu(num.w)
Declare Lnbch(Numfich):Declare Llgch(Numfich):Declare.s Lectchamp(Numfich,Numch.l):Declare FileSizefcf(Nmf$)

Procedure secu(num.w)
  Select num
    Case 1
     txtsecu$ = "Il manque l'emplacement et le nom du fichier" 
    Case 2
      txtsecu$ = "Il y a un problème avec le nombre de champs ou la longueur"
    Case 3
      txtsecu$ = "le fichier indiqué n'existe pas ou n'est pas ouvert"
    Case 4
      txtsecu$ = "Le texte est trop long pour la largeur du champ"
    Case 5
      txtsecu$ = "La largeur des champs ne peut être inférieur a celle existante"    
  EndSelect
  Debug txtsecu$
EndProcedure

Procedure verif_ouv(Numfich);vérif que le fichier est ouvert
 If IsFile(Numfich)=0:secu(3):ProcedureReturn Null:EndIf 
EndProcedure

Procedure Lnbch(Numfich);lecture du nombre de champs
  verif_ouv(Numfich)
  FileSeek(Numfich,0)
  ProcedureReturn Val(Trim(StringField(ReadString(Numfich,#PB_File_IgnoreEOL,14),1,",")))
EndProcedure

Procedure Llgch(Numfich);lecture de la longueur d'un champ
  verif_ouv(Numfich)
  FileSeek(Numfich,0)
  ProcedureReturn Val(Trim(StringField(ReadString(Numfich,#PB_File_IgnoreEOL,14),2,",")))
EndProcedure

Procedure CreateFilefcf(Numfich,Nmf$,Nbchp.l,Lchp.l);création du fichier
 If Nmf$ = "":secu(1):ProcedureReturn Null:EndIf  
 If Nbchp.l > 65000 Or Nbchp.l = 0:secu(2):ProcedureReturn Null:EndIf
 If Lchp.l > 5000 Or Lchp.l = 0:secu(2):ProcedureReturn Null:EndIf
 CreateFile(Numfich,Nmf$ +".fcf")
 longfich.q = 15 + (Nbchp.l*Lchp.l)
 WriteString(Numfich,Space(longfich.q));remplis les champs 
 FileSeek(Numfich,0)
 Ett$ = Str(Nbchp.l)+","+ Str(Lchp.l)
 lEtt= Len(Ett$):Ett$ = Ett$ + Space(15-lEtt);***
 WriteString(Numfich,Ett$);ecrit l'entête
 CloseFile(Numfich)
EndProcedure

Procedure OpenFilefcf(Numfich,Nmf$);ouverture du fichier
  If ReadFile(Numfich,Nmf$ +".fcf")= 0:secu(3):ProcedureReturn Null:EndIf;vérif que le fichier existe 
  CloseFile(Numfich)
  OpenFile(Numfich,Nmf$ +".fcf")
EndProcedure

Procedure.s Lectchamp(Numfich,Numch.l);lecture d'un champ
  verif_ouv(Numfich):If Numch.l > Lnbch(Numfich)Or Numch.l = 0:secu(2):ProcedureReturn "":EndIf 
  lgch.l = Llgch(Numfich)
  FileSeek(Numfich,((15) + ((lgch.l+1)*Numch.l))- lgch.l);*************
  ProcedureReturn Trim(ReadString(Numfich,#PB_File_IgnoreEOL,lgch.l))
EndProcedure

Procedure Ecritchamp(Numfich,Numch.l,Txt$);Ecriture dans un champ
  verif_ouv(Numfich):If Numch.l > Lnbch(Numfich)Or Numch.l = 0:secu(2):ProcedureReturn Null:EndIf
  If Len(Txt$) > Llgch(Numfich):secu(4):ProcedureReturn Null:EndIf 
  lgch.l = Llgch(Numfich):ltxt.l = Len(Txt$)
  If ltxt.l < lgch.l:Txt$ = Txt$ + Space(lgch.l - ltxt.l):EndIf
  FileSeek(Numfich,((15) + ((lgch.l+1)*Numch.l))- lgch.l);***
  WriteString(Numfich,Txt$)
EndProcedure 

Procedure Supchp(Numfich,Nmf$,Numchp.l);Supprime un champ
 OpenFilefcf(Numfich,Nmf$) 
  nbchp.l = Lnbch(Numfich):lgch.l = Llgch(Numfich)
  Dim tabp.s(nbchp.l-1):y.l = 0
  For x = 1 To nbchp.l
    If x <> Numchp.l
      y.l = y.l +1
      tabp.s(y) = Lectchamp(Numfich,x)
    EndIf  
  Next
 CloseFile(Numfich) 
 CreateFilefcf(Numfich,Nmf$,Nbchp.l-1,lgch.l) 
 OpenFilefcf(Numfich,Nmf$)
 nbchp.l = Lnbch(Numfich) 
 For x = 1 To nbchp.l
  Ecritchamp(Numfich,x,tabp.s(x))
 Next
 FreeArray(tabp.s())
EndProcedure

Procedure Ajchp(Numfich,Nmf$,pluschp.l);ajoute des champs
  lgch.l = Llgch(Numfich)
  longf.q = FileSize(Nmf$ + ".fcf")
  FileSeek(Numfich,longf.q)
  WriteString(Numfich,Space(pluschp.l*lgch.l))
  Ett$ = Str(Lnbch(Numfich)+ pluschp.l)+","+ Str(Llgch(Numfich))
  lEtt= Len(Ett$):Ett$ = Ett$ + Space(15-lEtt)
  FileSeek(Numfich,0)
  WriteString(Numfich,Ett$);ecrit l'entête
EndProcedure

Procedure Augchp(Numfich,Nmf$,Longchp.l);augmente la longueur des champs
OpenFilefcf(Numfich,Nmf$) 
  nbchp.l = Lnbch(Numfich):lgch.l = Llgch(Numfich)
  If Longchp.l < lgch.l :secu(5):ProcedureReturn Null:EndIf  
  Dim tabp.s(nbchp.l)
  For x = 1 To nbchp.l
   tabp.s(x) = Lectchamp(Numfich,x)
  Next
 CloseFile(Numfich)
 CreateFilefcf(Numfich,Nmf$,Nbchp.l,Longchp.l)
 OpenFilefcf(Numfich,Nmf$)
 For x = 1 To nbchp.l
  Ecritchamp(1,x,tabp.s(x))
 Next
 FreeArray(tabp.s())
EndProcedure  

Procedure FileSizefcf(Nmf$)
  ProcedureReturn FileSize(Nmf$ + ".fcf")
EndProcedure 

Procedure DeleteFilefcf(Nmf$)
  DeleteFile(Nmf$ + ".fcf",#PB_FileSystem_Force)
EndProcedure
A compiler en Pb

Code : Tout sélectionner

;MLD le 5/11/2017

XIncludeFile "Filefcf.pbi" 
#Numfich = 1

;Teste les fonctionnalitées
;les fonctions sont a décocher selon les besoins

;¤¤¤¤¤¤  création du fichier ¤¤¤¤¤¤
;CreateFilefcf(1,"essaifcf",10,50);10 champs de 50 caractères ou octets
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

;¤¤¤¤¤ Supprime un champ ¤¤¤¤¤
; OpenFilefcf(#Numfich,"essaifcf")
;  Supchp(#Numfich,"essaifcf",2)
; CloseFile(#Numfich)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

;¤¤¤¤¤ Ajoute champs ¤¤¤¤¤
; OpenFilefcf(#Numfich,"essaifcf")
; Ajchp(#Numfich,"essaifcf",2)
; CloseFile(#Numfich)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

;¤¤¤¤¤ Ecritures dans un champ ¤¤¤¤¤
;  OpenFilefcf(#Numfich,"essaifcf")
;  ;Ecritchamp(#Numfich,1,"Fichier a accès direct 1")
;  For x = 1 To 10
;  Ecritchamp(#Numfich,x,"Fichier a accès direct " + Str(x))
;  Next
;  CloseFile(#Numfich)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ 

;¤¤¤¤¤ Augmente la longueur des champs ¤¤¤¤¤
 ;Augchp(1,"essaifcf",55)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤

;¤¤¤¤¤ Lecture du nombre de champs et longueur des champs ¤¤¤¤¤
;  OpenFilefcf(1,"essaifcf")
;   Debug Lnbch(#Numfich)
;   Debug Llgch(#Numfich)
;  CloseFile(#Numfich)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
  
;¤¤¤¤¤ Lecture des champs ¤¤¤¤¤
;  OpenFilefcf(1,"essaifcf")
;   For x =1 To Lnbch(1)
;    Debug Lectchamp(1,x)
;   Next
;  CloseFile(#Numfich)
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
 
;¤¤¤¤¤ Longueur du fichier ¤¤¤¤¤ 
;Debug Len("Fichier a accès direct 1xxxxxxxxxxxxxxxxxxxxxxxxxy") Debug FileSizefcf("essaifcf")
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤  
  
;¤¤¤¤¤ Supprime le fichier ¤¤¤¤¤ 
 ;DeleteFilefcf("essaifcf")
;¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤ 
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fichiers texte a accès direct en PB

Message par falsam »

Pourquoi pas, mais insipide une fois qu'on a goûter à une vrai base de données type SQL comme SQlite dans sa plus simple forme.

- La convivialité n'est pas au rendez vous.
- Champs de longueurs fixes : Si un enregistrement se compose de 5 champs, chacun de ces champs auront la même longueur.
- Champs non typés.
- Impossibilité de supprimer un enregistrement ce qui qui oblige à créer un champ signalant si l'enregistrement est actif ou pas.
- Pas de relationnel
- Pas de tri

Et bien voila qui va enflammer le débat.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Fichiers texte a accès direct en PB

Message par MLD »

@Falsam

Falsam a écrit

Pourquoi pas, mais insipide une fois qu'on a goûter à une vrai base de données type SQL comme SQlite dans sa plus simple forme.
Réponse: C'est ta façon de voir. Avoir en mémoire et sur disque des KO pour rien ce n'est pas ma façon de programmé ni la façon que j'ai appris.

- La convivialité n'est pas au rendez vous. R: A bon. 8O
- Champs de longueurs fixes : Si un enregistrement se compose de 5 champs, chacun de ces champs auront la même longueur. R Vrai :D
- Champs non typés. R: Vrai uniquement du texte :D
- Impossibilité de supprimer un enregistrement ce qui qui oblige à créer un champ signalant si l'enregistrement est actif ou pas. R: Faut :twisted: l'on peut supprimer un champ, Ajouter un champ,
et même augmenter la longueur des champs si le besoin se fait sentir.
- Pas de relationnel :?:
- Pas de tri 8O R: Rien n'empêche de faire du tri
Et bien voila qui va enflammer le débat. R: Exact :lol:

Ce type de fichier n'est pas la panacée universel de même que celui natif de PB. Il n'empêche que ce type de fichier a une utilité. Il me semble qu'il manque a PB. (Mais c'est Fred qui décide!)
VB avait ce type de fichier que l'on pouvait il est vrai typer.
Depuis longtemps j'ai vu sur ce forum ou celui des US, nombres programmes qui d'une manière ou d'une autre faisait utilisation d'un programme similaire.(Bricolé par l'auteur du programme)
Encore un fois ce type de fichier a ces limites, et les bases de données ont leur utilité. Mais 120 lignes compilées pour un type de fichier inexistant dans PB n'est pas cher payer. :lol:
Avatar de l’utilisateur
Kwai chang caine
Messages : 6962
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Fichiers texte a accès direct en PB

Message par Kwai chang caine »

Aaaaaah !!! Ces bons vieux fichiers à accès aléatoires :D
Qbasic aussi les utilisait, d'ailleurs à mon arrivée sur PB, j'ai mis whatmilles heures à les chercher en vain, effectivement, que du séquentiel avec PB.... :|
Perso j'aimais bien, mais j'avais pas non plus des millions de lignes à traiter... 8)

Maintenant pour le SQL, c'est évidement LA solution pour ce genre de choses, mais je peux pas carrer le langage :twisted:
J'ai pourtant pris des cours à PARIS et ça m'a tellement gonflé que rien ne m'ai resté :mrgreen:

Je redoute le jour ou je serais obligé d'utiliser cette daube :?
Reste encore la solution de facilité, comme pour l'enregisteur de MACROS de EXCEL, en utilisant le générateur SQL intégré dans ACCESS :idea: :oops:

Merci MLD du partage 8)
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fichiers texte a accès direct en PB

Message par falsam »

MLD a écrit :ce type de fichier a ces limites, et les bases de données ont leur utilité. Mais 120 lignes compilées pour un type de fichier inexistant dans PB n'est pas cher payer.
L'utilisation d'une liste et du type de fichier JSON est une solution moderne.

Code : Tout sélectionner

Structure NewContact
  Name.s
  Tel.s
EndStructure
Global NewList Contacts.NewContact()

Procedure UseFile(FileName.s)
  If LoadJSON(0, FileName)
    ExtractJSONList(JSONValue(0), Contacts())
  EndIf
EndProcedure

Procedure SaveFile(FileName.s)
  If CreateJSON(0)
    InsertJSONList(JSONValue(0), Contacts())
    SaveJSON(0, FileName)  
  EndIf
EndProcedure

Procedure AddRecord(Name.s, Tel.s)
  AddElement(Contacts())
  With Contacts()
    \Name = Name
    \Tel  = Tel
  EndWith
EndProcedure

;/// Test Area 

;Ajout de deux enregistrements
UseFile("contacts.json")

AddRecord("John Doe", "02 34 65 10 14") 
AddRecord("Lee Mac", "01 36 15 11 16") 
AddRecord("Arbre Acames", "06 38 05 15 66") 

SaveFile("contacts.json")
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Fichiers texte a accès direct en PB

Message par MLD »

@Falsam
falsam a écrit :L'utilisation d'une liste et du type de fichier JSON est une solution moderne.
Moderne surement, Mais combien pèse la librairie JSON :?: (32KO + la liste+le code). Pour enregistrer 10 légumes comme dans le cas de Micoute. (Excuse moi Michel) :oops:
Mais il y a pire quand on utilise une expression régulière pour par exemple vérifier que l'écriture d'un numéro de téléphone est correct la librairie utilisé fait 82 KO! quand pour faire la même chose en code classique il faut environs 250 Octs.
La mode c'est bien, mais cela coute cher. Avec la mode d'utiliser toujours le tout fait (je ne parle pas spécialement pour toi). Beaucoup ne savent plus vraiment programmé, et font le jeu des boites qui propose toujours des additifs au programme de base. (c'est pour cela entre autre que j'ai arrêté avec VB ou C++). Le marketing a vraiment bien fait son boulot
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fichiers texte a accès direct en PB

Message par falsam »

MLD a écrit :Moderne surement, Mais combien pèse la librairie JSON :?: (32KO + la liste+le code).
C'est un argument pour justifier ton include ? Douce plaisanterie !!! Qu'est ce que tu as comme pc ? un 386 ? :mrgreen:

Je déteste devoir me justifier sur l'argument mémoire. Je suis pour l'optimisation de code mais pour quelques Ko faut pas abuser.

Ton include + ajouts de quelques éléments pèse 17.5 Ko
Mon code + ajouts de quelques éléments pèse 22 ko

Comme tu peux le voir la différence est minime. Si tu ajoutes un tri dans ton code je pense que tu dépasseras largement les 22 ko.

Un tri ascendant sur le champ nom dans mon code tiendrait dans une seule ligne.

Code : Tout sélectionner

SortStructuredList(Contacts(), #PB_Sort_Ascending, OffsetOf(NewContact\Name), TypeOf(NewContact\Name))
Si tu veux on peut aussi parler du poids de ton fichier ? héhé.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Fichiers texte a accès direct en PB

Message par MLD »

@Falsam

Bon je pense que nous ne seront jamais d’accord. :cry: donc je pense sérieusement a me mettre a la programmation en O0k inventé par G-Rom
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Fichiers texte a accès direct en PB

Message par falsam »

MLD a écrit :e pense sérieusement a me mettre a la programmation en O0k inventé par G-Rom
et moi au BrainFuck
http://www.purebasic.fr/french/viewtopi ... 94#p188994
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2147
Inscription : sam. 08/févr./2014 15:19

Re: Fichiers texte a accès direct en PB

Message par Marc56 »

La taille physique d'un programme (l'EXE) n'a plus tellement d'importance, on n'est plus à l'époque des disquettes et des modems RTC.
Et la taille de l'EXE ne reflète pas la taille en ram une fois lancé.

Exemple:

Code : Tout sélectionner

a=1000000000
Dim a$(a)
For i = 1 To a
     a$="Hello World"
Next
8 Go en Ram :)

D'où l'intérêt de savoir ce qu'on fait (et d'utiliser au max les procédures qui vont nettoyer en partant)
Les lib aussi vident les poubelles une fois le travail accompli.
Le programmeur étourdi, inexpérimenté ou pressé à vite fait d'oublier les FreeImage(), Redim(), FreeGadget()

C'est la taille en RAM qui est importante et une application GUI Windows (PB) a toujours une taille minimum.
Les libs internes de PB sont particulièrement compactes par rapports aux addons tiers d'autres langages.
Avatar de l’utilisateur
MLD
Messages : 1103
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Fichiers texte a accès direct en PB

Message par MLD »

@Marc56
Tu est dans le vrai :lol: Mais pour certains 25% de plus en mémoire ne compte pas :mrgreen:
Répondre