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 :

enregistrement de la longueur d'une liste


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 52
    Par défaut enregistrement de la longueur d'une liste
    salut
    avec le code suivant on peut sauvegarder des composants en savent le nombre de ces derniers mais comment le faire en sauvegardant la taille de la liste?càd je veut sauvegarder la taille de liste dans le même fichier où je sauvegarde les composants
    le 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    //unit1...
    var
      Form1: TForm1;
      l:Tlist;
      f:Tfilestream;
    implementation
     
    uses Unit2;
     
    {$R *.DFM}
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    l:=Tlist.create;
    l.add(label1);
    l.add(label2);
    l.add(label3);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
    f:=Tfilestream.create('n1',fmcreate);
    for i:=0 to l.count-1 do
    begin
    f.WriteComponent(l.items[i]);
    end;
    f.free;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
    form2.show;
    end;
     
    end.
    //unit2
    var
      Form2: TForm2;
      L2:Tlist;
      a:Tlabel;
    implementation
    uses unit1;
    {$R *.DFM}
     
    procedure TForm2.Button1Click(Sender: TObject);
    var j:integer;
    begin
    f:=Tfilestream.create('n1',fmopenread);
    f.seek(0,sofrombeginning);
    l2:=Tlist.create;
    for j:=0 to 2 do
    begin
    a:=Tlabel.Create(self);
    a:=Tlabel(f.readcomponent(a));
    l2.add (a);
    Tlabel(l2.items[j]).parent:=form2;
    end;
    end;
    end.

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f.WriteInteger(l.Count);
    en tête de stream me semble assez adapté...
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 52
    Par défaut
    merci
    mais la méthode writeinteger n'exite pas avec la classe Tfilestream ni avec Tstream;alors comment faire.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 258
    Par défaut
    Salut,

    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var s : string;
    s := IntToStr(l.Items.count);
    f.Write(s[0],strlength(s));
    En effet tu enregistre une chaîne de caractères et en la relisant tu la caste en integer...

    A plus,

    Christopher

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 489
    Par défaut
    salut

    utilise la fonction write
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Tfs.Write(monint,sizeof(monint));
    @+ Phil
    PS la methode d'avant n'est pas une bonne solution car selon la valeur de ton entier la chaine n'aura pas la meme longueur et pour le relire ca ne seras pas facile

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Longueur d'une liste
    Par stage2009 dans le forum Scheme
    Réponses: 1
    Dernier message: 04/04/2012, 17h00
  2. Restreindre la longueur d'une liste chaînée
    Par fontelouis dans le forum Langage
    Réponses: 3
    Dernier message: 20/05/2008, 16h08
  3. longueur d'une liste
    Par sissi25 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 13/02/2007, 14h35
  4. Réponses: 2
    Dernier message: 01/08/2006, 23h24
  5. Réponses: 2
    Dernier message: 16/10/2004, 14h33

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