1. Sintaksisga kirish Dastur yaratish muhiti



Yüklə 1,17 Mb.
səhifə34/34
tarix19.09.2022
ölçüsü1,17 Mb.
#63802
1   ...   26   27   28   29   30   31   32   33   34
1 kurslarga moljallangan Dasturlash 2 fanidan C Builder muhitida (2)

Yechish


Mazkur dasturni yozishda shaklda mos ravishda fayllarni ochadigan va saqlaydigan tugmachalarni joylashtirishga to‘g‘ri keladi. Yana mos muloqat oynalarini ham o‘rnatish talab etiladi. Tugmachalarni bosish xodisalarini qayta ishlovchiga muloqat oynalarini chaqirish o‘rnatiladi: SaveDialog1->Execute. Muloqat oynasining OnCanClose xodisalarni qayta ishlovchisiga esa fayllar bilan ishlashni amalga oshiruvchi dastur kodi o‘rnatiladi.
Fayllar bilan ishlash muloqat oynasining OnCanClose xodisasi sodir bo‘lganda mos muloqat oynasining FileName xossasida tanlangan faylning nomi paydo bo‘ladi. Aynan shu fayl bilan ishlash kerak bo‘ladi.
Ifstream sinf ob’yektining satriga yozilgan fayl to‘g‘risidagi ma’lumotlarni uzatish uchun satrni belgilar massiviga almashtirishga to‘g‘ri keladi. Bu ishni massivning birinchi elementiga murojaatni va bevosita satrni uzatish mo‘ljallangan protsedura yaratib osongina amalga oshirish mumkin. Bu protsedura belgilarni satrdan olib, massivni ketma-ket, elementma-element to‘ldiradi. Bu protseduraning yordamida barcha kerakli almashtirishlarni osongina bajarish mumkin.
Faylning mazmunini Memo1 maydoniga yozish uchun satrni ifstream sinfining getline() funksiyasi yordamida ketma-ket o‘qish va uning qism ob’yekti Lines ( Memo1->Lines->Add(stroka); ) ning Add() funksiyasi yordamida Memo1 maydoniga yozish kerak.
Ma’lumotlarni faylda saqlash uchun faylga Memo1 ob’yektini satrini belgima-belgi, satr oxiri belgisi (g‘n) ni qo‘shib va yangi satrdan boshlab yozish zarur.

Shakl


Shaklda ko‘rinuvchi komponentlardan tashqari Dialogs bandining SaveDialog va LoadDialog komponentlari ham qatnashadi.



Dastur kodi


#include


#include

#pragma hdrstop


#include "Unit1.h"


//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void AnsiStringToCharPointer(char * c, AnsiString s, int n = 0)
{
int k = s.Length();
if(k > n && n != 0){ k = n; }
for(int i = 0; i < k; i++)
{
c[i] = s[i+1];
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
OpenDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
SaveDialog1->Execute();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OpenDialog1CanClose(TObject *Sender,
bool &CanClose)
{
AnsiString name = OpenDialog1->FileName;
char c[100] = "";
AnsiStringToCharPointer(c,name);
ifstream in(c);
Memo1->Text = "";
while(in.good())
{
in.getline(c,100);
Memo1->Lines->Add(c);
}
in.close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SaveDialog1CanClose(TObject *Sender,
bool &CanClose)
{
AnsiString name = SaveDialog1->FileName;
char c[1000] = "";
AnsiStringToCharPointer(c,name);
ofstream out(c);


for(int i = 1;i < Memo1->Lines->Count;i++)
{
AnsiString s = Memo1->Lines->operator [](i);
for(int j = 1; j < s.Length()+1; j++)
{
out << s[j];
}
out << 'g‘n';
}
out.close();
}



Yüklə 1,17 Mb.

Dostları ilə paylaş:
1   ...   26   27   28   29   30   31   32   33   34




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin