Програма Прогноз погоди, форму якої наведено на рисунку, додає в базу даних, що являє собою текстовий файл, інформацію про температуру повітря. Кожен рядок файлу даних meteo.txt містить дату і значення температури. Якщо файлу даних у поточному каталозі немає, то програма створює його.
Програма спроектована так, що кнопка ОК доступна тільки у тому випадку, якщо поле Температура містить дані.

#include vcl.h
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int f; // дескриптор файлу
//конструктор
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
MonthCalendar1->ShowTodayCircle = false;
MonthCalendar1->Date = Now();
Button1->Enabled = false;
} // змінився вміст поля редагування
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
// кнопка "Додати" доступна, якщо в полі редагування
// знаходиться число. Якщо в полі символів немає або перший
// символ - "мінус", кнопка недоступна.
if ( (Edit1->Text.Length() == 0 ) ||
( (Edit1->Text.Length() ==1) &&
(Edit1->Text[1] == '-') ) )
Button1->Enabled = false;
else
Button1->Enabled = true;
}
// клацання на кнопці "Додати”
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString st;
/* файл можна відкрити в режимі fmCreate, тоді, якщо
файл існує, його буде відкрито для запису,
якщо файлу немає, то він буде створений */
st= MonthCalenda1l->Date.DateString() + " " + Edit1->Text + "\r\n"
if ( FileExists("meteo.txt") )
f = FileOpen("meteo.txt",fmOpenWrite);
else
f = FileCreate("meteo.txt"); // створити файл
if ( f != -1 )
{
// файл відкритий для запису
FileSeek(f,0,2); // встановити курсор в кінець
// файлу
FileWrite(f,st.c_str(),st.Length());
FileClose(f);
Button1->Enabled = false;
}
else
{
/* помилка доступу до файлу: ні відкрити,
ні створити не вийшло */
ShowMessage("Помилка доступу до файлу: ні відкрити,"
"ні створити не вийшло")
}
}
// у поле редагування можна ввести тільки
// додатне або від'ємне число
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (( Key >= '0') && (Key <= '9'))
return;
// десяткова крапка (кома)
if ( ( Key == '.') || (Key == ','))
{
Key = ',' ;
if ( Edit1->Text.Pos(',') != 0)
Key = 0;
return;
}
if ( Key == 8)
return;
if ((Key == '-') && (Edit1->Text.Length() == 0))
// "мінус" може бути тільки перший символом
return;
// всі інші символи заборонені
Key = 0;
}
// клацання в полі компонента MohthCalendar
void __fastcall TForm1::MonthCalendar1Click(TObject *Sender)
{
Edit1->Text = ""; //очистити поле введення температури
Edit1->SetFocus(); // встановити курсор у поле введення температури
}
програмування