PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV (versiones precedentes) → Problème import fichier texte
Problème import fichier texte
Iniciado por Ludwig, 07,feb. 2024 10:52 - 9 respuestas
Miembro registrado
8 mensajes
Publicado el 07,febrero 2024 - 10:52
Bonjour à tous,

Je rencontre un problème lors d'un import d'un fichier texte vers un fichier de données.

HImporteTexte("Performance", "C:\Fichier_Analyse.txt", "", ";", hImpIgnorePremièreLigne, "JAUGE")


j'ai ce message d'erreur : "En attente du délimiteur de début de chaîne <偐>."

Je ne sais pas comment procéder pour parer cette erreur.

Pourrais-je avoir un élément de réponse, svp ?

Merci d'avance et bonne journée.
Miembro registrado
102 mensajes
Popularité : +1 (1 vote)
Publicado el 07,febrero 2024 - 11:53
bonjour,

ma première idée serait peut être de vérifier l'encodage de votre fichier au vu du caractère affiché dans le message
Miembro registrado
8 mensajes
Publicado el 07,febrero 2024 - 14:03
Bonjour Silverin,

Merci pour ton retour.

Le fichier d'analyse est créé comme suit :
Je charge le contenu d'un csv
sFichierCSV est une chaîne

// Charge les données du fichier
sFichierCSV = fChargeTexte(sCheminFichier)


Je charge les données dans un tableau pour faire différents calculs
// Charge les données dans un tableau
CSVVersTableau(sFichierCSV, Montableau, ";")


Je charge les données recalculées du tableau dans un fichier texte
// Sauvegarde les données dans un fichier texte nommé Fichier_Analyse.txt
sFichierCSV = TableauVersCSV(Montableau, ";")

fSauveTexte("C:\APPLI_AELYS\APPLI_AELYS\PERFORMANCE\EXEMPLE\Fichier_Analyse.txt", sFichierCSV)


Encore merci
Miembro registrado
3.348 mensajes
Popularité : +93 (137 votes)
Publicado el 07,febrero 2024 - 14:09
Salut
Je pense aussi que c'est un fichier en UTF-8 ou Unicode
Il ne trouve pas le caractère servant de séparateur.
Il serait utile de voir les fonctions de conversion
Tel que Unicodeversansi
Miembro registrado
8 mensajes
Publicado el 07,febrero 2024 - 14:26
J'ai déclaré ma variable sFichierCSV en une chaîne UNICODE.
Je n'ai plus le message d'erreur mais l'import dans le fichier de données ne se fait pas.

Avec Unicodeversansi l'erreur est toujours présente. :(
Miembro registrado
102 mensajes
Popularité : +1 (1 vote)
Publicado el 07,febrero 2024 - 15:43
essayer d'ouvrir votre fichier avec un éditeur de texte comme NotePad++ pour voir l'encodage, cela vous permettrait de voir quel fonction utiliser pour la conversion
Miembro registrado
8 mensajes
Publicado el 07,febrero 2024 - 18:27
J'ai procédé différemment, je boucle sur le fichier texte, fais mes différents calculs et fais un hAjoute.
C'est fonctionnel.
En revanche, dès que le fichier texte fait plus de 400000 lignes, rien ne se passe.
Cela bloque.
Il existe une limite de lignes avec la fonction CSVVersTableau() ?

Merci ;)
Miembro registrado
3.348 mensajes
Popularité : +93 (137 votes)
Publicado el 07,febrero 2024 - 20:32
Salut
Il se peut que ce soit fchargetexte a avoir une limite
Regarde plutôt la méthode 1 sur cette page
https://doc.pcsoft.fr/fr-FR/?20056&name=CLF_Lire_dans_un_fichier_texte_ou_CSV
Miembro registrado
3.891 mensajes
Popularité : +227 (347 votes)
Publicado el 09,febrero 2024 - 16:40
Bonjour,
Ludwig a écrit :
Il existe une limite de lignes avec la fonction CSVVersTableau() ?

En théorie non, mais si tu compiles en 32 bits, tu es limité par la barre des 2Go.
Tu peux contourener ce problème en utilisant fChargeBuffer qui permet de ne récupérer qu'une partie du fichier texte.

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
8 mensajes
Publicado el 09,febrero 2024 - 21:42
Bonsoir à tous,

Encore merci pour vos retours.

Je ne suis finalement pas passé par un tableau. Je recalcule en bouclant sur la chaine en utilisant chainedécoupe.
C'est fonctionnel et peut traiter plus de 800000 lignes en 2 minutes.
Ca me convient et j'arrive à faire l'import dans le fichier de données. ;)

Encore merci et bonne soirée.