Page 1 sur 1

Acces a un bloc memoire et faire des ReplaceString

Publié : jeu. 06/juil./2006 17:39
par SPH
Je ne sais plus ou j'ai eu ce code mais je souhaitais savoir comment on pourrait avoir accès a ce bloc memoire. Nottament comment faire des ReplaceString ou assimilé ??

Code : Tout sélectionner

new$="un fichier"
  If new$
    If ReadFile(0, new$) 
      length = Lof(0)                            ; Lit la taille en octets du fichier 
      Debug length
      *MemoryID = AllocateMemory(length)         ; alloue un bloc mémoire de la taille du fichier
      If *MemoryID
        bytes = ReadData(0, *MemoryID, length)   ; Lit les données du fichier et les place dans le bloc mémoire
        Debug "Nombre d'octets lus: " + Str(bytes)
      EndIf
      CloseFile(0)
    EndIf
  EndIf

Publié : jeu. 06/juil./2006 18:27
par nico
Tu fais un peeks , après tu fais comme d'hab.

Publié : ven. 07/juil./2006 9:41
par lionel_om
ou en passant par des *s.String si tu veux optimiser :wink:

Publié : ven. 07/juil./2006 21:17
par SPH
Hmmmm, il est donc apparement plus facile d'utiliser des vrais strings.
Alors je vais rapprocher le terme "broc" avec le terme "string" en vous demandant s'il est possible de remplir une string (a$ par exemple) de 60ko en un coup ?
Oui, regarder l'exemple ci dessus. En un coup, on reserve et copie un fichier en memoire. Est il possible de decouper et copier en un coup des morceaux de 60ko de fichier dans des Dim x$(y) ???

Publié : ven. 07/juil./2006 22:15
par Flype
en principe oui, surtout depuis la v4.

Publié : ven. 07/juil./2006 22:21
par Lna
Je pense que le problème que tu sembles rencontrer SPH, se situe dans ton fichier.
Si c'est un fichier de nature binaire, il risque de comporter au moins un $00.
Et donc $00 pour un string c'est la délimitation de fin de caractères.

Pour tes tableaux de 60 Ko, il va falloir réserver l'espace mémoire par un SPACE, puis le recopier par un COPYMEMORY à partir des adresses mémoires.
Ensuite pour exploiter par le biais d'instructions de STRING, le problème sera encore le même.
C'est à partir de là qu'il faudrait reconstruire des routines en assembleur pour optimiser tes traitements mémoires, mais en basic cela peut aussi le faire en employant la même méthode.

A peluche les nounours #nounours #nounours #nounours