Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 10-11-2008 10:41:07

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

[RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

Bonjour,

Je dois importer un fichier .txt avec comme séparateur des ; (points virgules) comme séparateur.

La fonction Importfile ne supporte pas ce séparateur.

J'ai regardé sur le site, mais je ne trouve pas la solution à mon problème.

Et même si j'importe le fichier dans une grande zone, après comment je peux faire pour récupérer les différentes zones afin de restructurer mon fichier ?

Merci d'avance

Hors ligne

 

#2 10-11-2008 11:37:20

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

Salut,

Pour le problème des ";" je pense que ça avait déjà été traité dans un autre sujet, faudra juste le retrouver.

Par contre pour le découpage je vois un truc dans le genre :

Code: pb

long ll_premier_point_virgule
long ll_deuxieme_point_virgule
string ls_chaine_extraite
long ll_nombre_de_caracteres

//Pour chaque ligne du fichier (je te laisse coder cette partie)

ll_premier_point_virgule = 1
ll_deuxieme_point_virgule = 1
// Tant que on a pas atteint la fin de la ligne
DO WHILE ll_deuxieme_point_virgule <> 0
        // On sauvegarde l'emplacement du premier point virgule
                  ll_premier_point_virgule = ll_deuxieme_point_virgule

                ll_deuxieme_point_virgule = Pos(ls_ligne, ";", ll_premier_point_virgule)

                If ( ll_deuxieme_point_virgule = 0) Then
                        ls_chaine_extraite = Mid(ls_ligne, ll_premier_point_virgule + 1)
        Else
             //Sinon on extrait jusqu'au prochain ";"
             ll_nombre_de_caracteres = ll_deuxieme_point_virgule - ll_premier_point_virgule
             ls_chaine_extraite = Mid(ls_ligne, ll_premier_point_virgule + 1, ll_nombre_de_caracteres - 1)
        End If
LOOP

Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#3 10-11-2008 14:57:29

wazou1812  
Modératrice
Award: bf
Date d'inscription: 24-05-2006
Messages: 610
Pépites: 2,097
Banque: 3,536,631,712,504

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

Mais oui mais c'est bien sur,

C'est tout à fait ce qu'il me fallait, et en plus ça marche.

Merci beaucoup

Hors ligne

 

#4 10-11-2008 18:00:40

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

De rien mais si d'autres savent si il existe une fonction pb native qui ferait la même chose que "split" en java le code serait encore plus court :

Code: java

Dernière modification par Nephtis (10-11-2008 18:02:16)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#5 10-11-2008 18:08:25

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

native non, mais ça prend pas longtemps d'écrire une petite fonction lnv_fn.of_string_to_tab( as_chaine, as_separateur, ref as_tab[] )


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#6 13-11-2008 17:55:45

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

Je me permets de faire remonter le sujet car j'ai créé cette fonction mais elle me fait planter mon application

Cliquez pour agrandir

Voila le code source de la fonction (format export) :

Code: pb

$PBExportHeader$f_string_to_tab.srf
global type f_string_to_tab from function_object
end type

forward prototypes
global subroutine f_string_to_tab (string as_chaine, string as_separateur, ref string as_tab[])
end prototypes

global subroutine f_string_to_tab (string as_chaine, string as_separateur, ref string as_tab[]);

Long ll_premier_separateur
Long ll_deuxieme_separateur
Long ll_nombre_de_caracteres
Long ll_taille_tableau
String ls_chaine_extraite

ll_premier_separateur = 1
ll_deuxieme_separateur = 1

// On initialise la taille du tableau
ll_taille_tableau = 0

// Tant qu'on a pas atteinds la fin de la ligne
DO WHILE ll_deuxieme_separateur <> 0
  
        ll_premier_separateur = ll_deuxieme_separateur
  
  //Recherche du prochain separateur
  ll_deuxieme_separateur = Pos(as_chaine, as_separateur, ll_premier_separateur + 1)
  
    If (ll_deuxieme_separateur = 0) Then
        ls_chaine_extraite = Mid(as_chaine, ll_premier_separateur + 1)
  Else
        ll_nombre_de_caracteres = ll_deuxieme_separateur - ll_premier_separateur

    If (ll_premier_separateur = 1) Then
      // Si on commence le balayage alors il faut prendre le premier caractere
      ls_chaine_extraite = Mid(as_chaine, ll_premier_separateur, ll_nombre_de_caracteres)
    Else
            ls_chaine_extraite = Mid(as_chaine, ll_premier_separateur + 1, ll_nombre_de_caracteres - 1)
    End If
  End If
  
    ll_taille_tableau = ll_taille_tableau + 1
  as_tab[ll_taille_tableau] = ls_chaine_extraite
  
LOOP
end subroutine

Est ce que quelqu'un pourrait tester chez lui?

Au départ j'avais oublié de déclarer le tableau en "référence" (cela ne plantait pas mais je ne récupérait pas mes données) puis j'ai recréé la fonction en déclarant le tableau en "référence" (et c'est là que ça plante)

J'appelle la fonction de cette façon :

Code: pb

f_string_to_tab(ls_Line_Input, ";", ls_ligne_ad[])

Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#7 13-11-2008 18:05:03

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5122
Pépites: 97,200
Banque: 2,147,483,647

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

l'appel c'est sans les crochets :

Code: pb

f_string_to_tab(ls_Line_Input, ";", ls_ligne_ad)

N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#8 14-11-2008 11:59:53

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Importfile avec un fichier .txt et des points virgules en séparateur

erasorz a écrit:

l'appel c'est sans les crochets :

Code: pb

f_string_to_tab(ls_Line_Input, ";", ls_ligne_ad)

C'était bien ça

Dernière modification par Nephtis (14-11-2008 12:00:19)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22