Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: 1.94 du 26 Février 2013: ajout ReplaceStringInBinaryFile Mar 26 Fév 2013 - 10:31 | |
| Nouvelle version: KGF.dll V1.94 du 24 Février 2013J'ai ajouté une fonction à la gestion des fichiers binaires, pour pouvoir modifier facilement une partie des données à l'intérieur du fichier: 1. Remplacer n octets à partir de la position p Si flag%=0: les n octets seront remplacés par la chaîne fournie, même si cela conduit à un changement de longueur du fichier si flag%=1: on remplace systématiquement n octets. Si la chaîne fournie est plus courte, elle sera complétée par le caractère fill$. Si elle est plus longue, elle sera tronquée. 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%) Et voici le programme de démo montrant cette fonction: - Code:
-
' demo_fichiers_binaires.bas
label lecture, creation, ajout, remplacement
dim res%, buf$, nom$, fill$, i%, n%, p%, flag%
KGF_initialize("KGF.dll")
open_dialog 1 save_dialog 2
height 0,600
button 101 : top 101,10 : left 101,10 : caption 101,"Lecture" on_click 101,lecture button 102 : top 102,40 : left 102,10 : caption 102,"Création" on_click 102,creation button 103 : top 103,70 : left 103,10 : caption 103,"Ajout" on_click 103,ajout
memo 201 : top 201,10 : left 201,200 : width 201,300 : height 201,300
alpha 202 : top 202,340 : left 202,200 : caption 202,"Longueur:" alpha 203 : top 203,340 : left 203,280 : caption 203,"Start:" alpha 204 : top 204,340 : left 204,360 : caption 204,"Remplissage:" edit 212 : top 212,360 : left 212,200 : width 212,70 edit 213 : top 213,360 : left 213,280 : width 213,70 edit 214 : top 214,360 : left 214,360 : width 214,30 text 212,"1" : text 213,"1" : text 214,"0" alpha 205 : top 205,390 : left 205,200 : caption 205,"Nouveau contenu:" edit 215 : top 215,410 : left 215,200 : width 215,300 check 216 : top 216,440 : left 216,200 : width 216,300 caption 216,"Tronquer/compléter les données si nécessaire" button 104 : top 104,470 : left 104,200 : caption 104,"Remplacement" on_click 104,remplacement
end
lecture: nom$ = file_name$(1) if nom$="_" then return ReadBinaryFileToString(nom$) clear 201 item_add 201,ReadBinaryFileToString$ return creation: nom$ = file_name$(2) if nom$="_" then return if file_exists(nom$)=1 message "Refusé." return end_if if count(201)=0 message "Vide." return end_if buf$ = "" for i%=1 to count(201) buf$ = buf$ + item_read$(201,i%) + chr$(13) + chr$(10) next i% WriteStringToBinaryFile(nom$,buf$) return ajout: nom$ = file_name$(1) if nom$="_" then return if count(201)=0 message "Vide." return end_if buf$ = "" for i%=1 to count(201) buf$ = buf$ + item_read$(201,i%) + chr$(13) + chr$(10) next i% AppendStringToBinaryFile(nom$,buf$) return
remplacement: nom$ = file_name$(1) if nom$="_" then return buf$ = text$(215) n% = val(text$(212)) p% = val(text$(213)) fill$ = chr$(val(text$(214))) flag% = checked(216) ReplaceStringInBinaryFile(nom$,buf$,fill$,n%,p%,flag%) return
#INCLUDE "KGF_SUB.bas"
| |
|