6.7. Bеrilgаnlаrni fаyllаrdа sаqlаsh.
Muhim so`zlar: LoadFromFile, SaveFromFile, TMemo, TStringList,
TlistBox, TComboBox, TRichEdit, delete, insert, add, count, TFileStream.
Bilib olasiz: Fayllar bilan ishlash, ma`lumot o`qish, yozish, qo`shish,
o`chirish, LoadFromFile, SaveFromFile protseduralar bilan ishlash, TMemo,
TStringList, TlistBox, TComboBox, TRichEdit elementlarda matnlarni yozish,
qo`shish, o`chirish qulayliklari, TFileStream sinfi bilan tanishish.
Juda ko`p visual elementlar va ba`zi sinflar fayllar bilan ishlash
imkoniyatiga egadir. Asosan fayllar bilan ishlaganda quyidagi ikkita visual
funksiyalardan foydalanamiz
LoadFromFile("Fayl nomi");
Faylni o`qish
SaveToFile("Fayl nomi ");
Faylni saqlash
Bu funksiyalar matnli fayllar bilan ishlash uchun qulaydir. Masalan,
6.7-listing.Faylni yuklash va saqlash.
TMemo elementi yordamida faylni yuklash va saqlash.
Memo1->Lines->Clear();
Memo1->Lines->LoadFromFile("a.txt");
......
Memo1->Lines->SaveToFile("a.txt");
......
TStringList elementi yordamida faylni yuklash va saqlash.
TStringList * ptStrintList;
ptStrintList->Clear();
ptStrintList=new TStringList();
317
6.7-listing.Faylni yuklash va saqlash.
ptStrintList->LoadFromFile("a.txt");
......
ptStrintList->SaveToFile("a.txt");
......
ptStrintList->Free();
TListBox elementi yordamida faylni yuklash va saqlash.
ListBox1->Items->Clear();
ListBox1->Items->LoadFromFile("a.txt");
......
ListBox1->Items->SaveToFile("a.txt");
TComboBox elementi yordamida faylni yuklash va saqlash.
ComboBox1->Items->Clear();
ComboBox1->Items->LoadFromFile("a.txt");
......
ComboBox1->Items->SaveToFile("a.txt");
TRichEdit elementi yordamida faylni yuklash va saqlash.
RichEdit1->Lines->Clear();
RichEdit1->Lines->LoadFromFile("a.txt");
.....
RichEdit1->Lines->SaveToFile("a.txt");
Bu elementlardan tashqari C++ Builder da bir nechta elementlar borki,
ulardan ham fayllarni yuklash va saqlashda foydalanish mumkin.
SaveToFile funksiyasidan foydalanilganda fayl bo`lmasa, funksiya bu faylni
darhol yaratib beradi. Barcha fayllar matnli fayl bo`lib yaratiladi. Faqatgina
TRichEdit elementi yordamida *.rtf kengaytmali fayl bilan ishlash mumkin.
Shuning uchun mantiqiy yozish maqsadga muvofiqdir.
RichEdit1->Lines->SaveToFile("a.rtf");
318
Matnli fayllar bilan ishlaganda foydalaniladigan funksiya va ularning
xossalari qatorning sonini hisoblaydi. Masalan,
Memo1->Lines->Count;
RichEdit1->Lines->Count;
ptStrintList->Count;
ListBox1->Items->Count;
ComboBox1->Items->Count;
Barcha elementlar qator qo`shish, o`chirish imkoniyatlarini bajaradi.
Masalan, elementning ikkinchi qatorini o`chirib, o`rniga yangi matnni qo`yish va
matn oxirida qo`shishni olaylik.
6.8-listing. Matn qo`shish
AnsiString vasS="Yes";
TMemo elementi
if(Memo1->Lines->Count >= 2) {
Memo1->Lines->Delete(1);
Memo1->Lines->Insert(1,vasS); }
Memo1->Lines->Add(vasS);
TRichEdit elementi
if(RichEdit1->Lines->Count >= 2) {
RichEdit1->Lines->Delete(1);
RichEdit1->Lines->Insert(1,vasS); }
RichEdit1->Lines->Add(vasS);
TStrintList elementi
if(ptStrintList->Count >= 2) {
ptStrintList->Delete(1);
ptStrintList->Insert(1,vasS); }
ptStrintList->Add(vasS);
319
6.8-listing. Matn qo`shish
TListBox elementi
if(ListBox1->Items->Count >= 2) {
ListBox1->Items->Delete(1);
ListBox1->Items->Insert(1,vasS); }
ListBox1->Items->Add(vasS);
TComboBox elementi
if(ComboBox1->Items->Count >= 2) {
ComboBox1->Items->Delete(1);
ComboBox1->Items->Insert(1,vasS); }
ComboBox1->Items->Add(vasS);
Matnni saqlovchi qator soni bo`yicha ham saralash mumkin. Masalan,
AnsiString vasS;
vasS=Memo1->Lines->Strings[n];
vasS=RichEdit1->Lines->Strings[n];
vasS=ptStrintList->Strings[n];
vasS=ListBox1->Items->Strings[n];
vasS=ComboBox1->Items->Strings[n];
Keltirilgan elementlar va ularning xossalari matnli fayllar bilan ishlash
imkoniyatini yaratib beradi. Eng ko`p ishlatiladigan elementlarga TMemo
TrichEdit va sinflardan TStringList bilan ishlash tavsiya etiladi.
TFileStream sinfi ham borki, u yordamida matnli fayllar bilan ishlashda juda
ko`p imkoniyatlar bor. Masalan, TFileStream sinfida matnli fayl bilan ishlash
ancha qulayliklarni beradigan listingni keltiramiz.
6.9-listing
//yangi oqim yaratamiz va unga faylni o`qish va yozish uchun yuklaymiz.
TFileStream * tfile=new TFileStream("b.txt",fmOpenReadWrite);
//kursorni (0,0) ga joylashtiramiz.
320
6.9-listing
tfile->Seek(0,0);
//bufferni tanlash.
char *vchrgBuf;
//buffer uchun xotira olinadi.
if ((vchrgBuf = (char *) malloc(tfile->Size)) == NULL) {
// buffer uchun olingan xotiraning mavjud emasligi haqidagi xabarni yozish
// mumkin.
return; }
//buferdan axborotni o`qiymiz.
tfile->Read(vchrgBuf,tfile->Size);
// bufferda axborotni o`zgaruvchi o`qib olamiz.
AnsiString vasS=vchrgBuf;
//har ehtimolga qarshi
vasS.SetLength(tfile->Size);
//xotirani tozalash
free(vchrgBuf);
//oqimni tozalash
tfile->Size=0;
// TMemo elementiga axborotni ko`rish uchun yozamiz
//Memo1->Lines->Clear();
Memo1->Lines->Add(vasS);
//axborotni o`zgartirmiz
if(Memo1->Lines->Count >= 2) {
Memo1->Lines->Delete(1);
String vasS1="Salom Buxoro !!!";
Memo1->Lines->Insert(1,vasS1); }
//AnsiString ga TMemo ning ma`lumotini olamiz
321
6.9-listing
vasS=Memo1->Lines->GetText();
// buffer uchun xotira olinadi.
if ((vchrgBuf = (char *) malloc(vasS.Length())) == NULL) {
// // buffer uchun olingan xotiraning mavjud emasligi haqidagi xabarni yozish
// mumkin.
return; }
//matnni buferga olish.
vchrgBuf=vasS.c_str();
tfile->Write(vchrgBuf,vasS.Length());
//oqimni tozalaymiz
tfile->Free();
//xotirani tozalaymiz.
free(vchrgBuf);
Yuqorida keltirilgan imkoniyatlar C++ Builderda matnli fayllarga
ma`lumotlarni yozish, o`qish, o`zgartirish bilan ishlash juda ko`p qulayliklarni
yaratib beradi. Bundan tashqari C++ Builderda tipli fayllari bilan ham ishlash
mumkin.
Do'stlaringiz bilan baham: |