nouveau probleme unicode
Utilisateur WDF
Inscrit:
08/03/2006 11:03
De Poitiers
Post(s): 79
bonjour,

Connaitre si un fichier plat est unicode ou pas c'est bon pas de problème.

En revanche, il y a un probleme avec le EOT

En effet si on fait !
nNumfic		=	fOuvre(rechfic.SAIS_FIC,foLecture+foUnicode)

...
sligne	=	UnicodeVersAnsi(fLitLigne(nNumfic)) 
TANTQUE sligne<>EOT 
....
sligne	=	UnicodeVersAnsi(fLitLigne(nNumfic))
fin
fferme(nNumfic)

et bien windev tourne en boucle.
En effet, a aucun moment le EOT apparait !
A la fin, c'est chaine vide a gogo !

Une petite idée ?

Merci

Contribution le : 24/08/2006 17:47
_________________
La sagesse est d'être fou lorsque les circonstances en valent la peine.
Créer un fichier PDF de la contribution Imprimer


Re: nouveau probleme unicode
Animateur WDF
Inscrit:
22/11/2004 11:23
Post(s): 255
Bonjour,

Si une chaine vide apparait à la fin du fichier, pourquoi ne pas l'utiliser à la place de EOT ?

nNumfic=fOuvre(rechfic.SAIS_FIC,foLecture+foUnicode)

...
sligne=UnicodeVersAnsi(fLitLigne(nNumfic)) 

TANTQUE sligne<>"" 
   ....
   sligne=UnicodeVersAnsi(fLitLigne(nNumfic))
FIN

fFerme(nNumfic)



Cordialement

Contribution le : 25/08/2006 08:32
Créer un fichier PDF de la contribution Imprimer


Re: nouveau probleme unicode
Utilisateur WDF
Inscrit:
08/03/2006 11:03
De Poitiers
Post(s): 79
Oui, c'est ce que je voulais faire au départ mais je peux avoir une ligne vide dans mon fichier il va interrompre le traitement alors qu'il y a encore des enregistrements.

Contribution le : 25/08/2006 09:33
_________________
La sagesse est d'être fou lorsque les circonstances en valent la peine.
Créer un fichier PDF de la contribution Imprimer


Re: nouveau probleme unicode
Utilisateur WDF
Inscrit:
08/03/2006 11:03
De Poitiers
Post(s): 79
Bonjour,

Bon j'ai resolu le problème.
En fait, on recupere bien le <EOT> mais comme on est en unicode il faut qu'il soit sur 2 octets pour être retranscrit en Ansi (<EOT><0>)ce qui n'est pas le cas quand on le récupere (<EOT> qui donne "" quand on le passe en Ansi). En ajoutant un caract(0) ca donne en unicode (<EOT><0><0>) ce qui une fois transformé en Ansi donne (<EOT>).


je suis obligé de passer par une variable unicode pour tester la valeur retournée par le flitligne()

Voici le code :

sMachaine 	est une 	chaîne UNICODE

TANTQUE sligne<>EOT 

	...

	SI ficunicode ALORS			
		sMachaine	=	fLitLigne(nNumfic)
		SI UnicodeVersAnsi(sMachaine+AnsiVersUnicode(Caract(0)))=EOT ALORS
			sligne	=	EOT
		SINON
			sligne	=	UnicodeVersAnsi(sMachaine)
		FIN
	SINON
		sligne	=	fLitLigne(nNumfic)
	FIN
FIN




Contribution le : 25/08/2006 11:03
_________________
La sagesse est d'être fou lorsque les circonstances en valent la peine.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2