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

Delphi Discussion :

lire une chaîne > 255 d'un fichier texte


Sujet :

Delphi

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut lire une chaîne > 255 d'un fichier texte
    Bonjour à tous,

    je suis nouveau sur le forum et j'ai un probleme de programmation : voila mon probleme :
    j'ai besoin de lire un fichier .csv mais les lignes depassent 255 caracteres et je ne vois pas comment faire pour lire une chaine > 255 et l'affecter a ma variable de type string :

    la directive de compilation (pour passer en chaine longue ) ne me convient pas non plus car je veux affecter la chaine lue a un champ 'B' dans une table paradox et ce type de chaine n'affecte pas ce champ ? donc je suis oblige de rester en 'shortstring' de 255 caracteres .

    merci de votre reponse

    Pascal



  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par pascal54
    Il y'a quoi d'amusant exactement ?

  3. #3
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    & bien tu lit tes chaines en string (euh je ne parle pas tu côté vestimentaire ) et tu cast en shortstring.

  4. #4
    Membre expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 53
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Points : 3 565
    Points
    3 565
    Par défaut
    Bin..., comment dire...
    "ça dépend", ça dépasse



    Non plus sérieusement, tu veux mettre plus de 255 caractères dans seulement 255, c'est ça ? là c'est mission impossible à moins d'utiliser un système de compression. Bref, tu ne peux pas mettre le contenu d'une bouteille pleine de 1L dans un verre de 25cl, à oins de déshydrater le liquide ou de n'en garder qu'une partie.

    Sinon, le truc que je n'ai pas trop compris à propos de ton fichier csv.

    On est d'accord de dire que chacune des ligne (qui représente plusieurs champs) fait plus de 255 caractères. Mais les champs de la ligne de ton fichier csv, eux, il font aussi plus de 255 caractères ???

    Sinon, si , utilises les chaines vastes, exemple :

    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
    var 
       Ligne:string; //chaine longue
       ChampB:ShortString; //Chaine courte
     
    begin
      Ligne:=...  //lecture de la ligne qui fait, admettons, 400 caractères
     
      //Si on a plus de 255 caractère
      //alors on coupe la chaîne pour ne retenir que les 255 premiers
      if Length(Ligne)>255 then  
      SetLength(Ligne,255);
     
      ChampB:=Ligne;
      Table1.insert;
      Table1.FieldByName('B').AsString:=ChampB;
      Table1.Post;
    end;
    Bidouilleuse Delphi

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Chaines > 255
    Merci a vous pour vos reponses

    Pour wasko, mon fichier excel .csv a des lignes > 255 caracteres mais j'ai besoin de tous les caracteres afin de 'remplir' mon champ 'b' de ma base paradox :

    Cette base se trouve sur www.haas-micro-shop.com en fait, c'est une base paradox vers laquelle je mets à jour mes tarifs et les caracteristiques de mes produits

    Les caracteristiques de beaucoup de mes produits sont tronqués en milieu de ligne lors de l'exportation de la base d'origine que j'ai recupéré par mon fournisseur et je voudrais mettre à jour ma base sans ma taper tous les articles manuellement.

    Donc j'ai besoin de toute la longueur de mon champ mais si je remplis une chaine 'string' (longue donc) mon champ ne se remplit pas lors de l'affectation suivante :

    Ligne_Extraite := Copy(Ligne_Complete,Index_Debut_Chaine ,length(Ligne_Complete)-Index_Debut_Chaine +1);
    { Comme findkey se positionne sur le bon enregistrement, on peut maintenant modifier notre champ memo2 }
    datamodule2.articles.edit;
    datamodule2.articles.fieldbyname('memo2').value:= Ligne_Extraite ;

    et le post suivant bien sur !

    Si je trace, je vois le contenu de ma ligne_extraite et le contenu de mon memo mais a la fin de l'affectation, le champ memo n'est pas modifié ici ?
    par contre si j'affecte manuellement en 'dur' ça fonctionne parfaitement et c 'est simplement a cause de la longueur de ma chaine puisqu' une shortstring fonctionne

    merci de m'eclairer

    ps: j'espere que mes explications sont assez claires ?


  6. #6
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Et tu as essayé la solution de Waskol qui me parait cohérente ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 11/03/2015, 12h01
  2. Comment lire une chaîne dans un fichier binaire?
    Par dot-_-net dans le forum Débuter
    Réponses: 9
    Dernier message: 18/05/2008, 23h13
  3. Lire une enregistrement au hasard dans un fichier
    Par bonjour69 dans le forum Langage
    Réponses: 27
    Dernier message: 26/09/2006, 18h54
  4. [SAX] Lire une chaîne de caractères comme un XML
    Par Le Furet dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/01/2006, 08h57

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