Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme lecture/ecriture dans fichier. [ Archives / Fichier / Disque ] (Cybric)

vendredi 4 juillet 2003 à 23:03:28 | Probleme lecture/ecriture dans fichier.

Cybric

Bonsoir.

Je débute avec DELPHI, donc novice.
Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier.
Quelqu'un peut m'aider ?
Voici le code simplifié :
--------
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Edit2: TEdit;
procedure Button3Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;

Type
Adr = record
N,P : String[10];
End;

var
Form1: TForm1;
F : File of Adr;
Enreg : Adr;
Table : Array[1..100] of adr;
Ne : LongInt;
NbEnr : Integer;
I : Integer;

implementation

{$R *.dfm}

procedure affiche(Enr : Integer);
begin
Form1.Edit1.Text:=Table[Enr].N;
Form1.Edit2.text:=Table[Enr].P;
end;

Procedure enregistre;
begin
Table[NE].N:=Form1.Edit1.Text;
Table[NE].P:=Form1.edit2.text;
end;

procedure TForm1.Button3Click(Sender: TObject);
// Fermeture prog
begin
close;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
AssignFile(F,'C:\_Richard\Test.adr');
{$I-}
Reset(F);
{$I+}
NE:=1;
if IOResult=0 Then
Begin
Repeat
Read(F,Enreg);
Table[NE]:=Enreg;
NE:=NE+1;
Until Eof(F);
NBEnr:=Ne-1 ;
CloseFile(F);
NE:=1;
Affiche(NE);
End
Else
Begin
With Enreg Do
Begin
Table[1].N:='';
Table[1].P:='';
End;
NBEnr:=1
End;
end;

end.

-----------------
Merci d'avance pour votre aide ...


PS : Quel est le meilleur moyen de progresser avec Delphi ?

Cybric

samedi 5 juillet 2003 à 11:06:27 | Re : Probleme lecture/ecriture dans fichier.

magicvinni

Je ne comprend pas commen tu met les valeurs dans ton fichier, il n'y a pas de procedure d'enregistrement?
MagicVinni


-------------------------------
Réponse au message :
-------------------------------

> Bonsoir.
>
> Je débute avec DELPHI, donc novice.
> Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier.
> Quelqu'un peut m'aider ?
> Voici le code simplifié :
> --------
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
> Dialogs, StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> Button2: TButton;
> Button3: TButton;
> Edit1: TEdit;
> Edit2: TEdit;
> procedure Button3Click(Sender: TObject);
> procedure FormActivate(Sender: TObject);
> private
> { Déclarations privées }
> public
> { Déclarations publiques }
> end;
>
> Type
> Adr = record
> N,P : String[10];
> End;
>
> var
> Form1: TForm1;
> F : File of Adr;
> Enreg : Adr;
> Table : Array[1..100] of adr;
> Ne : LongInt;
> NbEnr : Integer;
> I : Integer;
>
> implementation
>
> {$R *.dfm}
>
> procedure affiche(Enr : Integer);
> begin
> Form1.Edit1.Text:=Table[Enr].N;
> Form1.Edit2.text:=Table[Enr].P;
> end;
>
> Procedure enregistre;
> begin
> Table[NE].N:=Form1.Edit1.Text;
> Table[NE].P:=Form1.edit2.text;
> end;
>
> procedure TForm1.Button3Click(Sender: TObject);
> // Fermeture prog
> begin
> close;
> end;
>
> procedure TForm1.FormActivate(Sender: TObject);
> begin
> AssignFile(F,'C:\_Richard\Test.adr');
> {$I-}
> Reset(F);
> {$I+}
> NE:=1;
> if IOResult=0 Then
> Begin
> Repeat
> Read(F,Enreg);
> Table[NE]:=Enreg;
> NE:=NE+1;
> Until Eof(F);
> NBEnr:=Ne-1 ;
> CloseFile(F);
> NE:=1;
> Affiche(NE);
> End
> Else
> Begin
> With Enreg Do
> Begin
> Table[1].N:='';
> Table[1].P:='';
> End;
> NBEnr:=1
> End;
> end;
>
> end.
>
> -----------------
> Merci d'avance pour votre aide ...
>
>
> PS : Quel est le meilleur moyen de progresser avec Delphi ?
>
> Cybric

samedi 5 juillet 2003 à 12:30:04 | Re : Probleme lecture/ecriture dans fichier.

kanigou

Bon, franchement deja moi j'y comprend rien a ta source et puis je trouve que ca sert a rien de recopier tel quel la source d'un bouquin !!! Le truc c'est de la comprndre etape par etape. Moi ausis je commence en Delphi et ben le truc c'es de trouver un petit projet et de faire tout pour y arriver. Quand tu est bloquer, tu cherche sur le forum ou tu poste un message ...


ps: As-tu comrpis le code au moins ???

-------------------------------
Réponse au message :
-------------------------------

> Bonsoir.
>
> Je débute avec DELPHI, donc novice.
> Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier.
> Quelqu'un peut m'aider ?
> Voici le code simplifié :
> --------
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
> Dialogs, StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> Button2: TButton;
> Button3: TButton;
> Edit1: TEdit;
> Edit2: TEdit;
> procedure Button3Click(Sender: TObject);
> procedure FormActivate(Sender: TObject);
> private
> { Déclarations privées }
> public
> { Déclarations publiques }
> end;
>
> Type
> Adr = record
> N,P : String[10];
> End;
>
> var
> Form1: TForm1;
> F : File of Adr;
> Enreg : Adr;
> Table : Array[1..100] of adr;
> Ne : LongInt;
> NbEnr : Integer;
> I : Integer;
>
> implementation
>
> {$R *.dfm}
>
> procedure affiche(Enr : Integer);
> begin
> Form1.Edit1.Text:=Table[Enr].N;
> Form1.Edit2.text:=Table[Enr].P;
> end;
>
> Procedure enregistre;
> begin
> Table[NE].N:=Form1.Edit1.Text;
> Table[NE].P:=Form1.edit2.text;
> end;
>
> procedure TForm1.Button3Click(Sender: TObject);
> // Fermeture prog
> begin
> close;
> end;
>
> procedure TForm1.FormActivate(Sender: TObject);
> begin
> AssignFile(F,'C:\_Richard\Test.adr');
> {$I-}
> Reset(F);
> {$I+}
> NE:=1;
> if IOResult=0 Then
> Begin
> Repeat
> Read(F,Enreg);
> Table[NE]:=Enreg;
> NE:=NE+1;
> Until Eof(F);
> NBEnr:=Ne-1 ;
> CloseFile(F);
> NE:=1;
> Affiche(NE);
> End
> Else
> Begin
> With Enreg Do
> Begin
> Table[1].N:='';
> Table[1].P:='';
> End;
> NBEnr:=1
> End;
> end;
>
> end.
>
> -----------------
> Merci d'avance pour votre aide ...
>
>
> PS : Quel est le meilleur moyen de progresser avec Delphi ?
>
> Cybric

dimanche 6 juillet 2003 à 12:55:46 | Re : Probleme lecture/ecriture dans fichier.

Cybric

J'ai compris le code, mais je ne comprend pas pourquoi il ne fonctionne pas.



Cybric


-------------------------------
Réponse au message :
-------------------------------

> Bon, franchement deja moi j'y comprend rien a ta source et puis je trouve que ca sert a rien de recopier tel quel la source d'un bouquin !!! Le truc c'est de la comprndre etape par etape. Moi ausis je commence en Delphi et ben le truc c'es de trouver un petit projet et de faire tout pour y arriver. Quand tu est bloquer, tu cherche sur le forum ou tu poste un message ...
>
>
> ps: As-tu comrpis le code au moins ???
>
> -------------------------------
> Réponse au message :
> -------------------------------
>


dimanche 6 juillet 2003 à 13:06:16 | Re : Probleme lecture/ecriture dans fichier.

Cybric

Le fichier, je lui ai mis 2 lignes de 20 caracteres manuellement avec NotePad.
J'obtient dans les Tedit beaucoup plus de 10 caracteres chacun, avec des signes en noir correspondant au retour de ligne.

Faut-il ne pas remplir manuellement le fichier et avoir tout le temps une procedure d'enregistrement ?
Ou bien il y a une erreur dans la déclaration du "Record" ou dans la lecture des lignes du fichier.

Merci par ta réponse, j'y ai passé 5 heures l'autre soir sans résultat.

Cybric


-------------------------------
Réponse au message :
-------------------------------

> Je ne comprend pas commen tu met les valeurs dans ton fichier, il n'y a pas de procedure d'enregistrement?
> MagicVinni
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonsoir.
> >
> > Je débute avec DELPHI, donc novice.
> > Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier

dimanche 6 juillet 2003 à 22:14:56 | Re : Probleme lecture/ecriture dans fichier.

magicvinni

Je penses que ca vient de là, car tu utilises un fichier contenant des enregistrements (record), alors que quand tu edite le texte avec le bloc note, c'est un fichier texte que tu manipule.

Cree un fichier adr comme ca:

Type
Adr = record
N,P : String[10];
End;

Var F : File of Adr;
Enreg : Adr;
Begin
assignfile(f,'c:\test.adr');
reset(f);
enreg.N:='bonjour';
enreg.P:='hello';
Writeln(f,enreg);
closefile(f);
end;

et la ca devrait marcher.
Voila, par contre je suis d'accord - sur un partie - avec Kanigou, tu devrais te fixer un objectf simple, un petit projet et avancer à ton rythme, car tu planchera sur des questions plus concretes.
Bon courrage.
MagicVinni


-------------------------------
Réponse au message :
-------------------------------

> Bonsoir.
>
> Je débute avec DELPHI, donc novice.
> Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier.
> Quelqu'un peut m'aider ?
> Voici le code simplifié :
> --------
> unit Unit1;
>
> interface
>
> uses
> Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
> Dialogs, StdCtrls;
>
> type
> TForm1 = class(TForm)
> Button1: TButton;
> Button2: TButton;
> Button3: TButton;
> Edit1: TEdit;
> Edit2: TEdit;
> procedure Button3Click(Sender: TObject);
> procedure FormActivate(Sender: TObject);
> private
> { Déclarations privées }
> public
> { Déclarations publiques }
> end;
>
> Type
> Adr = record
> N,P : String[10];
> End;
>
> var
> Form1: TForm1;
> F : File of Adr;
> Enreg : Adr;
> Table : Array[1..100] of adr;
> Ne : LongInt;
> NbEnr : Integer;
> I : Integer;
>
> implementation
>
> {$R *.dfm}
>
> procedure affiche(Enr : Integer);
> begin
> Form1.Edit1.Text:=Table[Enr].N;
> Form1.Edit2.text:=Table[Enr].P;
> end;
>
> Procedure enregistre;
> begin
> Table[NE].N:=Form1.Edit1.Text;
> Table[NE].P:=Form1.edit2.text;
> end;
>
> procedure TForm1.Button3Click(Sender: TObject);
> // Fermeture prog
> begin
> close;
> end;
>
> procedure TForm1.FormActivate(Sender: TObject);
> begin
> AssignFile(F,'C:\_Richard\Test.adr');
> {$I-}
> Reset(F);
> {$I+}
> NE:=1;
> if IOResult=0 Then
> Begin
> Repeat
> Read(F,Enreg);
> Table[NE]:=Enreg;
> NE:=NE+1;
> Until Eof(F);
> NBEnr:=Ne-1 ;
> CloseFile(F);
> NE:=1;
> Affiche(NE);
> End
> Else
> Begin
> With Enreg Do
> Begin
> Table[1].N:='';
> Table[1].P:='';
> End;
> NBEnr:=1
> End;
> end;
>
> end.
>
> -----------------
> Merci d'avance pour votre aide ...
>
>
> PS : Quel est le meilleur moyen de progresser avec Delphi ?
>
> Cybric

dimanche 6 juillet 2003 à 23:10:27 | Re : Probleme lecture/ecriture dans fichier.

Delphiprog

Administrateur CodeS-SourceS
Si tu l'avais dit plus tôt que tu avais rempli le fichier à la main, nous aurions compris plus vite !


Type
Adr = record
N,P : String[10];
End;

var
Form1: TForm1;
F : File of Adr;

Il ne FAUT PAS CONFONDRE la déclaration ci-dessus avec :

F : TextFile;

Si dans cette dernière tu peux effectivement renseigner un fichier manuellement, en revanche la déclaration File of Adr n'a pas la même signification.
Dans ce dernier cas, Delphi ajoute des délimiteurs entre chaque élément d'une structure Record de manière à pouvoir relire le contenu, que sa longueur réelle soit de dix caractères ou moins, que ce soit des entiers ou tout autre chose (sauf des objets et des tableaux).

Il te faut donc une procédure pour enregistrer les données (voir le code source fourni dans le livre).
May Delphi be with you


-------------------------------
Réponse au message :
-------------------------------

> Le fichier, je lui ai mis 2 lignes de 20 caracteres manuellement avec NotePad.
> J'obtient dans les Tedit beaucoup plus de 10 caracteres chacun, avec des signes en noir correspondant au retour de ligne.
>
> Faut-il ne pas remplir manuellement le fichier et avoir tout le temps une procedure d'enregistrement ?
> Ou bien il y a une erreur dans la déclaration du "Record" ou dans la lecture des lignes du fichier.
>
> Merci par ta réponse, j'y ai passé 5 heures l'autre soir sans résultat.
>
> Cybric
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Je ne comprend pas commen tu met les valeurs dans ton fichier, il n'y a pas de procedure d'enregistrement?
> > MagicVinni
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Bonsoir.
> > >
> > > Je débute avec DELPHI, donc novice.
> > > Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier

mardi 8 juillet 2003 à 18:20:04 | Re : Probleme lecture/ecriture dans fichier.

Cybric

Merci pour tes conseils et encouragements. Cela fonctionne.

Cybric


-------------------------------
Réponse au message :
-------------------------------

> Je penses que ca vient de là, car tu utilises un fichier contenant des enregistrements (record), alors que quand tu edite le texte avec le bloc note, c'est un fichier texte que tu manipule.
>
> Cree un fichier adr comme ca:
>
> Type
> Adr = record
> N,P : String[10];
> End;
>
> Var F : File of Adr;
> Enreg : Adr;
> Begin
> assignfile(f,'c:\test.adr');
> reset(f);
> enreg.N:='bonjour';
> enreg.P:='hello';
> Writeln(f,enreg);
> closefile(f);
> end;
>
> et la ca devrait marcher.
> Voila, par contre je suis d'accord - sur un partie - avec Kanigou, tu devrais te fixer un objectf simple, un petit projet et avancer à ton rythme, car tu planchera sur des questions plus concretes.
> Bon courrage.
> MagicVinni
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>

mardi 8 juillet 2003 à 18:22:27 | Re : Probleme lecture/ecriture dans fichier.

Cybric

Merci pour tes conseils, cette fois j'ai compris et cela marche.

Cybric


-------------------------------
Réponse au message :
-------------------------------

> Si tu l'avais dit plus tôt que tu avais rempli le fichier à la main, nous aurions compris plus vite !
>
>

> Type
> Adr = record
> N,P : String[10];
> End;
>
> var
> Form1: TForm1;
> F : File of Adr;
>

> Il ne FAUT PAS CONFONDRE la déclaration ci-dessus avec :
>

> F : TextFile;
>

> Si dans cette dernière tu peux effectivement renseigner un fichier manuellement, en revanche la déclaration File of Adr n'a pas la même signification.
> Dans ce dernier cas, Delphi ajoute des délimiteurs entre chaque élément d'une structure Record de manière à pouvoir relire le contenu, que sa longueur réelle soit de dix caractères ou moins, que ce soit des entiers ou tout autre chose (sauf des objets et des tableaux).
>
> Il te faut donc une procédure pour enregistrer les données (voir le code source fourni dans le livre).
> May Delphi be with you
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Le fichier, je lui ai mis 2 lignes de 20 caracteres manuellement avec NotePad.
> > J'obtient dans les Tedit beaucoup plus de 10 caracteres chacun, avec des signes en noir correspondant au retour de ligne.
> >
> > Faut-il ne pas remplir manuellement le fichier et avoir tout le temps une procedure d'enregistrement ?
> > Ou bien il y a une erreur dans la déclaration du "Record" ou dans la lecture des lignes du fichier.
> >
> > Merci par ta réponse, j'y ai passé 5 heures l'autre soir sans résultat.
> >
> > Cybric
> >
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Je ne comprend pas commen tu met les valeurs dans ton fichier, il n'y a pas de procedure d'enregistrement?
> > > MagicVinni
> > >
> > >
> > > -------------------------------
> > > Réponse au message :
> > > -------------------------------
> > >
> > > > Bonsoir.
> > > >
> > > > Je débute avec DELPHI, donc novice.
> > > > Je recopie tel quel le code de lecture de fichier trouvé dans "tout en poche" et cela ne fonctionne pas. Les données affichées ne correspondent pas a ce que je met dans le fichier
>



Cette discussion est classé dans : end, table, procedure, begin, adr


Répondre à ce message

Sujets en rapport avec ce message

Index d'un table Dbase [ par webazard ] Bonjour, je crée un base Dbase indiqué dans l'aide de delphi en remplacant ttparadox par ttdbase.en supprimant la construction d'index min prog marche Hints dans une DLL [ par almi ] J'ai une fenêtre (TForm) qui fonctionne parfaitement dans mon executable.Si je la place dans une DLL, j'obtiens le message :Ne peut assigner TFont à T Problème Econversion Error lors de l'affichage d'une info bulle dans une fenetre MDIChild dans une DLL [ par DarkSky ] Salut a tous,j'ai créer un projet MDI avec Delphi 6 donc les fenetre MDi Filles sont dans une DLL.j'ai une erreur EConversionError a la place de l'aff Champs Chamboulés [ par apz ] Salut,1- En voulant avoir une table *.DB à partir d'une table *.DBF, en utilisant le Module Base de Données (Outils/Utilitaires/Copier), j'avais dans pb d'affichage d'un TChart [ par Pegase20 ] bonjour, J'affiche une autre fiche qui contient un graphique (créé à l'aide d'un TChart) quand je clique sur un bouton.Mon pb c'est que le graph ne MDI Filles dans une DLL [ par DarkSky ] ..::= DarkSky =::..Salut almi,j'ai exactement le même problème que toi (Hint) sur l'utilisation de MDI Filles dans une DL projet de chat avec delphi 7 [ par dk ] hello every body j'aimerais faire un chat mais voila le probleme (si on peut dire) c ke g delphi 7 avec comme composant installer Tcpserver et Tcpclie plein derreur a la fermeture de mon prog qui font lanter windows [ par dk ] voila javais deja eu qq petits soucis avec le prjet de chat que je suis en train de realiser mais jamais a cette ampleur lol, qd je lance mon prog ca Changer la forme de l'animation matrix [ par Also know as ] Bonjour,Voici une méthode permettant de créer une animation à la matrix sans sa police.Il suffit juste d'appeler sa Form MainForm, mettre un memo et c Reutiliser une procedure [ par jimmy69 ] Bonjour a tous,Voila je debute avec delphi et je suis un peu fade :-) !!!!J'aimerais savoir s'il etait possible de reutiliser une procedure recement d


Nos sponsors

Sondage...

CalendriCode

Novembre 2008
LMMJVSD
     12
3456789
10111213141516
17181920212223
24252627282930

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.