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

Langage Delphi Discussion :

Remplir directement un record avec un fichier ASCII


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Par défaut Remplir directement un record avec un fichier ASCII
    Bonjour,

    Il est possible lorsque l'on dispose d'un fichier en binaire de remplire une structure (recodre) d'un coup. On lit toute la structure d'un coup au lieu de lire valeur par valeur.
    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
    18
    Type
      TAquaPro = record
        sync: byte;
        id: byte;
        size: word;
        Date: array[1..6] of byte;
    //[...]
        Humidite: word;
        CheckSumMOT: smallint;
    end;
     
    var
      mesureAquaPro:TAquaPro ; 
     
    begin
    [...]
    //Lecture directe:
    Buffer.Read(mesureAquaPro, sizeOf(mesureAquaPro));
    Existe il une commande pour faire la meme chose si le fichier est en ASCII? Ou une astuce...

  2. #2
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut Fichier ASCII
    Bonjour.

    Peux tu préciser exactement ce que tu veux faire ?

    Charger un fichier texte dans tableau de chaines de caracteres, dans un TStringList... Les longueurs des lignes de textes sont elles connues ou connait ont la longueur maximale des lignes ?
    Selon les caratéristiques du fichier texte, cela peut changer complètement la méthode et la vitesse d'exécution du code.

    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Par défaut
    Ben en fait je dispose d'une suite de valeures de type TdateTime et real dont l'ordre et le nombre sont connus (1 TdateTime et au max 100 real). Le separateur est l'espace. Pour l'instant j'ouvre mon fichier avec un TextFile et j'affecte les valeur une a une:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For j :=0 to NbMesure do
    begin
      read(TextFile, Record.DateTime[j]);
      For i := 0 to 99 do
        read(TextFile, Record.valeur[j, i]);
      readln(TextFile);
    end;
    Je voudrais faire un truc plus simple du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    read(JeSaisPasQuoi, Record);
    C'est plus claire?

  4. #4
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut Record
    Ha ! Oui, c'est plus clair.

    Il s'agit donc de charger un fichier binaire dans une structure (Record) puis d'en extraire les données.

    Je t'envois un exemple concret dans la journée.

    A+

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 108
    Par défaut
    NONON!!!
    Justement en binaire je sait faire. C'est si le fichier est en ASCII que je ne sais pas faire...

    C'était pas assez claire en fait

  6. #6
    Membre chevronné
    Avatar de Philippe Gormand
    Inscrit en
    Mars 2002
    Messages
    330
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 330
    Par défaut TStringList
    Alors, quelque chose comme cela

    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
     
    Var
      ListesParametre  : TStringList;
      I                : Integer;
      Chn1, Chn2, Chn3 : String;
     
    begin
      // Créer un objet StringList temporaire
       ListesParametre := TStringList.Create;
       ListeParametres.LoadFromFile(NomFichierParametres);
       For I := 0 To ListeParametres.Count - 1 Do
        begin
           // Extraire les données
     
        end;
      // Détruire l'objet temporaire
      ListeParametres.Free;
    end;
    Ou 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
     
    Var
      ListesParametre  : TStringList;
      I                : Integer;
      Chn1, Chn2, Chn3 : String;
     
    begin
        // Créer un objet StringList temporaire
       ListesParametre := TStringList.Create;
       ListeParametres.LoadFromFile(NomFichierParametres);
       I := ListeParametres.Count;
       If I >= 3 Then
        begin
           Chn1 := ListeParametres[0];
           Chn2 := ListeParametres[1];
           Chn3 := ListeParametres[2]; 
        end;
      // Détruire l'objet temporaire
      ListeParametres.Free;
    end;

Discussions similaires

  1. Remplir BDD avec un fichier SQl directement via frontoffice
    Par trossier dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 16/08/2012, 10h13
  2. remplir une base access avec un fichier .txt en VB.net
    Par altheorijinal dans le forum Windows Forms
    Réponses: 0
    Dernier message: 16/03/2009, 12h41
  3. Réponses: 3
    Dernier message: 19/01/2005, 15h50
  4. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  5. Réponses: 3
    Dernier message: 27/01/2004, 18h46

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