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 :

Enregistrer un tableau de caractéres


Sujet :

Delphi

  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Enregistrer un tableau de caractéres
    salut tt lmonde! bon ca fait pas trés longtemps que j'utilise deplohi(version7) donc, je suis pas vraiment expert !

    alors voila, je suis entrain de faire un programme ou j'utilise un tableau(m,n) de type STRING,et je voudrais pouvoir enregistrer les donnés dans un fichier.jai mis une SAVEDIALOG et une OPENDIALOG, jai ecri les algorithmes(relatifs aux boutons :enregistrer et ouvrir) mais il semblerait qu'il y ait un probléme dans mes algo.

    donc voila si quelqu'un peut m'envoyer les algorithmes nécéssaires pour faire tout ca, ou bien de carément envoyer un petit programme demo,ou il ya juste un tableau de type STRING (les données du tableau son prises a partir d'un STRINGGRID sur la premiére forme du programme)et des boutons 'enregistrer' et'ouvrir' ca serait trés trés sympa! parce que la je deprime..j'y arrive vraiment pas!

    merci davoir pris le temps de lire mon message. jéspére que quelqu'un pourra m'aider! ++

  2. #2
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 288
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 288
    Points : 1 936
    Points
    1 936
    Par défaut
    Mets-ton code, ça nous aidera.
    Delphi 7/XE2/XE3
    C#
    Oracle 9i à 12c
    SQL Server 2008 à 2014

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pour la sauvegarde/restauration de tableau, on peut faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Var myStringlist : Tstringlist ;
    ...
    myfilename:='c:\xxx\yyy.txt' ;
    ...
    for i:= 0 to m-1 do for j:=0 to n-1 do MyStringlist.add(tableau[i,j]) ;
    MyStringlist.savetofile(myfilename) ;
    ...
    MyStringlist.loadfromfile(myfilename) ;
    If MyStringlist.count=m*n 
     then for i:= 0 to m-1 do for j:=0 to n-1 do tableau[i,j]:=MyStringlist(i*n+j) 
     else showmessage('Erreur taiile tableau')
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ok merci vrmn bcp(meme si j'ai pas trés bien compris le truc) lol enfin voila ce que j'ai fait chez moi: jai declaré le tableau comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Ttableau = array[0..1000] of array[0..9] of string; 
    ...
    T:Ttableau;
    rmq: les valeurs entrées dans le tableau sont tirées d'un STRINGGRID sur une forme du programme!le tableau comporte 9 colonnes et 'unit1.n' lignes!

    bon aprés jai mis le SAVEDIALOG et le OPENDIALOG sur la meme forme du stringgrid. et jai mis deux boutons OUVRIR et ENREGISTRER, voila les algortithmes associés aux deux boutons:

    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
    procedure TForm1.enregistrer1Click(Sender: TObject);
    type fichier=textfile;
    var
    f:fichier;
    i,j:integer;
    begin
    if savedialog1.execute then
    begin
    assignfile(f,savedialog1.filename);
    rewrite(f);
    for i:=1 to unit1.n do
    for j:=1 to 9 do
    write(f,t[i,j]);
    closefile(f);
    end;
    end;

    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
    procedure TForm1.ouvrire1Click(Sender: TObject);
    type fichier=textfile;
    var
    f:fichier;
    i,j:integer;
    x:string;
    begin
    if opendialog1.execute then
    begin
    assignfile(f,opendialog1.filename);
    reset(f);
    for i:=1 to unit1.n do
    for j:=1 to 9 do
    begin
    read(f,x);
    t[i,j]:=x;
    end;
    closefile(f);
    end;
    end;

    voila:aprés jouvre mon programme,je mets des valeurs dans le tableau,je mets 'enregistrer', je sauvgarde dans un fichier tout a fait normalement,mais aprés quand je reouvre le fichier que jai sauvegardé,il me met toutes les valeurs dans la premiére case du tableau(tout dans t[1,1])

    svp quelqu'un saurait d'ou vient le probléme??!! svpppp!!!please heelp!!!!

  5. #5
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Normalement je déteste le "textfile", il y a plus d'une méthode pour le remplacer; fichier typer (file of char,) TStrings comme ta dit Graffito, ou autre
    pour ta méthode pour l'enregistrement essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    write(f,t[i,j]+#13#10);

    pas testé
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  6. #6
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    merci edam! jai essayé ton truc mais ca ne marche pas non plus :s
    merci a toi aussi Graffito, mais jai meme pas su utiliser ta méthode puré chui nul!!!

  7. #7
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    comme tu débutant , pour la méthode de grafito, fait comme suit,
    1-ajoute une listbox à ta form
    2-ecrit tes string de dans avec listbox1.items.add(s)
    3-enregistre avec Listbox1.savetofile(nomfichier)
    4-lire: listbox1.loadfromfile(nomfichier)
    voir le code de grafito et aussi l'aide de delphi pour plus de détail sur les procedure et function de TListBox
    quant tu comprendras sa, le code de grafito devien facil pour toi
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  8. #8
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    Citation Envoyé par pacsems
    les données du tableau son prises a partir d'un STRINGGRID sur la premiére forme du programme)
    sa veux dire que tes données sont structurés, tu peut passer par par les record, et sera plus facille
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  9. #9
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    hmm..jai pensé aussi a utiliser un fichier d'enregistrements, ou chaque enregistrement comporterait une chaine (enfin..STRING), ca pourrait vraiment resoudre mon probléme, mais la aussi..je sais pas comment le faire sur delphi (je sais , je suis pathétique)
    alors..une reponse?

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 108
    Points : 77
    Points
    77
    Par défaut
    bonjour

    tu peut petétre voir avec sa j'enregistre un tableau de string dedans
    faut voir si ca peut t'aider
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure Nom.sauvegarder();      
    var
    f : textfile;
    indice:integer;
    begin
    assignfile(f,'Nomdufichier.txt');
    rewrite(f);
    for indice:=1 to nbchamps do
    begin
    writeln(f,Ttableau[indice]);
    end;
    closefile(f);
    end;
    voila eseille avec ca si tu a besoin du chargement tu le dit ^^

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 108
    Points : 77
    Points
    77
    Par défaut
    eseille de créé un bouton tt simple et de placé le code dedans.
    mais normalement il n'y a pas de problème si tu na que des champs de type string.
    sinon oui faut utilisé un type d'enregistrement!

  12. #12
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,
    merci a toi aussi Graffito, mais jai meme pas su utiliser ta méthode
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ttableau = array[0..1000] of array[0..9] of string;
    Il aurait fallu écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ttableau = array[0..1000,0..9] of string;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  13. #13
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par Edam
    Normalement je déteste le "textfile", il y a plus d'une méthode pour le remplacer; fichier typer (file of char,) TStrings comme ta dit Graffito, ou autre
    pour ta méthode pour l'enregistrement essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     write(f,t[i,j]+#13#10);
    pas testé
    Euh oui tu dois pas aimer le textfile, un writeln suffit pour faire un saut de ligne. Pour les fichiers typés y a effectivement que le write.

  14. #14
    Candidat au Club
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    yeaaaahh!! c exactement ca macumba ^^ , javé trouvé la solution hier matin, mais g pas eu le temps de poster. mais tu pouvais pas vrnir plus macumba?tu ma laissé galérer tout ce temps la! lol jrigol! enifn bref..merci beaucoup beaucoup a tout le monde davoir pris le temps de lire mon sujet et de maider! mon probléme est fin resolu, grace au petit truc de 'writeln' et 'readln' au lieu de write et read, c béte hin?! lol. enfin..alé ciao tout le monde!! merci encore!++

  15. #15
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 218
    Points : 311
    Points
    311
    Par défaut
    Venir plutot je ne sais pas, car la dernière fois que je suis passé sur le forum ca fait quand même un peu plus d'un an.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/06/2023, 15h51
  2. Convertir une string en tableau de caractères
    Par alainpeniche dans le forum C++
    Réponses: 4
    Dernier message: 06/01/2007, 20h00
  3. vider un tableau de caractères
    Par cybersam dans le forum C
    Réponses: 20
    Dernier message: 23/05/2006, 21h35
  4. Réponses: 8
    Dernier message: 07/04/2006, 11h18
  5. convertir un tableau de caractère en float
    Par zerocoolyoussef dans le forum C
    Réponses: 3
    Dernier message: 20/03/2006, 22h27

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