FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Gestion d'un système client-serveur.
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le deal à ne pas rater :
Bon plan achat en duo : 2ème robot cuiseur Moulinex Companion ...
600 €
Voir le deal

 

 1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile

Aller en bas 
AuteurMessage
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Empty
MessageSujet: 1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile   1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile EmptyJeu 28 Fév 2013 - 22:41

Nouvelle version:
KGF.dll V1.98 du 28/2/2013

Modules modifiée:
KGF.dll, KGF_SUB.bas

J'ai ajouté les fonctions OpenBinaryFile et CloseBinaryFile. A priori, le jeu de fonctions est complet, maintenant. Voici une doc provisoire de l'ensemble des fonctions:

Gestion des fichiers binaires

Les fichiers binaires sont identifiés par leur nom. Toutes les fonctions utilisent le nom complet
comme premier paramètre, pour identifier le fichier. Toutes ces fonctions sont indépendantes
les unes des autres. Chacune contient un traitement complet, y compris ouverture et fermeture
si cela est nécessaire.

Il y a deux fonctions spécifiques pour gérer les ouvertures et fermetures ce ces fichiers.
L'utilisation de ces fonctions est optionnelle et ne change en rien le fonctionnement des
autres routines, sur le plan fonctionnel. Mais elles ont une influence sur la performance.
En effet, si plusieurs fonctions d'accès au même fichier binaire doivent être effectuées,
il est utile de l'ouvrir avant la première fonction et de le fermer après la dernière fonction.
Ceci évite les ouvertures et fermetures implicites effectuées par chaque fonction. Les
fonctions de gestion des fichiers binaires sont réparties en 4 groupes:


1. Ouverture et fermeture

Ouverture d'un fichier binaire:
KGF.dll: res% = dll_call1("OpenBinaryFile",adr(nom$))
KGF_SUB.bas: OpenBinaryFile(nom$)

Cette fonction mémorise son nom et ouvre ce fichier de façon permanente, de sorte à être
accessible par les autres fonctions. L'utilisation de cette fonction est optionnelle.

Fermeture d'un fichier binaire:
KGF.dll: res% = dll_call1("CloseBinaryFile",adr(nom$))
KGF_SUB.bas: CloseBinaryFile(nom$)

Cette fonction ferme ce fichier de façon permanente s'il a été ouvert. L'utilisation de cette
fonction est optionnelle.


2. Etat d'un fichier

Retourner la taille d'un fichier bianire en octets
KGF.dll: res% = dll_call1("GetBinaryFileSize",adr(nom$))
KGF_SUB.bas: GetBinaryFileSize(nom$)

Cette fonction retourne le nombre d'octets qu'un fichier occupe sur disque.


3. Lectures dans un fichier binaire

Retourner le fichier entier dans une chaîne de caractères
KGF.dll: res% = dll_call2("ReadBinaryFileToString",adr(nom$),adr(buf$))
KGF_SUB.bas: ReadBinaryFileToString(nom$)

Cette fonction retourne une chaîne de caractères contenant la totalité du fichier binaire
sous forme de caractères binaires. Attention à la taille du fichier !

Retourner une chaîne de caractères contenant une partie d'un fichier binaire
KGF.dll: res% = dll_call4("ReadBlockFromBinaryFileToString",adr(nom$),n%,p%,adr(buf$))
KGF_SUB.bas: ReadBlockFromBinaryFileToString(nom$,n%,p%)

Cette fonction retourne une chaîne de caractères contenant la partie du fichier binaire
spécifiée par une position (1, 2, ...) et une longueur.

Retourner une variable de type entier ou flottant à partir d'un fichier binaire
KGF.dll: res% = dll_call5("ReadBlockFromBinaryFile",nom$,adr%,n%,p%)
KGF_SUB.bas: ReadBlockFromBinaryFile(nom$,adr%,n%,p%)

Cette fonction retourne une variable de type entier ou flottant, contenant la partie du fichier
binaire spécifiée par une position (1, 2, ...) et une longueur obligatoirement 4 (pour un
entier) ou 8 (pour un flottant).

Retourner une valeur entière à partir d'un fichier binaire
KGF.dll: res% = dll_call5("ReadBlockFromBinaryFile",nom$,adr(i%),4,p%)
KGF_SUB.bas: ReadBlockFromBinaryFileToInteger(nom$,p%)

Cette fonction retourne une variable de type entier contenant la partie du fichier
binaire spécifiée par une position (1, 2, ...) et une longueur de 4 octets. La valeur
entière est retournée dans la variable ReadBlockFromBinaryFileToInteger% dans
la cas de l'utilisation de KGF_SUB.bas.

Retourner une valeur flottante à partir d'un fichier binaire
KGF.dll: res% = dll_call5("ReadBlockFromBinaryFile",nom$,adr(v),8,p%)
KGF_SUB.bas: ReadBlockFromBinaryFileToFloat(nom$,p%)

Cette fonction retourne une variable de type flottant contenant la partie du fichier
binaire spécifiée par une position (1, 2, ...) et une longueur de 8 octets. La valeur
flottante est retournée dans la variable ReadBlockFromBinaryFileToFloat dans
la cas de l'utilisation de KGF_SUB.bas.


4. Ecritures dans un fichier binaire

Créer un fichier binaire à partir d'une chaîne de caractères
KGF.dll: res% = dll_call2("WriteStringToBinaryFile",adr(nom$),adr(buf$))
KGF_SUB.bas: WriteStringToBinaryFile(nom$,buf$)

Cette fonction crée un nouveau fichier, dont le contenu sera la chaîne de caractères.

Ajouter une chaîne de caractères à la fin d'un fichier binaire
KGF.dll: res% = dll_call2("AppendStringToBinaryFile",adr(nom$),adr(buf$))
KGF_SUB.bas: AppendStringToBinaryFile(nom$,buf$)

Cette fonction ajoute une chaîne de caractères à la fin d'un fichier binaire. Si le fichier
n'existe pas, il sera créé et contiendra cette chaîne.

Remplacer une chaîne de caractères dans un fichier binaire
KGF.dll: res% = dll_call6("ReplaceStringInBinaryFile",adr(nom$),adr(buf$),adr(fill$),n%,p%,flag%)
KGF_SUB.bas: ReplaceStringInBinaryFile(nom$,buf$,fill$,n%,p%,flag%)

Cette fonction remplace une section d'un fichier binaire, déterminée par la position (1, 2, ...)
et une longueur, par une chaîne de caractères. Si le flag est 0, la section sera remplacée par la
chaîne de caractères, et la taille du fichier peut changer. Si le flag est 1, la talle ne change pas,
et la chaîne remplaçante sera tronquée ou complétée par un caractère de remplissage selon besoin.

Ecrire une valeur entière ou flottante dans un fichier binaire
KGF.dll: res% = dll_call6("ReplaceBlockInBinaryFile",adr(nom$),adr(block),n%,p%)
KGF_SUB.bas: sub ReplaceBlockInBinaryFile(nom$,adr%,n%,p%,flag%)

Cette fonction écrit une valeur entière ou flottante dans un fichier binaire, à partir d'une position
(1, 2, ...), et obligatoirement sur une longueur de 4 (entier) ou 8 (flottant).

Ecrire une valeur entière dans un fichier binaire
KGF.dll: res% = dll_call6("ReplaceBlockInBinaryFile",adr(nom$),adr(i%),4,p%)
KGF_SUB.bas: ReplaceBlockInBinaryFileByInteger(nom$,i%,p%,flag%)

Cette fonction écrit une valeur entière dans un fichier binaire, à partir d'une position (1, 2, ...),
et obligatoirement sur une longueur de 4 octets.

Ecrire une valeur flottante dans un fichier binaire
KGF.dll: res% = dll_call6("ReplaceBlockInBinaryFile",adr(nom$),adr(v),8,p%)
KGF_SUB.bas: ReplaceBlockInBinaryFileByFloat(nom$,v,p%,flag%)

Cette fonction écrit une valeur flottante dans un fichier binaire, à partir d'une position (1, 2, ...),
et obligatoirement sur une longueur de 8 octets.

Et voici le programme de démo adapté à cette version:
Code:
' demo_fichiers_binaires_zones_fixes.bas

' Ce programme crée un fichier binaire contenant
' 12 "enregistrements" ayant chacun 3 zones:
'    1 entier contenant le numéro d'enregistrement
'    1 flottant contenant le numéro d'enregistrement * 3 + 0.17
'    1 chaîne de caractères contenant str$(zone flottante)
' Afin de produire des enregsitrements de longueur fixe,
' la 3ème zone est fixée à 60 caractères. Chaque enregsitrement
' a donc 4 + 8 + 60 = 72 caractères.
'
' Le programme propose une zone pour saisir un numéro d'enregistrement
' entre 1 et 12, un bouton "Lire" et un mémo montrant les données lues.

label lire, sortie

dim i%, v, s$, buf$, n%, p%, num%
dim nom$ : nom$ = "test_fichier_binaire.dat"

on_close 0,sortie

alpha 1 : top 1,20 : left 1,20 : caption 1,"Enregistrement (1...12):"
edit 11 : top 11,20 : left 11,150 : width 11,40 : text 11,"0"
button 12 : top 12,50 : left 12,150 : caption 12,"Lire" : on_click 12,lire
memo 13 : top 13,80 : left 13,150 : width 13,300 : height 13,300

KGF_initialize("KGF.dll")

OpenBinaryFile(nom$)

' on crée d'abord un fichier "vide" de 12*72 caractères,
' soit 864 caractères
buf$ = string$(12*72," ")
WriteStringToBinaryFile(nom$,buf$)

' boucle pour la création des 12 enregistrements
for i%=1 to 12
  ' la variable i% est la zone 1
  ' on construit la zone 2
  v = i%*3 + 0.17
  ' et la zone 3
  s$ = left$(str$(v)+string$(60," "),60)
  ' on écrit l'enregistrement à sa place
  p% = (i%-1)*72 + 1 : ' calculer la position de début
  ' d'abord, écrire la zone 1:
  ReplaceBlockInBinaryFileByInteger(nom$,i%,p%,0)
  ' puis, écrire la zone 2:
  ReplaceBlockInBinaryFileByFloat(nom$,v,p%+4,0)
  ' enfin, écrire la zone 3:
  ReplaceBlockInBinaryFile(nom$,adr(s$),60,p%+12,1)
next i%

end

lire:
  if numeric(text$(11))=0
    message "Invalide."
    return
  end_if
  num% = val(text$(11))
  if num%<1 or num%>12
    message "Invalide."
    return
  end_if
  p% = (num%-1)*72 + 1 : ' calculer la position de début
  clear 13
  item_add 13,"Enregistrement "+str$(num%)
  ' d'abord lire la zone 1
  i% = 0
  ReadBlockFromBinaryFileToInteger(nom$,p%)
  item_add 13,"Zone 1: "+str$(ReadBlockFromBinaryFileToInteger%)
  ' puis, lire la zone 2:
  ReadBlockFromBinaryFileToFloat(nom$,p%+4)
  item_add 13,"zone 2: "+str$(ReadBlockFromBinaryFileToFloat)
  ' enfin, lire la zone 3:
  ReadBlockFromBinaryFileToString(nom$,60,p%+12)
  item_add 13,"Zone 3: ["+ReadBlockFromBinaryFileToString$+"]"
  return

sortie:
  CloseBinaryFile(nom$)
  return


#INCLUDE "KGF_SUB.bas"
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12301
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile Empty
MessageSujet: Re: 1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile   1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile EmptyVen 1 Mar 2013 - 0:22

Et la doc est à jour:
KGF.chm, KGF.doc et KGF.pdf dans MyDrive dossier DLLs\Documentation CHM !

Il y a une nouvelle catégorie de fonctions: Gestion de fichiers binaires.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
 
1.98 du 28/2/2013: OpenBinaryFile et CloseBinaryFile
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 2.37 du 23 mai 2013
» V2.67 du 10/12/2013
» 2.47 du 7 Novembre 2013
» 1.95 du 27 Février 2013: fonction ReadBlockFromBinaryFile...
» V2.50 du 10 Novembre 2013

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: