comment lire un fichier avec delphi

comment lire un fichier avec delphi - Programmation

Marsh Posté le 07-02-2001 à 16:28:43    

Je ne sais pas comment acceder a un fichier *.txt
 
je voudrais faire un menu qui lance des soft externes
mais il faudrait qu'il y ait un fichier de config (les chemins des progs change d'une machine à l'autre)
comment faire ce fichier de config, qui donnerait le chemin du soft a lancer avec WinExec??
 
merci


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 07-02-2001 à 16:28:43   

Reply

Marsh Posté le 07-02-2001 à 17:49:07    

le plus simple est peut etre d'utiliser l'objet TINIFile (unit inifiles) qui te permet d'acceder au fichier au format .INI :
 

Citation :


[section]
item=value


 
donc par exemple si tu as un fichier config.txt :

Citation :


[Chemin]
Calc=c:\windows\calc.exe
Notepad=c:\windows\notepad.exe


 
tu pourras y acceder par le code :

Citation :


var
  sCalc : string;
  sNotepad: string;
begin
  with TIniFile.Create('c:\chemin\config.txt' ) do
  try
   sCalc := ReadString('Chemin', 'Calc', '' ));
   sNotepad := ReadString('Chemin', 'Notepad', '' ));
  finally
    Free;
  end;
end;


 
et tu recupereras dans sCalc: 'c:\windows\calc.exe' et dans  
sNotepad: 'c:\windows\notepad.exe'
 
HTH!

 

--Message édité par JWhy--


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 08-02-2001 à 09:07:14    

JE vais essayer ça tout de SUITE!!!!
MERCI


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 08-02-2001 à 09:23:52    

PUT*** ça MARCHE!!
Il faut juste virer deux paranthese en trop
(merci pour le use inifiles, je sais jamais ce qui faurt mettre ici)
 
Il dise que c'est pour la comptatibilité avec Wiin3.11  
mais un fichier ini pour une mini appli c'est valable?
 
Sinon avec Tregistre on fait comment?


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 08-02-2001 à 09:35:46    

J'ai voulu ensuite faire
WinExec(sCalc, SW_ShowDefault);
Mais ça marche pas! cause en premier parametres il veut un Pchar et pas un string...comment on peut faire???


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 08-02-2001 à 10:22:38    

encore un autre truc
j'ai voulu acceder au ini en relatif
pour qu'il aille le chercher ds le repertoire d'ou on lance l'appli et ça marche po!
 
begin  
  with TIniFile.Create('config.ini' ) do


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 08-02-2001 à 13:26:46    

t'es un chef viiz!
 
Maintenant comment faire pour lire le *.ini
en relatif (repertoire courant)


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 08-02-2001 à 14:36:14    

Application.ExeName te donne le chemin complet de ton application (repertoire + nom.exe)
par exemple si tu as ton appli.exe dans le repertoire C:\delphi\appli, Application.ExeName va te rendre 'c:\delphi\appli\appli.exe'
 
donc, tu as juste a faire un ExtractFilePath(Application.ExeName) pour recuperer 'c:\delphi\appli' (uses SysUtils)
 
Perso, je prefere utiliser les fichier au format INI pasque c'est quand meme super simple et ca evite de charger la base de registre...  
Mais sinon pour le TRegistry (uses Registry) , c'est (en gros) le meme principe, sauf que tu as en plus une arborescence de cles: tu n'es plus limite a faire section/item=value, tu peux maintenant avoir section/section/..../section/item=value (pas sur d'avoir ete tres clair ;) )  
Pour son utilisation, regarde dans l'aide Delphi , y'a un exemple tout simple

 

--Message édité par JWhy--


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 08-02-2001 à 16:21:14    

bon j suis pas trés bon ;)
mais j'ai utilisé ExtractFilePath(Application.ExeName)
que j'ai mit ds une variable string (sChemin)
puis j'ai créer une deuxieme variable sIni
qui se voit affecté comme ça  
sIni:=Schemin+'config.ini';
Comme ça j'ai dedans C:\monchemin\config.ini
donc c'est ok, je pense qu'on pourrait faire ça tout d'un bloc
je vais potasser ça ce soir...
MERCI !!
pour la base c'est pas clair.... mais je vais matter l'exemple
j'aime mieux les ini
 
 
Juste une question comment il fait pour s'arreter? et prendre uniquement la bonne chaine? ds le *.ini


---------------
ma vie, ma carrière! - Un trait d’union entre des photos et des mots.
Reply

Marsh Posté le 08-02-2001 à 16:32:49    

ouaip, ca a l'air d'etre ca ;)
 
a la place de :
 sIni:=Schemin+'config.ini';  
fait peut-etre (si tu as Delphi 5, cette fonction n'existe pas en D4, je crois):
 sIni:= IncludeTrailingBackslash(sChemin) + 'config.ini';  
 
IncludeTrailingBackslash rajoute le caractere '\' a la fin de la chaine passée en parametre si il n'y en a pas deja un!
c'est pratique car je ne sais pas si ExtractFilePath te renvoie le chemin avec ou sans le '\' de fin !


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 08-02-2001 à 16:32:49   

Reply

Marsh Posté le 09-02-2001 à 10:26:42    

Pour l'instant j'ai delphi4 ;(
 
Mais ça marche nickel!
 
Faut que je pense bien a mon algorithme maintenant
et ça devrait marcher!
 
J'aurais surement d'autres galeres mais pour l'instant C ok!!
Merci ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed