Retrouvailles avec le Pascal

cs_MillePattes Messages postés 4 Date d'inscription vendredi 30 septembre 2005 Statut Membre Dernière intervention 2 octobre 2005 - 1 oct. 2005 à 13:09
cs_MillePattes Messages postés 4 Date d'inscription vendredi 30 septembre 2005 Statut Membre Dernière intervention 2 octobre 2005 - 2 oct. 2005 à 01:29
Bonjour à tous !

C'est mon premier message et je voudrais me présenter. J'ai fait du
Turbo-Pascal en amateur (mais à un niveau correct, je crois) il y a 10
ans et je me retrouve en face de Delphi pour la première fois. C'est du
bonheur et c'est du désarroi ! Je commence par essayer de me faire une
petite application où je rassemblerai toutes les opérations de base
pour me dérouiller un peu.

J'ai commencé facile : par un bouton qui écrit "Bonsoir" dans un label
quand le texte du label est "Bonjour" et vice-versa. J'ai créé ensuite
un autre bouton qui permet de fermer mon application. Puis je lui ai
fait afficher une fenêtre de confirmation avant que cette fermeture ait
lieu et réagir selon la réponse. Si vous avez des idées d'exercices,
n'hésitez pas à m'en proposer : cela me sera bien utile.

Le prochain exercice que je me donne porte sur les fichiers. J'ai
découvert que la procédure Assign est devenue Assignfile et que la
commande close est devenue closefile. J'ai réussi à afficher dans un
composant Richedit le contenu d'un fichier texte (de type textfile)
avec la vieille méthode d'une boucle qui lit ligne à ligne jusqu'à la
fin du fichier. Mais maintenant j'aimerais bien faire une lecture moins
primaire et utiliser les capacités RTF... Je me dis qu'il devrait bien
y avoir moyen de charger un fichier Word dans cette sacrée boite
RichEdit mais je n'arrive pas à trouver la technique. J'ai découvert un
nouveau type TStrings qui paraît être un composé (composé comment ?,
j'en ai aucune idée !) de String. Il m'a semblé que je devais chercher
de ce côté-là, mais j'ai peut-être complètement faux.

Au début, j'ai cru que la propriété RichEdit.text était justement du type TStrings et qu'il me suffirait d'écrire :

var f:file of Tstrings;

texte : Tstrings;

procedure lecture;

begin

assignfile(f,'nom de fichier');

reset (f);

read(f,texte);

closefile(f);

richedit.text:=texte;

end;

Mais c'était trop facile ! richedit.text est du type Tcaption. Alors
j'ai tendé de déclarer f comme un fichier de type tcaption mais c'est
impossible et je suis bloqué... Qui peut m'aider ?

Désolé de poser une question aussi simpliste...

Merci d'avance !

Mille-Pattes

7 réponses

jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 oct. 2005 à 13:57
salut ,

pour debuter prend l'exemple de l'aide:

var



F: TextFile;

S: string;

begin

if OpenDialog1.Execute
then
{ Affichage de la boîte de dialogue d'ouverture }

begin

AssignFile(F, OpenDialog1.FileName); { Fichier sélectionné dans la boîte de dialogue }

Reset(F);

Readln(F,
S);
{ Lecture de la première ligne du fichier }

Edit1.Text :=
S;
{ Introduction de la chaîne dans un contrôle TEdit }

CloseFile(F);



end;

end;

n'oublie pas de poser un opendialog sur ta fiche (barre de composants -->dialog--opendialog)

en fait un Tsrings est une liste de string et TCaption = type string;

pour le richedit utilise plutot la proprietes lines plutot que texte .
La proptiete lines est un Tstrings qui offre plus de possibilites. (vas
voir l'aide aux rubrique Trichedit et Tsrings) en particulier tu peux
recharger un fichier texte complet en faisant :

richedit.lines.LoadFromFile(OpenDialog1.FileName);

bonne prog
0
cs_MillePattes Messages postés 4 Date d'inscription vendredi 30 septembre 2005 Statut Membre Dernière intervention 2 octobre 2005
1 oct. 2005 à 16:31
Merci beaucoup jlen100 ! Effectivement richedit.lines est bien meilleur
et c'est bien sûr ce qu'il me fallait. Merci aussi pour le truc du
composant Opendialog qui est bien commode. Mais (corrige-moi si je dis
une bêtise) il n'est pas essentiel, c'est d'accord ? Il suffirait de
mettre le chemin du fichier à ouvrir dans une chaîne et loadfromfile
marcherait aussi bien. J'ai vu qu'on pouvait toujours poser une
interruption de messages d'erreur comme il y a 10 ans et puis la
récupérer et la traiter s'il y a un ennui d'ouverture de fichier.

Mille-Pattes
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 oct. 2005 à 17:06
tout à fait d'accord l'opendialog n'est pas indispensable et tu peux
fort mettre le chemin du fichier directement a la place filename . un
des avantages d'opendialog est de pouvoir recuperer facilement le
chemin du fichier et son extension (vas voir dans les prorpietes tu
trouveras:

defautext ;filterext; qui permettent de n'afficheer que les fichiers
voulus; initialdir qui permet de choisir le dossier par defaut);

pour le IOresult (si c'est ce que tu utilises) je ne crois pas que
cette fonction marche avec le loadfromfile (il faudrait essayer) il
vaut mieux utiliiser la fonction fileexists pour verifier l'existance
du fichier:

function FileExists(const FileName: string): Boolean;

avant de tenter un acces au fichier

if FileExists('nomdufichier') then

richedit.lines.LoadFromFile('nomdufichier)

else ShowMessage('Impossible de trouver ' nomdufichier '.')

tu peux aussi utiliser FileSearch('nomdufichier',liste de dossier) pour verifier l'existence et le chemin du fichier.
0
cs_MillePattes Messages postés 4 Date d'inscription vendredi 30 septembre 2005 Statut Membre Dernière intervention 2 octobre 2005
1 oct. 2005 à 18:24
Génial ! FileExists me convient tout à fait. Je me souviens que je
m'étais fait (comme tout le monde à l'époque) une petite unité qui
gérait les fichiers et où j'avais écrit bien sûr la fonction
Existe_Fichier qui était exactement la même... Rien que cette petite
discussion avec toi m'a beaucoup appris, parce que je nage pas mal dans
l'aide...

Mille-Pattes
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 oct. 2005 à 18:43
c'est vrai qu'au depart quand on ne sait pas trop quoi chercher il faudrait une aide pour utiliser l'aide!!

surtout que celle de la version 2005 manque serieusement d'exemples je
lui prfer nettement celle de delphi7. mais bon avec un peu d'habitude
ça va pas trop mal
0
jlen100 Messages postés 1606 Date d'inscription samedi 10 juillet 2004 Statut Membre Dernière intervention 25 juillet 2014 13
1 oct. 2005 à 21:11
au fait tu peux intercepter une erreur d'execution sur loadfromfile en faisant:

try


richedit.lines.LoadFromFile('nomdu fichier');


except // interception de l'erreur d'exécution

MessageDlg('Fichier
'+'nomdu fichier'+' introuvable' , mtError ,
[mbOk], 0); exit


end else

begin

//code de traitement si le fichier a ete corectement chargé;

end;

finally TempList.Free; end;
0
cs_MillePattes Messages postés 4 Date d'inscription vendredi 30 septembre 2005 Statut Membre Dernière intervention 2 octobre 2005
2 oct. 2005 à 01:29
Merci encore ! Je vais essayer ça ! Je trouve ton message à 1h30 du matin : je verrai ça demain !

Merci de ton aide !

Mille-Pattes
0
Rejoignez-nous