De Perl à VB

Bagbones Messages postés 11 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 1 mars 2008 - 30 mars 2004 à 11:36
Bagbones Messages postés 11 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 1 mars 2008 - 30 mars 2004 à 19:09
Bonjour,

j'ai crée un petit programme perl qui tourne sur un poste linux et qui envoit des données vers une interface VB située sur un poste windows. En gros le pg perl lit un fichier, concaténe les lignes dans une chaine et envoit cette chaine à VB pour qu'il l'affiche dans une boite texte (multiline =TRUE).
Le problème est que je n'obtiens aucun retour à la ligne (que des carrés noir à la place du retour à la ligne).
Puisque je lit les lignes depuis un fichier, je lit ègalement le retour à la ligne, mais apparement VB ne sait pas l'interpréter (peut-être parce que c'est au format UNIX).

Y'a t-il une fonction qui convertisse UNIX->DOS, ou faut-il que je remplace ces caractéres manuellement (ce que je ne sais pas faire )-: )?

Merci

2 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
30 mars 2004 à 13:33
Tu dois effectivement avoir un Pb sur les retour chariot et retour à la ligne , imcompatible entre Unix et Widows.
Chez Windows, le saut de ligne se compose de deux caractères, celui de code ascii 10 et celui de code ascii 13.
En VB il existe une constante VBCRLF, regroupant ces deux caractères. Ton code Unix ne doit retourner que le caractère de code ascii 10 (=vbCR en VB)
Il faut donc juste que tu fasses un remplacement de ce caractère vbCR par vbCRLF.
Imaginons que dans ton code tu reçoive la ligne à afficher dans une variable nommé sLigne, tu fais :

sLigne = Replace$(sLigne,vbCR,vbCRLF)

Et ta ligne est correcte pour un affichage dasn une textbox ou Multiline = True.

Si tu n'obtiens rien de bien avec ce replace$(), essaye en changeant vbCR par vbLF, au cas ou mes connaissances UNIX serait vascillantes !!!

Christophe R.
0
Bagbones Messages postés 11 Date d'inscription mercredi 19 juin 2002 Statut Membre Dernière intervention 1 mars 2008
30 mars 2004 à 19:09
Bonjour,

j'ai essayé ta technique qui n'a pas marché (j'avoue ne pas savoir vraiment pourquoi). Par contre je suis parvenu au résultat voulut tout simplement en utilisant un petit utilitaire sous linux qui se nomme unix2dos avant d'effectuer la concaténation et l'envoit de ma chaîne.

Merci pour votre aide (-:

PS : les fins de lignes sous unix sont marquées par un LF (-:
0
Rejoignez-nous