Fisiere
text
In
Borland C++ Buider, putem lucra cu fisiere text, asa cum am fost obisnuiti in
Borland C++ 3.0.
Pentru
ale utliza trebuie sa includem, in fisierul care contine functiile
utilizatorului fisierul antet fstream.h
#include<fstream.h>
Numele
fisierului nu este de tip AnsiString ,ci este sir de caractere , ca in Borland
C++ 3.0.Dar aceasta nu ridica nici o problema intrucat clasa AnsiString are o metoda care returneaza un
pointer(char *) catre sirul de caractere.
char *
c_str();
Spre exemplu daca variabila s este de tip
AnsiString :
AnsiString s= "fisier.txt" ;
char
* numef;
Atunci se realizeaza atribuirea :
numef=s. c_str();
fstream
f ;
f.open(numef,ios ::in) ; //deschide
fisierul numef pentru citire
Un exemplu de utilizare a cestei metode este cel
din aplicatia urmatoare :
q
Aplicatia 1. Sa se creeeze un fisier text cu numere aleatoare.Utilizatorul
va introduce numele fisierului , numarul de numere generate si valoare maxima a
numerelor care pot fi generate
void
__fastcall TForm1::Button1Click(TObject *Sender)
{ AnsiString s=Edit1->Text;
char *nf;
nf=s.c_str();
fstream
f;
f.open(nf,ios::out);
int x,y;
x= StrToInt(Edit2->Text);
y= StrToInt(Edit3->Text);
randomize();
int
i,z;
for(i=1;i<=x;i++)
{z=random(y)+1;
f<<z<<endl;
}
f.close();}
q
Pentru fisierul text creat in programul anterior se cere sa se afiseze
valoarea maxima memeorata. Se va adauga in formular un nou buton (Button2)
si o eticheta (Label4) in care
se va afisa rezultatul
void
__fastcall TForm1::Button2Click(TObject *Sender)
{
fstream f(Edit1->Text.c_str(),ios::in);
int i,Max,valoare;
if ( f )
{
f>>Max;
while(f>>valoare)
if(valoare>Max)
Max=valoare;
f.close();
Label4->Caption=IntToStr(Max);
}
else
ShowMessage("Fisierul nu
exista");
}
Probleme propuse:
1. Sa se genereze un formular in care va permite:
(operatia de adaugare) . O solutie
(operatia de cautare). O solutie