IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

Extraire certains caractères d'une ligne spécifiée par son commencement


Sujet :

Windev Mobile

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 41
    Points : 12
    Points
    12
    Par défaut Extraire certains caractères d'une ligne spécifiée par son commencement
    Bonsoir,
    Voila j'utilise ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    nIDFichier est un entier
    nIDFichier = fOuvre(sCheminFichier,foLecture)
    sLigne est une chaîne
    sVal est une chaîne
    nNumLigne est un entier =0
    SI nIDFichier <> -1 ALORS
    	BOUCLE
    		sLigne = fLitLigne(nIDFichier)
    		nNumLigne++
    		SI sLigne <> EOT ALORS SORTIR
    		SELON nNumLigne
    			CAS 18
    				sVal = sLigne[[44 A 66]]
    			CAS 19
    				sVal = sLigne[[44 A 57]]
    			CAS 20
    				sVal = sLigne[[44 A 56]]
    			CAS 21
    				sVal = sLigne[[44 A 54]]
    			CAS 22
    				sVal = sLigne[[44 A 55]]
    			AUTRE CAS
     
    		FIN
     
    	A FAIRE TANTQUE sLigne <> EOT 
     
    FIN
    fFerme(nIDFichier )

    Dans le principe ça marche, mais le fichier que je lis est un fichier dont la mise en forme peut varier selon les téléphones.
    Le problème est donc que ça marche (je récupère les données que je veux sur mon mobile mais beaucoup de chance que ça ne marche pas sur un autre portable, les lignes ou sont extrait les caractères désirés n'étant pas toujours au même emplacement dans le fichier sur d'autres mobiles que le miens.)

    C'est pourquoi j'aimerai qu'au lieu de spécifié une ligne précise ou extraire les caractères (avec la variable "nNumLigne"), pouvoir dire "si la ligne commence par "machin truc", alors extraire les caractères de 4 à 9 (par exemple) de cette ligne."
    Comment pourrai-je arriver à cela, je cherche et essai de multiples solutions mais ne trouve toujours pas ?
    Je suis sous WindevMobile version express 17


    Merci d'avance

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Bonsoir
    Sans trop penser (je suis fatigué):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SI Position(sLigne,"machin truc")=1 ALORS
        sVal = sLigne[[44 A 66]]
    FIN
    SI Position(sLigne,"bidule truc")=1 ALORS
        sVal = sLigne[[44 A 57]]
    FIN

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Nikel, merci à toi, ça fonctionne

  4. #4
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Re bonsoir,
    Voila alors j'ai donc ce code maintenant qui s'effectue quand j'appui sur le bouton ouvrir qui remplis le champ de saisie avec les caractères et la ligne spécifiés et ça marche très bien:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    // Identifiant du fichier externe : 
    // cet identifiant est utilisé dans toutes les fonctions de manipulation des fichiers externes
    UnFichier est un entier
     
    // Contenu du fichier
    sContenuFichier est une chaîne
     
    // Contenu de la ligne en cours de traitement
    sLigneFichier est une chaîne
     
    //Chemin du fichier
    NomCheminFichier est une chaîne="/system/build.prop"
     
     
    BOUCLE
    	sLigneFichier = fLitLigne(UnFichier)
     
       //LCD DENSITE
    	SI Position(sLigneFichier,"ro.sf.lcd_density")=1 ALORS
    		sContenuFichier = sLigneFichier[[19 A 25]]
    		// On informe l'utilisateur
    		SAI_LCDdensity=  sContenuFichier
    	FIN
     
    A FAIRE TANTQUE sLigneFichier<>EOT

    Seulement, maintenant, j'ai créer un bouton enregistrer, et j'aimerai qu'après avoir cliqué sur le bouton "ouvrir", si l'utilisateur à changé le contenu d'un champ de saisie, cette nouvelle valeurs remplace la valeur dans le fichier correspondant aux lignes et caractères spécifiés et qu'une fois la valeurs remplacée, il écrase l'ancien fichier et le remplace par le fichier sans rien modifier d'autre que la valeur par celle que l'utilisateur à saisie à la place de l'ancienne valeurs.

    J'ai donc essayé cela comme code du bouton "enregistrer" après avoir changer la valeur originale, le fichier s'enregistre bien mais la valeur ne change pas puis j'ai l'impression qu'il y'à un problème d'encodage du fichier (il doit être encodé en "Unicode (UTF-8)":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    //Chemin du fichier
    sNomCheminFichierEXPRESS est une chaîne="/system/build.prop"
     
    sLigneFichier est une chaîne
    UnFichier est un entier
    sContenuFichier est une chaîne
     
    UnFichier=fOuvre(sNomCheminFichierEXPRESS,foLectureEcriture)
     
    BOUCLE
    	sLigneFichier = fLitLigne(UnFichier)
     
    SI Position(sLigneFichier,"ro.sf.lcd_density")=1 ALORS
    sContenuFichier = sLigneFichier[[19 A 25]]
     
     
    fSauveTexte(sNomCheminFichierEXPRESS, Remplace(fChargeTexte(sNomCheminFichierEXPRESS), sContenuFichier, SAI_LCDdensity))
     
    FIN
    A FAIRE TANTQUE sLigneFichier<>EOT
    En gros j'aimerai simplement réecrire le fichier avec la valeur présente dans le champs de saisie quand l'utilisateur clique sur enregistré (qu'elle ai été modifiée ou pas)

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 41
    Points : 12
    Points
    12
    Par défaut
    Bon j'ai essayé cela depuis mais la valeur n'est toujours pas changée par celle rentrée dans le champ de saisie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    sCheminOriginalEXPRESS est une chaîne="/system/build.prop"
    sLigneFichier est une chaîne
    UnFichier est un entier
     
    UnFichier=fOuvre(sCheminOriginalEXPRESS,foLectureEcriture)
     
    BOUCLE
    	sLigneFichier = fLitLigne(UnFichier)
     
    SI Position(sLigneFichier,"ro.sf.lcd_density")=1 ALORS
     
    sLigneFichier = Remplace(sLigneFichier,sLigneFichier[[19 A 25]], SAI_LCDdensity)
     
     
    FIN
     
    A FAIRE TANTQUE sLigneFichier<>EOT

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/03/2010, 21h41
  2. taille max de nb de caractère dans une ligne de table mysql
    Par zidenne dans le forum Administration
    Réponses: 1
    Dernier message: 01/09/2006, 11h04
  3. Compter un certain caractère dans une chaine.
    Par illuzmax dans le forum Débuter
    Réponses: 16
    Dernier message: 07/04/2006, 16h37
  4. Comment extraire des caractères d'une chaine ?
    Par Powa87 dans le forum Langage
    Réponses: 16
    Dernier message: 01/01/2005, 19h00
  5. sélection d'une ligne DBGrid par clic
    Par duffman dans le forum Bases de données
    Réponses: 2
    Dernier message: 17/05/2004, 13h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo