ReadString()
ReadString()
bonjour à tous.
je me permet de solliciter votre aide car j'ai un problème avec l'utilisation de la commande readstring().
je developpe un programme qui doit tronquer une chaine de caractère en plusieurs lignes (en fait, conversion de données entre un serveur AS400 et notre ERP maison)
exemple: un fichier source.txt qui contient la ligne "aaaabbbbccccdddd"
sera copiée dans un fichier destination.txt qui contiendra
aaaa
bbbb
cccc
dddd
le fichier source, destination et la taille de la coupure sont passée en parametre du programme.
si tout se passe bien pour un fichier de petite taille, readstring() ne semble pas apprecier un fichier qui contient une unique ligne de 585 728 octets (minimum). j'obtiens un 'invalid memory access'.
OpenConsole()
source.s=ProgramParameter()
dest.s=ProgramParameter()
taille.l=Val(ProgramParameter())
test=ReadFile(1,source.s)
contenu.s=readstring()
y a-t-il un moyen de contourner cette limitation ?
merci d'avance pour votre aide.
je me permet de solliciter votre aide car j'ai un problème avec l'utilisation de la commande readstring().
je developpe un programme qui doit tronquer une chaine de caractère en plusieurs lignes (en fait, conversion de données entre un serveur AS400 et notre ERP maison)
exemple: un fichier source.txt qui contient la ligne "aaaabbbbccccdddd"
sera copiée dans un fichier destination.txt qui contiendra
aaaa
bbbb
cccc
dddd
le fichier source, destination et la taille de la coupure sont passée en parametre du programme.
si tout se passe bien pour un fichier de petite taille, readstring() ne semble pas apprecier un fichier qui contient une unique ligne de 585 728 octets (minimum). j'obtiens un 'invalid memory access'.
OpenConsole()
source.s=ProgramParameter()
dest.s=ProgramParameter()
taille.l=Val(ProgramParameter())
test=ReadFile(1,source.s)
contenu.s=readstring()
y a-t-il un moyen de contourner cette limitation ?
merci d'avance pour votre aide.
uniquement la v4.0 pour windows
( + les correctifs disponibles sur www.purebasic.com/beta/ pour la v4 )
( + les correctifs disponibles sur www.purebasic.com/beta/ pour la v4 )
ton problem venais que sur la V 3.94 le buffer des chaines etait limité !
il y avait moyen de modifier cela en utilisant ce code
ce code aurai fait marcher ton prg sur la version 3.94
en mettant un gros chiffre dans le parametres de la procedure !!
il y avait moyen de modifier cela en utilisant ce code
Code : Tout sélectionner
; procedure pour augmenter le buffer des chaines dans le pure basic ,
; a appeler une seul fois !
Procedure SetStringManipulationBufferSize(Bytes)
PBStringBase.l = 0
PBMemoryBase.l = 0
!MOV Eax, dword [PB_StringBase]
!MOV [Esp+4],Eax
!MOV Eax, dword [PB_MemoryBase]
!MOV [Esp+8],Eax
HeapReAlloc_(PBMemoryBase, #GMEM_ZEROINIT, PBStringBase, Bytes)
!MOV dword [_PB_StringBase],Eax
EndProcedure
ce code aurai fait marcher ton prg sur la version 3.94
en mettant un gros chiffre dans le parametres de la procedure !!
