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
» SineCube
Recherche d'une suite de valeurs dans un fichier binaire Emptypar papydall Aujourd'hui à 0:49

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Recherche d'une suite de valeurs dans un fichier binaire Emptypar Yannick Hier à 18:32

» Philharmusique
Recherche d'une suite de valeurs dans un fichier binaire Emptypar jjn4 Hier à 13:58

» PANORAMIC V 1
Recherche d'une suite de valeurs dans un fichier binaire Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Recherche d'une suite de valeurs dans un fichier binaire Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Recherche d'une suite de valeurs dans un fichier binaire Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Recherche d'une suite de valeurs dans un fichier binaire Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Recherche d'une suite de valeurs dans un fichier binaire Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Recherche d'une suite de valeurs dans un fichier binaire Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Recherche d'une suite de valeurs dans un fichier binaire Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Recherche d'une suite de valeurs dans un fichier binaire Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Recherche d'une suite de valeurs dans un fichier binaire Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Recherche d'une suite de valeurs dans un fichier binaire Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Recherche d'une suite de valeurs dans un fichier binaire Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Recherche d'une suite de valeurs dans un fichier binaire Emptypar leclode Sam 27 Avr 2024 - 17:59

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 :
Pokémon EV06 : où acheter le Bundle Lot 6 Boosters Mascarade ...
Voir le deal

 

 Recherche d'une suite de valeurs dans un fichier binaire

Aller en bas 
AuteurMessage
JL35




Nombre de messages : 7095
Localisation : 77
Date d'inscription : 29/11/2007

Recherche d'une suite de valeurs dans un fichier binaire Empty
MessageSujet: Recherche d'une suite de valeurs dans un fichier binaire   Recherche d'une suite de valeurs dans un fichier binaire EmptyLun 5 Avr 2010 - 15:47

Comme Panoramic ne permet pas la lecture de plusieurs octets à la fois dans un fichier binaire, le procédé indiqué est forcément très lent dès lors que la valeur cherchée se trouve loin dans un long fichier (cas par exemple des fichiers images).
Il pourra difficilement être employé dans une boucle de lecture de plusieurs fichiers si les valeurs recherchées sont trop lointaines.

- L'exploration se fait par lecture de blocs successifs (de longueur ajustable lbuf, à voir), entre deux positions données dans le fichier: p1 et p2. On peut évidemment avoir p1=0 et p2=FILEBIN_SIZE(n).
- La séquence cherchée peut être donnée sous forme d'une suite de valeurs décimale, ou d'une chaîne en hexadécimal (dans ce cas précédée de "&h").
- Le résultat (1er emplacement trouvé de la chaîne, ou chaîne non trouvée) est affiché à l'écran pour l'exemple, mais peut être exploité à la demande.

Et voilà le travail:
Code:
' Recseq.bas recherche d'une séquence dans un fichier binaire
DIM f$, p, p1, p2, lbuf, a$, seq$, s$, i%, v%, k%
DIM d, h$, lh%
LABEL Recseq, DecHex, HexDec

p1 = 0: ' position de départ de recherche dans le fichier
p2 = 10000: ' position de fin de recherche
lbuf = 256: ' longueur du buffer de lecture
seq$ = chr$(255) + chr$(192): ' Séquence cherchée, en Ascii (= FFC0)
seq$ = "&hFFC0": ' ou la même, en hexadécimal

f$ = "C:\Graph\Jpg\IMG_2022.jpg"

GOSUB Recseq
IF p <> -1
    d = p: GOSUB DecHex
    PRINT "Trouvé en " + STR$(p) + " (= &h" + h$ + ")"
ELSE
    PRINT "Non trouvé !"
END_IF
END

Recseq:
' recherche de la séquence seq$ dansle fichier binaire f$
' retour: p = position trouvée (ou -1 sinon)
s$ = seq$: h$ = UPPER$(s$)
IF LEFT$(h$, 2) = "&H": ' valeur fournie en hexa, conversion en valeurs décimales
    h$ = UPPER$(MID$(s$, 3, LEN(s$)-2))
    IF BIN_AND(LEN(h$), 1) = 1 THEN h$ = h$ + "0"
    GOSUB HexDec
END_IF
FILEBIN_OPEN_READ 1, f$
FOR p = p1 TO p2 STEP lbuf-LEN(s$)+1
    FILEBIN_POSITION 1, p: a$ = ""
    FOR i% = 1 TO lbuf
        FILEBIN_READ 1, v%: a$ = a$ + CHR$(v%)
    NEXT i%
    k% = INSTR(a$, s$)
    IF k% > 0 THEN p = p + k% - 1: EXIT_FOR
NEXT p
IF k% = 0 THEN p = -1
FILEBIN_CLOSE 1
RETURN

DecHex:
' conversion décimal/hexa de d, résultat h$ (complété si utile à lh% caractères)
h$=""
REPEAT
    h$ = MID$("0123456789ABCDEF", 16*(d/16-INT(d/16))+1, 1) + h$: d = INT(d/16)
UNTIL d <= 0
IF LEN(h$) < lh% THEN h$ = STRING$(lh% - LEN(h$), "0") + h$
RETURN
   
HexDec:
' conversion hexadécimal/décimal de h$, résultat dans s$
s$ = ""
FOR i% = 1 TO LEN(h$) STEP 2
    v% = 16*(INSTR("0123456789ABCDEF", MID$(h$, i%, 1))-1)
    v% = v% + INSTR("0123456789ABCDEF", MID$(h$, i%+1, 1))-1
    s$ = s$ + CHR$(v%)
NEXT i%
RETURN
Revenir en haut Aller en bas
 
Recherche d'une suite de valeurs dans un fichier binaire
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Ecriture dans un fichier binaire
» Ecriture dans un fichier binaire
» Lecture/écriture par blocs dans un fichier binaire
» Recherche d'un item dans un fichier.
» Arbre binaire de recherche (AVL)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: