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.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord 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 du moment : -14%
Apple MacBook Air (2020) 13,3″ Puce Apple M1 ...
Voir le deal
799 €

 

 1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord

Aller en bas 
AuteurMessage
Klaus

Klaus


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

1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord Empty
MessageSujet: 1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord   1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord EmptySam 2 Mar 2013 - 19:32

Nouvelle version:
KGF.dll V1.99 du 2 mars 2013


J'ai frappé un grand coup: j'ai ajouté la notion d'enregistrement de longueur fixe, et les fonctions de lecture et écriture qui vont avec ! La doc est à jour !

KGF.dll: res% = dll_call4("ReadBinaryFileRecord",adr(nom$),adr(record$),nrec%,delta%)
KGF_SUB.bas: ReadBinaryFileRecord(nom$,record$,nrec%)

KGF.dll: res% = dll_call4("WriteBinaryFileRecord",adr(nom$),adr(record$),nrec%,delta%)
KGF_SUB.bas: WriteBinaryFileRecord(nom$,record$,nrec%)


Modules modifiés:
KGF.dll
KGF_SUB.bas
KGF_chm, KGF_doc, KGF_pdf

Pour tester, il faut d'abord utiliser ce programme (juste un lancement, puis on l'arrête):


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"

Ce programme crée un fichier binaire avec 12 enregistrements de longueur 72 caractères, composés chacun d'un entier, d'un flottant et d'une chaîne de caractères de 60 caractères de longueur.

Puis, le programme de démo pour le mode "enregistrement":
Code:
' test_definition_record.bas

label lire, modifier

dim nfld%, fld1%, fld2, fld3$
dim res%, base%, nrec%, lu%
dim nom$ : nom$ = "test_fichier_binaire.dat"
fld3$ = string$(60," ")

KGF_initialize("KGF.dll")

define_record(3)

add_integer_field(adr(fld1%))
add_float_field(adr(fld2))
add_string_field(adr(fld3$),60)

build_record()

alpha 10 : top 10,10 : left 10,10 : caption 10,"Enregistrement:"
edit 11 : top 11,10 : left 11,100 : width 11,40 : text 11,"0"
button 12 : top 12,10 : left 12,160 : caption 12,"Lire"
  on_click 12,lire
button 13 : top 13,10 : left 13,320 : caption 13,"Modifier"
  on_click 13,modifier

end

lire:
  nrec% = val(text$(11))
  ReadBinaryFileRecord(nom$,record$,nrec%)
  message "lu: fld1%="+str$(fld1%)+"  fld2="+str$(fld2)+"  fld3$="+fld3$
  lu% = 1
  return
 
modifier:
  if lu%=0 then return
  fld2 = 0 - fld2
  fld3$ = left$(trim$(fld3$)+" bis"+string$(60," "),60)
  WriteBinaryFileRecord(nom$,record$,nrec%)
  message "écrit: fld1%="+str$(fld1%)+"  fld2="+str$(fld2)+"  fld3$="+fld3$
  return


#INCLUDE "KGF_SUB.bas"

Ce programme utilise le fichier créé par le premier programme et permet de lire un enregistrement quelconque (entre 1 et 12). Un message affiche les zones lues. Une fois lu, un enregistrement peut être modifié par le bouton Modifier. On applique une modification simple (la zone flottante est inversée (0-valeur) et un "bis" est ajouté à la zone texte. En relisant le même numéro d'enregistremen par le bouton Lire, on peut vérifier la modification.

Regardez bien la doc dans KGF.chm. Elle est très complète et fournit toutes les infos nécessaires. Sachez toute fois qu'il n'est pas nécessaire pour ces fonctions de disposer d'une chaîne de caractères regroupant tous les champs. La DLL accède, en lecture et en écriture, toute une liste de variables Panoramic, indépendamment de leur localisation ! On a un "enregistrement virtuel", en réalité !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
 
1.99 ajout ReadBinaryFileRecord, WriteBinaryFileRecord
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» V2.72 du 08/01/2014 - ajout ShowMessageModalChoixSortie
» V2.77 du 31/01/2014: ajout GetSelectedRichEditAttributes
» KGF.DLL V1.85 du 29/11/2012 : ajout ExtractIconFromLNK
» KGF.dll - demandes ou suggestions de modifications ou ajouts
» 2.01: ajout fonction SearchPatternInBinaryFile

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: