Бексарыұлы Мұратбек delphi визуалды бағдарламалау жүйесі әдістемелік оқу құралы



бет5/6
Дата27.05.2018
өлшемі2,9 Mb.
#40953
1   2   3   4   5   6

24-сурет



25-сурет

15. Уақыт есептеуіш


Жұмыстың мақсаты – ағымдағы уақыт пен ағымдағы күнді шығарып, көрсететін бағдарлама құру.
Бағдарламаны іске асыру жоспарының сипаттамасы

1. Жаңа жоба ашу.

2. Пішінге мына компоненттерді: Button, Edit, Label орналастыру.

3. Мына кестеде жазылған әрекеттерді орындау:



14 - кесте

Белгі-

ленген


нысан

Object Inspector терезесінің астары

Қасиеттің аты/ Оқиғаның аты

Атқарылатын әрекет

Form1

Properties

Caption

Пішінге «Таймер» атын орнату

Button1

Properties

Caption

«ағымдағы уақыт» атын енгізу

Events

Onclick

DateTime:=Time; Edit1.Text:=TimeToStr(DateTime);

Button2

Properties

Caption

«Бүгінгі күн» атын енгізу

Events

Onclick

Edit2.Text:=DateToStr(Date);

Edit1

Properties

Caption

Text қасиетінің мәнін тазарту

Edit2

Properties

Caption

Text қасиетінің мәнін тазарту




26-сурет
Ішкі бағдарлама листингі:

var


DateTime : TdateTime;

procedure Tform1.Button1Click(Sender: Tobject); begin

DateTime:=Time;

Edit1.Text:=TimeToStr(DateTime); end;

procedure Tform1.Button2Click(Sender: Tobject); begin

Edit2.Text:=DateToStr(Date); end; end.



16. Оятқыш сағат
Жұмыстың мақсаты – көрсетілген уақытта оятатын оятқыш сағаттың бағдарламасын жасау. Пішінде қазіргі уақыт пен ояту уақыты бөлек-бөлек көрсетіліп тұруы тиіс.



27-сурет
Жұмысты іске асырудың бағдарламасы:

var


Hour,Min: word; // индикатордағы уақыт

AlHour, AlMin: word; //оятқышқа орнатылған уақыт AlHour:AlMin

// бағдарлама жұмысының басталуы

procedure TForm1.FormCreate(Sender: TObject);

begin

Hour := HourOf(Now);



Min := MinuteOf(Now);

Label1.Caption := IntToStr(Hour);

if Min < 10

then Label2.Caption := '0'+IntToStr(Min)

else Label2.Caption := IntToStr(Min);

end;


// таймерден түсетін сигнал

procedure TForm1.Timer1Timer(Sender: TObject);

var

cHour,cMin: word;



begin

// ағымдағы уақытты алу

cHour := HourOf(Now);

cMin := MinuteOf(Now);

if Timer1.Tag = 0 //экрандағы бағдарлама терезесі

then begin

{ ағымдағы уақытпен индикаторда көрінген уақыттың сәйкестігін тексеру}

if cHour <> Hour then

begin

Hour := cHour;



Label1.Caption := IntToStr(Hour);

end;


if cMin <> Min then

begin


Min := cMin;

if min <10

then Label2.Caption := '0' + IntToStr(Min)

else Label2.Caption := IntToStr(Min);

end;

// (:) қос нүктенің жыпылықтауын қаматамасыз ету



if Label3.Visible

then Label3.Visible := False

else label3.Visible := True;

end


else // бағдарлама терезесі жасырылған, сигнал

// жіберу сәтінің келгендігін тексеру

if (cHour = AlHour) and (cMin = AlMin)

// сигнал !

then begin

Form2.Show;

Timer1.Tag := 0;

Timer1.Interval := 1000;

end;

end;


// UpDown1 шерту оятқыш -сағаттың сигнал беру уақытын өзгертеді

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType);

begin

if UpDown1.Position < 10



then Label4.Caption := '0' + IntToStr(UpDown1.Position)

else Label4.Caption := IntToStr(UpDown1.Position);

end;

// UpDown1 шерту оятқыш-минуттың сигнал беру уақытын өзгертеді



procedure TForm1.UpDown2Click(Sender: TObject; Button: TUDBtnType);

begin


if UpDown2.Position < 10

then Label5.Caption := '0' + IntToStr(UpDown2.Position)

else Label5.Caption := IntToStr(UpDown2.Position);

end;


// OK батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

// оятқышты орнату



AlHour := UpDown1.Position;

AlMin := UpDown2.Position;

Timer1.Tag := 1;

Form1.Hide; //

Timer1.Interval := 3000; // әрбір 3 секунд сайын тексеру

end;


end.

17. Олимпиада жалауы


Жұмыстың мақсаты – пішін бетінде олимпиада жалауын сызатын бағдарлама құру.



28-сурет
Ішкі бағдарлама листингі:

unit Unitl;

{$R *.dfm}

procedure TForm1.FormPaint(Sender: TObject); begin

with Canvas do begin

// жалауша

Canvas.Pen.Width := 1; Canvas.Pen.Color := clBlack; Canvas.Brush.Color := clCream; Rectangle(30,30,150,115);

// сақиналар

Pen.Width := 2;

Brush.Style := bsClear; // шеңбердің ішкі аймағын боямау

Pen.Color := clBlue; Ellipse(40,40,80,80); Pen.Color := clBlack; Ellipse(70,40,110,80); Pen.Color := clRed; Ellipse(100,40,140,80); Pen.Color := clYellow; Ellipse(55,65,95,105); Pen.Color := clGreen; Ellipse(85,65,125,105); end; end;

end.



18. Функция графигін салу
Жұмыстың мақсаты – түрлі функциялар графигін салатын бағдарлама құру. Төменде үлгі үшін сызықтық және квадраттық фукциялардың графиктерін (0-7) аралығында салу қарастырылды. Бағдарламада кезкелген графикті (0-15) аралығында құруға болады.



29-сурет


30-сурет



31-сурет



32-сурет

Жұмысты орындау бағдарламасы:

unit grafik01;

//GR процедурасын бетінде график сызылатын және өзі басқа //модульде орналасқан Form2 пішіні үшін onPaint оқиғасын өңдеу //процедурасы шақырады.

// Сондықтан функция хабарландыруын басқа модульден шақырып //алу үшін Interface тарауында орналастыру қажет.

procedure gr;

implementation

uses grafik02;

{$R *.dfm}

{ Пішінді құру кезінде StringGrid компонентінің қасиетін орнату:

FixedRows := 0;

RowCount := 2;

Options.goEditing := True;

Options.goTab := True;}

const


COLCOUNT = 15;

var


// функцияның аргументтері мен мәндері

x: array[1..COLCOUNT] of real;

y: array[1..COLCOUNT] of real;

// x,y жиымының мәндері бойынша график салу

procedure gr;

var


i: integer;

x1,x2:real; // функция аргументінің өзгеру шектері

y1,y2:real; // функция мәндерінің өзгеру шектері

l,b:integer; // график шығатын аймақтың сол жақ төменгі бұрышы

w,h:integer; // график шығатын аймақтың ені мен биіктігі

mx,my:real; // X және Y осьтері бойынша масштаб

x0,y0:integer; // координат осьтерінің қиылысу нүктесі

px,py: integer;// пішін бетіндегі графиктің нүкте координаталары

np: integer; // графиктегі нүктелер саны

begin


Form2.Canvas.Rectangle(0,0,Form2.ClientWidth,Form2.ClientHeight);

// график шығатын аймақ

i:=10; // X - сол жақ жоғарғы бұрыш координатасы

b:=Form2.ClientHeight-20; // Y – сол жақ төменгі бұрыш //координатасы

h:=Form2.ClientHeight-40; //биіктігі

w:=Form2.Width-40; // ені

// аргументтің өзгеру шектері мен нүктелер санын анықтау (X //жиымының элементтері өспелі тізбек құрауы тиіс)

x1:=x[1];

i:=1;

while (x[i+1] > x[i]) and (i < COLCOUNT) do i:= i+1;



x2:= x[i]; //x[COLCOUNT-1];

np:=i; // нүктелер саны

if np < 2 then begin

ShowMessage('График нүктелері екіден кем болмауы қажет');

exit;

end;


// функцияның ең үлкен және ең кіші мәндерін табу

y1:=0; y[1]; // минимум

y2:=0; y[1]; // максимум

for i:=1 to np do

begin

if y[i] < y1 then y1:=y[i];



if y[i] > y2 then y2:=y[i];

end;


// масштабты есептеу

my:=h/abs(y2-y1); // Y осі бойынша масштаб

mx:=w/abs(x2-x1); //X осі бойынша масштаб

// координат осьтерінің қиылысу нүктесі

x0:=l+Abs(Round(x1*mx));

y0:=b-Abs(Round(y1*my));

with form2.Canvas do

begin


MoveTo(x0,b);LineTo(x0,b-h); // ось Y

MoveTo(l,y0);LineTo(l+w,y0); // ось X

TextOut(l+5,b-h,FloatToStrF(y2,ffGeneral,6,3));

TextOut(l+2,b+2,FloatToStrF(y1,ffGeneral,6,3));

// график салу

for i:=1 to np do

begin

px := x0+Round(x[i]*mx);



py := y0-Round(y[i]*my);

Form2.Canvas.Pen.Color := clRed;

Rectangle(px-2,py-2,px+2,py+2); // маркер

if Form1.CheckBox1.Checked then

// қосу сызығы

if i = 1


then MoveTo(px,py)

else LineTo(px,py);

Form2.Canvas.Pen.Color := clBlack;

// функция мәні және аргументі

TextOut(px-5,py-15,FloatToStr(y[i]));

TextOut(px-5,y0+2, FloatToStr(x[i]));

MoveTo(px,py); // Қаламұшты px,py нүктелеріне қайтару

// өйткені TextOut қаламұш орнын өзгертеді.

end;

end;


end;

procedure TForm1.FormCreate(Sender: TObject);

var

i: integer;



begin

StringGrid1.ColCount := COLCOUNT;

StringGrid1.Cells[0,0] := ' X';

StringGrid1.Cells[0,1] := ' Y';

// Өңдеу: кестені толтыру

for i:=1 to COLCOUNT do

begin

StringGrid1.Cells[i,0] := IntToStr(i-1);



StringGrid1.Cells[i,1] := IntToStr(i-1);

end;


end;

// Құру батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

var


i: integer;

begin


// Кестедегі мәндерді функция мәндері мен аргументтерінің //жиымы түрінде қайта жазу

for i:=1 to COLCOUNT-1 do

begin

x[i] := StrToFloat(Form1.StringGrid1.Cells[i,0]);



y[i] := StrToFloat(Form1.StringGrid1.Cells[i,1]);

end;


// Графикті шығару функциясын Form2 үшін OnPaint оқиғасын //өңдеу процедурасы шақырады

if not Form2.Showing

then Form2.Show // Form2 терезесін бейнелеу

else Form2.Repaint;

end;
19. Еске сақтау тесті
Жұмыстың мақсаты – өзіңіздің еске сақтау қабілетіңізді ұштайтын бағдарлама құру.

1. Ол үшін жаңа жоба ашып, сол Пішінге 33-суретте көрсетілген компоненттерді орналастырыңыз.





33-сурет
2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.



34-сурет


35-сурет
Жұмысты орындау бағдарламасы:

unit essaktau;

implementation

const

KC = 5; // санның разрядтылығы (цифрлар саны)

LT = 10; // сандардың саны (тест ұзындығы)

var

numb: integer; // сыналушы еске сақтауға тиіс сан

right: integer; // дұрыс еске сақталған сандар саны

n: integer; // сандар есептеуіші

{$R *.dfm}

// k-разрядты санды генерациялайды

function GetNumb(k: integer) : integer;

var

n: integer; // генерацияланатын сан

i: integer;

begin


// процедура санды үлкенінен бастап разряды бойынша генерациялайды

n:= Random(9)+1; // үлкен разряд нөл бола алмайды

// қалған разрядтар

for i := 1 to (k-1) do

n := n*10 + Random(10);

GetNumb := n;

end;

// пішін құру



procedure TForm1.FormCreate(Sender: TObject);

begin


Edit1.Visible := False; // Edit1 енгізу өрісін жасыру

Edit1.MaxLength := KC; // енгізуге болатын символдар саны

Label1.WordWrap := True; // сөзді келесі жолға тасымалдауға рұхсат //беру

Label1.Caption := 'Қазір экранда сандар пайда болады. ' +

'Сіз сол санды еске сақтап, оны пернетақтада теріңіз, сосын Enter басыңыз';

Button1.Caption := 'Бастау';

Timer1.Enabled := False; // таймер тоқтатылды

Timer1.Interval := 1000; // санның көріну уақыты - 1 секунд

right := 0; // дұрыстарының саны

n := 0; // сандарды есептеуіш

Randomize; // ГСЧ инициализациялау

end;


// «Бастау/Аяқтау» батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

if Button1.Caption = 'Аяқтау' then



Form1.Close; // бағдарлама терезесін жабу

if Button1.Caption = 'Бастау' then

begin

Button1.Caption := 'Аяқтау';



Button1.Visible := False; // батырманы жасыру

// Button1 батырмасы сынақ аяқталған соң ғана қол жетімді //болады

Label1.Caption := '';

Label1.Font.Size := 24; // Label1өрісінің қаріп өлшемі

Edit1.Font.Size := 24; // Edit1 өрісінің қаріп өлшемі

// санды генерациялау және шығару

numb := GetNumb(KC);

Label1.Caption := IntToStr(numb);

Timer1.Enabled := True; // таймерді іске қосу

// таймерден түскен сигналды өңдеу процедурасы санды //«өшіреді»

end;

end;


// таймер оқиғасын өңдеу

procedure TForm1.Timer1Timer(Sender: TObject);

begin

Timer1.Enabled := False; // таймерді тоқтату



Label1.Visible := False; // санды жасыру

Edit1.Visible := True; // Edit1 өрісін қол жетімді ету

Edit1.SetFocus; // Edit1 өрісіне көрсеткішті орнату

end;


// Edit1 өрісінде пернені басу

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

var

igrok: integer; // сыналушы енгізген сан



begin

case Key of

'0'..'9',#8: ; // "0"-"9" пернелері,

#13: // пернесі

begin

igrok := StrToInt(Edit1.Text);



if (igrok = numb)

then right := right + 1;

n := n + 1; // сандар есептеуіші

Edit1.Text := '';

Edit1.Visible := False; // Edit1 өрісін жасыру

if n < LT then

begin

numb := GetNumb(KC); // келесі санды генерациялау



Label1.Caption := IntToStr(numb); // санды бейнелеу

Label1.Visible := True;

Timer1.Enabled := True; // таймерді іске қосу

End // сынақ аяқталды

else begin // нәтиже шығару

Label1.Font.Size := 10;

Label1.Caption := 'Нәтиже:' + #13 +

'Көрінген сандар: ' + IntToStr(LT) + #13 +

'Дұрысы: ' + IntToStr(right);

Label1.Visible := True;

Button1.Visible := True; // «Аяқтау» батырмасы көрінеді

end;


end;

else Key := Chr(0);

end;

end;


end.

20. Электр тізбегінің кедергісін табу


Жұмыстың мақсаты – физика пәні бойынша электр тізбегінің кедергісін есептейтін бағдарлама құру.

1. Ол үшін жаңа жоба ашып, 36-суретте көрсетілген компоненттерді Пішінге орналастырыңыз.



2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.



36-сурет
Жұмысты атқару бағдарламасы:

unit kedergy;

// Есептеу батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

var

r1,r2: real; // кедергілердің шамалары



r: real; // тізбек кедергісі

begin


// бастапқы мәліметтерді алу

r1 := StrToFloat(Edit1.Text);

r2 := StrToFloat(Edit2.Text);

if (r1 = 0) and (r2 = 0) then



begin

ShowMessage('Ең болмағанда бір кедергінің мәні берілуі тиіс');



exit;

end;


37-сурет
// RadioButton1және RadioButton2 ауыстырып қосқыштары бір-//біріне тәуелді, сондықтан қосылу типі жайлы ауыстырып //қосқыштың біреуінің жағдайы арқылы білуге болады

if RadioButton1.Checked

then // Тізбектей ауыстырып қосқышы таңдалды

r:= r1+r2

else // Параллель ауыстырып қосқышы таңдалды

r:= (r1*r2)/(r1+r2);

Label4.Caption := 'Тізбек кедергісі: ';

if r < 1000 then

Label4.Caption := Label4.Caption +

FloatToStrF(r,ffGeneral,3,2) + ' Ом'

else

begin


r:=r/1000;

Label4.Caption := Form1.Label4.Caption +

FloatToStrF(r,ffGeneral,3,2) + ' Ом';

end


end;

// Тізбектей ауыстырып қосқышында шерту

procedure TForm1.RadioButton1Click(Sender: TObject);

begin


// Пайдаланушы қосылу типін өзгертті

Label4.Caption := '';

end;

// Параллель ауыстырып қосқышында шерту



procedure TForm1.RadioButton2Click(Sender: TObject);

begin


// Пайдаланушы қосылу типін өзгертті

Label4.Caption := '';



end;

end.




38-сурет

21. Ом заңы


Жұмыстың мақсаты – физика пәні бойынша Ом заңын пайдаланып, ток, кернеу және кедергінің мәндерін есептейтін бағдарлама құру. 1. Ол үшін жаңа жоба ашып, Пішінге 39-суретте көрсетілген компоненттерді орналастырыңыз.

2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.


Жұмысты орындау бағдарламасы:

unit om_;

{$R *.dfm}

// Токты, кернеуді не кедергіні есептеу

procedure Calculate;

var


I,U,R: real; // ток, кернеу, кедергі



39-сурет
begin

if Form1.RadioButton1.Checked then

// ток

begin


U := StrToFloat(Form1.Edit1.Text);

R := StrToFloat(Form1.Edit2.Text);

if (R <> 0) then

begin


I := U/R;

Form1.Label3.Caption := 'Ток: ' + FloatToStrF(I,ffFixed,4,2) + ' А';

end

else ShowMessage('Кедергі нөлге тең болмауы тиіс.');



exit;

end;


if Form1.RadioButton2.Checked then

// кернеу

begin

I := StrToFloat(Form1.Edit1.Text);



R := StrToFloat(Form1.Edit2.Text);

U := I*R;

Form1.Label3.Caption := 'Кернеу: ' + FloatToStrF(U,ffFixed,4,2) + ' В';

exit;


end;

if Form1.RadioButton3.Checked then

// кедергі

begin


U := StrToFloat(Form1.Edit1.Text);

I := StrToFloat(Form1.Edit2.Text);

if (I <> 0) then

begin


R := U/I;

Form1.Label3.Caption := 'Кедергі: ' + FloatToStrF(R,ffFixed,4,2) + ' Ом';

end

else ShowMessage('Ток нөлге тең болмауы тиіс.');



end;

end;


// Ток ауыстырып қосқышын таңдау



40-сурет
procedure TForm1.RadioButton1Click(Sender: TObject);

begin


Label1.Caption := 'Кернеу (вольт)';

Label2.Caption := 'Кедергі (Ом)';

Label3.Caption := '';

end;


// Кернеу ауыстырып қосқышын таңдау

41-сурет

procedure TForm1. RadioButton2Click(Sender: TObject);

begin

Label1.Caption := 'Ток (ампер)';



Label2.Caption := 'Кедергі (Ом)';

Label3.Caption := '';



end;

// Кедергі ауыстырып қосқышын таңдау





42-сурет
procedure TForm1.RadioButton3Click(Sender: TObject);

begin


Label1.Caption := 'Кернеу (вольт)';

Label2.Caption := 'Ток (ампер)';

Label3.Caption := '';

end;


// Edit1өрісінде пернені басу

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key:Char);

begin

case Key of



'0'..'9',#8: ; // цифрлар және

#13: Edit2.SetFocus; // пернесі

'.',',':

begin


if Key = '.'

then Key := ',';

// үтір белгісін қайта енгізуге мүмкіндік бермейді

if Pos(',',Edit1.Text) <> 0

then Key := Chr(0);

end;


else Key := Chr(0);

end;


end;

//Edit2 өрісінде пернені басу

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key:Char);

begin


case Key of

'0'..'9',#8: ;

#13: Calculate; // батырмасы - есептеу

'.',',':


begin

if Key = '.'

then Key := ',';

// үтір белгісін қайта енгізуге мүмкіндік бермейді

if Pos(',',Edit2.Text) <> 0

then Key := Chr(0);

end;

else Key := Chr(0);



end;

end;


// Есептеу батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

if (Edit1.Text <> '') and (Edit2.Text <> '')



then Calculate // токты, кернеу не кедергіні есептеу

else ShowMessage('Екі өріске де бастапқы мәндер енгізілуі керек');

end;

end.



22. Спортсменнің жүгіру жылдамдығын есептеу
Жұмыстың мақсаты – спортсменнің жүгіру жылдамдығын есептей-тін бағдарлама құру.

1. Ол үшін жаңа жоба ашып, төмендегі 43-суретте көрсетілген компоненттерді сол Пішінге орналастырыңыз.





43-сурет
2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.
Жұмысты орындау бағдарламасы:

unit zhygyru;

{$R *.dfm}

// Дистанция өрісіндегі пернені басу

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin


// Key – басылған пернеге сәйкес символ.

// Егер символ рұхсат етілмеген болса, онда процедура оны коды нөлге тең символға ауыстырады. Соның нәтижесінде символ редакциялау өрісінде көрінбейді, сол себепті пайдаланушы бағдарлама кейбір пернелердің басуына әсер етпейді деп ойлап қалады.

// пернелер.

case Key of

'0'..'9': ; // цифрлар

#8 : ; //

#13: Edit2.SetFocus; // - Уақыт өрісіндегі көрсеткіш: //минут

// басқа символдарға – рұхсат етілмейді

else Key :=Chr(0); // символды бейнелемеу

end;


end;

// Уақыт өрісіндегі пернені басу:минут

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin


case Key of

'0'..'9': ;

#8 : ; //

#13: Edit3.SetFocus; // - Уақыт өрісіндегі көрсеткіш:секунд

// басқа символдарға – рұхсат етілмейді

else Key :=Chr(0); //символды бейнелемеу

end;

end;


// Уақыт өрісіндегі пернені басу:секунд

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

case Key of



'0'..'9': ;

',','.' : // ондық таңбалы бөлгіш

begin

Key := DecimalSeparator;



if Pos(DecimalSeparator,Edit3.Text) <> 0

then Key := Char(0);

end;

#8 : ; //



#13 : Button1.SetFocus; // - Есептеу батырмасына //фокустау

// басқа символдарға – рұхсат етілмейді

else Key :=Chr(0); // символды бейнелемеу

end;


end;

// Есептеу батырмасында шерту

procedure TForm1.Button1Click(Sender: TObject);

var


dist : integer; // дистанция, метрмен

min : integer; // уақыт, минутпен

sek : real; // уақыт, секундпен

v: real; // жылдамдық

begin

// бастапқы мәліметтерді енгізу өрісінен алу



dist := StrToInt(Edit1.Text);

min := StrToInt(Edit2.Text);

sek := StrToFloat(Edit3.Text);

// дистанция мен уақыт нөлге тең болмауы тиіс

if (dist = 0) or ((min = 0) and (sek = 0)) then

begin


ShowMessage('Дистанция мен уақытты көрсету керек.');

exit;


end;

// есептеу

v := (dist/1000) / ((min*60 + sek)/3600);

// нәтиже шығару

label5.Caption := 'Дистанция: '+ Edit1.Text + ' м' + #13 +

'Уақыт: ' + IntToStr(min) + ' мин ' +

FloatToStrF(sek, ffGeneral,4,2) + ' сек ' + #13 +

'Жылдамдық: ' + FloatToStrF(v,ffFixed,4,2) + ' км/сағ';

end;

// Аяқтау батырмасында шерту



procedure TForm1.Button2Click(Sender: TObject);

begin


Form1.Close; // Бас пішінді жабу – бағдарлама жұмысын аяқтау

end;


end.



44-сурет

23. Файл іздеу


Жұмыстың мақсаты – қажетті файлды іздеп табатын бағдарлама құру.

1. Ол үшін Пішінге мына суретте көрсетілген компоненттерді орнату.

2. Буманы таңдаңыз, оны Шолу арқылы көрсетуге болады, содан соң файлдың немесе оның кеңейтілімін көрсетіп, Табу батырмасын басыңыз.

3. Төменде файл іздеудің бағдарламасы берілген.





45-сурет
Бағдарламасы:

// Файлды көрсетілген каталогтан не ішкі каталогтан іздеуде Find //рекурсивтік процедурасы қолданылады.

unit FindFile_;

{$R *.dfm}

var

FileName: string; // ізделінді файл не маска аты



cDir: string;

n: integer; // сұранысты қанағаттандыратын файл саны

// файлды ағымдағы каталогтан іздеу

procedure Find;

var

SearchRec: TSearchRec; //файл не каталог жайлы хабарлама



begin

GetDir(0,cDir); // ағымдағы каталог атын алу

if cDir[length(cDir)] <> '\' then cDir := cDir+'\';

if FindFirst(FileName, faAnyFile,SearchRec) = 0 then

repeat

if (SearchRec.Attr and faAnyFile) = SearchRec.Attr then



begin

Form1.Memo1.Lines.Add(cDir + SearchRec.Name);

n := n + 1;

end;


until FindNext(SearchRec) <> 0;

// ағымдағы каталогтың ішкі каталогтарын өңдеу

{ Егер жүйелік каталог өңделмесе, онда faAnyFile орнына faDidertory беріледі. Мұның себебі мынада: жай каталог үшін SearchRec.Attr мәні faDirectory (16), ал Program Files үшін - faDirectory+faReadOnly (17), Windows каталогы үшін - faDirectory+faSysFile (20) тең.}

if FindFirst('*', faAnyFile, SearchRec) = 0 then

repeat

if (SearchRec.Attr and faDirectory) = faDirectory then



// каталогтар .. және . тағы да каталогтар, бірақ оған кірудің //қажеті жоқ !!!

if SearchRec.Name[1] <> '.' then

begin

// Form1.Memo1.Lines.Add('>>>>'+SearchRec.Name);



ChDir(SearchRec.Name);// каталогқа кіру

Find; // іздеуді ішкі каталогта орындау

ChDir('..');// каталогтан шығу

//Form1.Memo1.Lines.Add('<<<<'+SearchRec.Name);



end;

until FindNext(SearchRec) <> 0;



end;

// Іздеу батырмасында шерту

46-сурет
procedure TForm1.Button1Click(Sender: TObject);

begin


if not DirectoryExists(Edit2.Text) then

begin


ShowMessage('Каталог дұрыс көрсетілмеді.');

Edit2.SetFocus;

exit;

end;


Button1.Enabled := False;

Label4.Caption := '';

Label4.Repaint;

Memo1.Clear; // Memo1өрісін тазарту

Label4.Caption := '';

FileName := Edit1.Text; // не іздейміз

cDir := Edit2.Text; // қайдан іздейміз

n:=0; // табылған файлдар саны

ChDir(cDir); // каталогтағы іздеудің басына бару

Find; // іздеуді бастау

if n = 0 then

ShowMessage('Іздеу критерийін қанағаттандыратын файлдар жоқ.')

else Label4.Caption := 'Табылған файлдар:' + IntToStr(n);

Button1.Enabled := True;

end;

// пайдаланушы таңдаған каталогты қайтарады



function GetPath(mes: string):string;

var


Root: string; // түпкі каталог

pwRoot : PWideChar;

Dir: string;

begin


Root := ''; //түпкі каталог – Жұмыс столы бумасы

GetMem(pwRoot, (Length(Root)+1) * 2);

pwRoot := StringToWideChar(Root,pwRoot,MAX_PATH*2);

if SelectDirectory(mes, pwRoot, Dir)

then

if length(Dir) = 2 // пайдаланушы түпкі каталогты таңдады



then GetPath := Dir+'\'

else GetPath := Dir

else

GetPath := '';



end;

// Бума батырмасын шерту

procedure TForm1.Button2Click(Sender: TObject);

var


Path: string;

begin


Path := GetPath('Буманы таңдаңыз');

if Path <> ''

then Edit2.Text := Path;

end;


end.

24. Файлға жазба қосу


Жұмыстың мақсаты – Файлға жазба қосу әрекетін орындау мүмкіндігін беретін бағдарлама құру.

1. Ол үшін жаңа жоба ашып, мына 47-суреттегі компоненттерді Пішінге орналастырыңыз.





47-сурет

2. Компоненттердің оқиғалары мен қасиеттерін төменде берілген бағдарламаға сәйкес өңдеп, жұмыс мақсатына сәйкес әрекеттерді атқарыңыз.


Бағдарламасы:

unit RewAp_;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

f: TextFile; // файл



fName: String[80]; // файлдың аты

i: integer;

begin

if not OpenDialog1.Execute



then

exit;


// Пайдаланушы файлды таңдады

fName := OpenDialog1.FileName;

AssignFile(f, fName);

Rewrite(f); // қайта жазу үшін ашу

// файлға жазу

for i:=0 to Memo1.Lines.Count do // жолдар нөлден бастап //нөмірленеді

writeln(f, Memo1.Lines[i]);

CloseFile(f); // файлды жабу

MessageDlg('Мәліметтер файлға қосылды. ', mtInformation, [mbOk],0);

end;




48-сурет

procedure TForm1.Button2Click(Sender: TObject);

var

f: TextFile; // файл



fName: String[80]; // файлдың аты

i: integer;

begin

fName := Edit1.Text;



AssignFile(f, fName);

Append(f); // жазба қосу үшін ашу

// файлға жазу

for i:=0 to Memo1.Lines.Count do // жолдар нөлден бастап //нөмірленеді

writeln(f, Memo1.Lines[i]);

CloseFile(f); // файлды жабу

MessageDlg('Жазбалар файлға қосылды ',mtInformation,[mbOk],0);

end;


end.

25. Файлдан оқу


Жұмыстың мақсаты – Файлдан оқуға мүмкіндік жасайтын бағдарлама құру.

1. Жаңа жоба ашып, Пішінге 49-суретте бейнеленген компоненттерді орнатыңыз.






Достарыңызбен бөлісу:
1   2   3   4   5   6




©www.engime.org 2024
әкімшілігінің қараңыз

    Басты бет