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
» Logiciel de planétarium.
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-17%
Le deal à ne pas rater :
(Black Friday) Apple watch Apple SE GPS + Cellular 44mm (plusieurs ...
249 € 299 €
Voir le deal

 

 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile

Aller en bas 
3 participants
AuteurMessage
Klaus

Klaus


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

1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty
MessageSujet: 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile   1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile EmptyMer 27 Fév 2013 - 13:42

Nouvelle version:
KGF.dll V1.96 du 27 Février 2013

J'ai ajouté une fonction dérivée de ReadBlockFromBinaryFileToString:
KGF.dll: res% = dll_call5("ReadBlockFromBinaryFile",nom$,adr%,n%,p%)
KGF_SUB.bas: ReadBlockFromBinaryFile(nom$,adr%,n%,p%)

Cette fonction est spécialement étudiée pour lire une partie d'un fichier binaire directement dans une variable de type entier ou flottant. On peut maintenant aisément créer, lire et modifier un fichier binaire contenant des données mixtes composées de flottants, entiers et chaînes de caractères. On peut par exemple créer un fichier avec des enregistrements de longueur fixe, accéder à un enregistrement binaire en entier, ou accéder directement n'importe quelle zone.

Voici un programme de démo de cette fonctionnalité. Il contient des commentaires expliquant son fonctionnement, mais le principe est le suivant: au lancement, il crée un petit ficher de 12 enregistrements de 72 caractères, chacun étant composé de 3 zones: un entier contenant le numéro d'enregistrement, un flottant contenant ce numéro multiplié par 3 + 0.17, et une chaîne de caractères de longueur 60 caractères, contenant str$(la zone 2). Le programme affiche alors un champ de saisie de numéro d'enregistrement et un bouton "Lire". On saisit le numéro, et les zones sont affichées dans un mémo.
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

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

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

' 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:
  ReplaceBlockInBinaryFile(nom$,adr(i%),4,p%,0)
  ' puis, écrire la zone 2:
  ReplaceBlockInBinaryFile(nom$,adr(v),8,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
  ReadBlockFromBinaryFile(nom$,adr(i%),4,p%)
  item_add 13,"Zone 1: "+str$(i%)
  ' puis, lire la zone 2:
  ReadBlockFromBinaryFile(nom$,adr(v),8,p%+4)
  item_add 13,"zone 2: "+str$(v)
  ' enfin, lire la zone 3:
  ReadBlockFromBinaryFileToString(nom$,60,p%+12)
  item_add 13,"Zone 3: ["+ReadBlockFromBinaryFileToString$+"]"
  return



#INCLUDE "KGF_SUB.bas"

Je pense qu'avec cette palette de fonctions pour la gestion de fichiers binaires, on peut réellement faire des choses intéressantes.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty
MessageSujet: Re: 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile   1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile EmptyMer 27 Fév 2013 - 13:49

Merci Klaus Wink
En attendant que Jack l'implémente dans Panoramic, les fichiers de données sont donc déjà exploitables avec ta DLL.
Revenir en haut Aller en bas
Mumu




Nombre de messages : 176
Localisation : 45
Date d'inscription : 20/12/2012

1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty
MessageSujet: Re: 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile   1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile EmptyMer 27 Fév 2013 - 14:03

Ze top !!!

Je crois que j'ai tout ce qu'il faut

Encore merci à tous en général, et à klaus en particulier...
les fichiers binaires n'ont plus qu'à bien se tenir !
Revenir en haut Aller en bas
Klaus

Klaus


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

1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty
MessageSujet: Re: 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile   1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile EmptyMer 27 Fév 2013 - 14:39

Merci pour votre intérêt !

Ceci est un "premier jet". Ce n'est pas encore vraiment performant en termes de vitesse. Je me suis attaché à la fonctionnalité. Si ces fonctions rencontrent un intérêt durable, je pourrai les optimiser considérablement, en terme de vitesse d'exécution.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty
MessageSujet: Re: 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile   1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile EmptyMer 27 Fév 2013 - 16:12

Il faudra voir selon ce que Jack a prévu. S'il a mis ces fonctions dans ses priorités, elles seront peut-être rapidement natives dans Panoramic. En tout cas en attendant, c'est fonctionnel.
Revenir en haut Aller en bas
Contenu sponsorisé





1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty
MessageSujet: Re: 1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile   1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile Empty

Revenir en haut Aller en bas
 
1.96 du 27 Février 2013: ajout ReadBlockFromBinaryFile
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» 1.94 du 26 Février 2013: ajout ReplaceStringInBinaryFile
» 1.95 du 27 Février 2013: fonction ReadBlockFromBinaryFile...
» 2.46 du 13/10/2013: ajout function SendSingleCharAsVKCode
» 1.90 du 23 Février 2013: gestion 600 dpi en impression
» 1.91 du 24 Février 2013: extension de PrinterFunction

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: