Приднестровский государственный университет им. Т.Г. Шевченко
Инженерно технический институт Кафедра ВКСС
Выполнил:Студент гр.05В(сокр.) Д.И.Ивченко
Проверил:Преподаватель кафедры ВКСС О.И.Вакарь
Тирасполь 2007
СОДЕРЖАНИЕ
- Введение………………………………………………………………………3
2.Анализ задания и выбор технологии, языка и среды разработки задания на производственную практику……………………………………..4
3.Определение структуры программного продукта……………………………4
4.Разработка пользовательского интерфейса…………………………………..5
5.Заключение……………………………………………………………………..6
Приложение……………………………………………………………………….7
Введение
В настоящее время , в связи, с быстрым развитием компьютерных сетей, как локальных так и сети INTERNET, широкое распространение получили программы удаленного доступа к компьютеру.
Целью данного задание на производственную практику является разработка программы «сетевой файловый менеджер», программа , которая может через сеть (локальную, глобальную) просматривать папки, файлы на удаленном компьютере, а также иметь возможность добавлять, изменять и удалять их.
- Анализ задания и выбор технологии, языка и среды разработки.
Программа должна иметь удобный пользовательский интерфейс и доступные диалоговые окна.
При выборе технологии предпочтение было отдано объектно-ориентированному подходу, как обеспечивающему максимальную эффективность разработки. Структурный подход используется в настоящее время практически только при выполнении специфических разработок на системном уровне в MS DOS.
Для реализации программы был выбран язык программирования C++ Builder. Язык имеет широкие возможности и средства для работы с сетью, а также для создания удобного интерфейса.
- Определение структуры программного продукта.
Программа должна работать с файлами удаленного компьютера, для этого была предусмотрена возможность выбора компьютера с помощью IP, а также по имени. Для удаленной работы с файлами на другом компьютере (в дальнейшем именуемом ведомый) программа устанавливается на него. Компьютер с которого производится управление (ведущий) использует эту же программу, программа ведущего посылает команды , в соответствии с действиями пользователя , программе ведомого компьютера используя компоненты языка Builder C++ ClientSocet и ServerSocet. Графически это можно изобразить так(см. рисунок 1).
Рисунок 1. Функциональная схема
Стрелка в обратном направление на рисунке 1, говорит о том , что ведомый компьютер может стать ведущим и наоборот.
4.Разработка пользовательского интерфейса.
Программа имеет очень доступный интерфейс удобный для пользователя вся работа производится в одном окне, несмотря на большое количество элементов управления, этого удалось достичь, используя закладки, и панели. Другие окно появляются только для предоставления пользователю информации и о выводе сведений об ошибках.
Рисунок 2. Рабочее окно программы
Заключение
Как видно из рисунка 2 программа имеет очень доступный интерфейс. Программа не требует установки, достаточно просто скопировать и запустить программу. Программа предназначена для пользователей в возрасте от 12 лет. Данный программный продукт займет достойное место среди программ подобного типа.
Список используемой литературы
1.Генри Уоррен мл. «Алгоритмические трюки для программистов» — Вильямс, 2003г.
2.Шилдт Г «Справочник программиста по C/C++» — Вильямс, 2003г.
3.Конспект лекций «Технология программирования» М.В. Новиченко.
Приложение
//—————————————————————————
#include <sys\stat.h>
#include <vcl.h>
#include <IdGlobal.hpp>
#pragma hdrstop
#include «Unit1.h»
#include «Unit2.h»
#include «Unit3.h»
//—————————————————————————
#pragma package(smart_init)
#pragma resource «*.dfm»
TForm1 *Form1;
//—————————————————————————
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{char* LD[5]={«C:\\»,»D:\\»,»E:\\»,»F:\\»,»G:\\»};
String FN,TFN;
int a=0,b,c,tck;
StringGrid1->Cells[0][0]=»Имя»;
StringGrid1->Cells[1][0]=»Тип»;
DExplorer.Kd=0;
do
{FileListBox1->Directory=LD[a];
if(FileListBox1->Directory==LD[a])
{Form1->ComboBox1->Items->Add(LD[a]);
DExplorer.Disk[a]=LD[a];
DExplorer.Kd++;
}
a++;
}
while(a<5);
PostrSpis(ComboBox2->Text);
ComboBox1->ItemIndex=0;
FileListBox1->Directory=ComboBox1->Text;
Edit1->Text=ComboBox1->Text;
BldTable();
Label13->Caption=StringGrid1->RowCount-2;
if(!FileExists(«D:\\Options.db»))
CreateDB();
Table1->TableName=»D:\\Options.db»;
Table1->Active=true;
if(Table1->FieldByName(«AcsDat»)->AsString==1)
CheckBox3->Checked=true;
else
CheckBox3->Checked=false;
if(Table1->FieldByName(«DelFil»)->AsString==1)
CheckBox1->Checked=true;
else
CheckBox1->Checked=false;
if(Table1->FieldByName(«ImpExp»)->AsString==1)
CheckBox2->Checked=true;
else
CheckBox2->Checked=false;
Edit3->Text=Table1->FieldByName(«StArch»)->AsString;
Edit4->Text=Table1->FieldByName(«IP»)->AsString;
Edit5->Text=Table1->FieldByName(«Port»)->AsString;
Edit2->Text=Table1->FieldByName(«Name»)->AsString;
ComboBox2->Items->Add(Edit2->Text);
ComboBox2->ItemIndex=0;
Label12->Caption=Table1->FieldByName(«LnF»)->AsString;
Table1->Active=false;
}
//—————————————————————————
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{if(ComboBox2->Text==Edit2->Text)
{StringGrid1->RowCount=2;
FileListBox1->FileName=ComboBox1->Text;
Edit1->Text=ComboBox1->Text;
BldTable();
}
else
ClientSocket1->Socket->SendText(«#FileLst «+ComboBox1->Text);
}
//—————————————————————————
void __fastcall TForm1::StringGrid1DblClick(TObject *Sender)
{int a,b;
String TP;
if(ComboBox2->Text==Edit2->Text) //ЕСЛИ(выбран свой комп)
{if((StringGrid1->Cells[1][StringGrid1->Row]==»»)&&(strlen(Edit1->Text.c_str())>3))
{TP=Edit1->Text; Edit1->Text=»»;
for(a=1;a<=strlen(TP.c_str())-1;a++)
{if(TP[a]==’\\’)
b=a;
}
for(a=1;a<=b;a++)
Edit1->Text=Edit1->Text+TP[a];
FileListBox1->FileName=Edit1->Text;
BldTable();
}
if(StringGrid1->Cells[1][StringGrid1->Row]==»Папка»)
{Edit1->Text=Edit1->Text+StringGrid1->Cells[0][StringGrid1->Row]+’\\’;
TP=Edit1->Text; Edit1->Text=»»;
for(a=1;a<=strlen(TP.c_str());a++)
if((TP[a]!='[‘)&&(TP[a]!=’]’))
Edit1->Text=Edit1->Text+TP[a];
FileListBox1->FileName=Edit1->Text;
BldTable();
}
Label13->Caption=StringGrid1->RowCount-2;
}
else //ЕСЛИ(выбран чужой комп)
{if((StringGrid1->Cells[1][StringGrid1->Row]==»»)&&(strlen(Edit1->Text.c_str())>3))
{TP=Edit1->Text; Edit1->Text=»»;
for(a=1;a<=strlen(TP.c_str())-1;a++)
{if(TP[a]==’\\’)
b=a;
}
for(a=1;a<=b;a++)
Edit1->Text=Edit1->Text+TP[a];
}
if(StringGrid1->Cells[1][StringGrid1->Row]==»Папка»)
{Edit1->Text=Edit1->Text+StringGrid1->Cells[0][StringGrid1->Row]+’\\’;
TP=Edit1->Text; Edit1->Text=»»;
for(a=1;a<=strlen(TP.c_str());a++)
if((TP[a]!='[‘)&&(TP[a]!=’]’))
Edit1->Text=Edit1->Text+TP[a];
}
ClientSocket1->Socket->SendText(«#FileLst «+Edit1->Text);
}
}
//—————————————————————————
void __fastcall TForm1::PostrSpis(AnsiString cmd)
{int a,b,c,de,tck,skb,ptwo;
String FN;
if(strlen(cmd.c_str())>3)
ptwo=0;
else
ptwo=2;
de=2;
FileListBox1->FileName=cmd;
DExplorer.Ko=FileListBox1->Count+ptwo;
if(Sleg==true)
Form3->StringGrid1->RowCount=DExplorer.Ko;
for(a=0;a<=FileListBox1->Count+ptwo;a++)
{FileListBox1->ItemIndex=a;
FN=»»;
b=strlen(FileListBox1->FileName.c_str());
do
{b—;
}
while(FileListBox1->FileName.c_str()[b]!=’\\’);
tck=0;skb=0;
for(c=b+2;c<=strlen(FileListBox1->FileName.c_str());c++)
{FN=FN+FileListBox1->FileName[c];
if(FileListBox1->FileName[c]==’.’)
tck=1;
if(FileListBox1->FileName[1]=='[‘)
skb=1;
}
if((FN!=»[..]»)&&(FN!=»[.]»))
{DExplorer.TrData[0][a+de]=FN;
if(Sleg==true)
Form3->StringGrid1->Cells[0][a+de]=FN;
}
else
de—;
if((tck==1)&&(skb!=1))
{DExplorer.TrData[1][a+de]=»Файл»;
if(Sleg==true)
Form3->StringGrid1->Cells[1][a+de]=»Файл»;
}
else
{DExplorer.TrData[1][a+de]=»Папка»;
if(Sleg==true)
Form3->StringGrid1->Cells[1][a+de]=»Папка»;
}
}
DExplorer.TrData[0][1]=»[..]»;
DExplorer.TrData[1][1]=»»;
if(Sleg==true)
{Form3->StringGrid1->Cells[0][1]=»[..]»;
Form3->StringGrid1->Cells[1][1]=»»;
}
}
//—————————————————————————
void __fastcall TForm1::BldTable()
{int a,b,c,de,tck,skb,ptwo;
String FN;
if(strlen(Edit1->Text.c_str())>3)
ptwo=0;
else
ptwo=2;
StringGrid1->RowCount=2;
StringGrid1->RowCount=FileListBox1->Count+ptwo;
de=2;
for(a=0;a<=FileListBox1->Count+ptwo;a++)
{FileListBox1->ItemIndex=a;
FN=»»;
b=strlen(FileListBox1->FileName.c_str());
do
{b—;
}
while(FileListBox1->FileName.c_str()[b]!=’\\’);
tck=0;skb=0;
for(c=b+2;c<=strlen(FileListBox1->FileName.c_str());c++)
{FN=FN+FileListBox1->FileName[c];
if(FileListBox1->FileName[c]==’.’)
tck=1;
if(FileListBox1->FileName[1]=='[‘)
skb=1;
}
if((FN!=»[..]»)&&(FN!=»[.]»))
{StringGrid1->Cells[0][a+de]=FN;
}
else
de—;
if(StringGrid1->Cells[0][a+de][1]!='[‘)
StringGrid1->Cells[1][a+de]=»Файл»;
else
StringGrid1->Cells[1][a+de]=»Папка»;
}
StringGrid1->Cells[0][1]=»[..]»;
StringGrid1->Cells[1][1]=»»;
}
//—————————————————————————
void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{AnsiString S,fname;
long zsize,psize;
int a,minus;
if(ComboBox2->Text==Edit2->Text)
{minus=-2;
FileListBox1->ItemIndex=StringGrid1->Row + minus;
if(StringGrid1->Cells[1][StringGrid1->Row]==»Файл»)
{FileListBox1->ItemIndex=StringGrid1->Row + minus;
// S=FileSizeByName(FileListBox1->FileName);
// zsize=StrToInt(S)/1048576;
// psize=StrToInt(S)/1024;
// Label4->Caption=IntToStr(zsize)+».»+IntToStr(psize)[1]+» Мб»;
}
else
Label4->Caption=»0.0 Мб»;
}
}
//—————————————————————————
void __fastcall TForm1::TabControl1Change(TObject *Sender)
{switch(TabControl1->TabIndex)
{case 0: {CheckBox1->Visible=true;
CheckBox2->Visible=true;
CheckBox3->Visible=true;
Edit3->Visible=true;
Button3->Visible=true;
Edit4->Visible=false;
Edit2->Visible=false;
Edit5->Visible=false;
Label2->Visible=false;
Label5->Visible=false;
Label8->Visible=false;
Button7->Visible=false;
Label9->Visible=false;
Panel2->Visible=false;
Label11->Visible=false;
} break;
case 1: {CheckBox1->Visible=false;
CheckBox2->Visible=false;
CheckBox3->Visible=false;
Edit3->Visible=false;
Button3->Visible=false;
Edit4->Visible=true;
Edit2->Visible=true;
Edit5->Visible=true;
Label2->Visible=true;
Label5->Visible=true;
Label8->Visible=true;
Button7->Visible=false;
Label9->Visible=false;
Panel2->Visible=false;
Label11->Visible=false;
} break;
case 2: {CheckBox1->Visible=false;
CheckBox2->Visible=false;
CheckBox3->Visible=false;
Edit3->Visible=false;
Button3->Visible=false;
Edit4->Visible=false;
Edit2->Visible=false;
Edit5->Visible=false;
Label2->Visible=false;
Label5->Visible=false;
Label8->Visible=false;
Button7->Visible=true;
Label9->Visible=true;
Panel2->Visible=true;
Label11->Visible=true;
}
}
}
//—————————————————————————
void __fastcall TForm1::Button8Click(TObject *Sender)
{GroupBox2->Visible=true;
TabControl1->Visible=true;
Memo1->Visible=false;
Edit7->Visible=false;
Button9->Visible=false;
TabControl1->TabIndex=0;
CheckBox1->Visible=true;
CheckBox2->Visible=true;
CheckBox3->Visible=true;
Edit3->Visible=true;
Button3->Visible=true;
Edit4->Visible=false;
Edit2->Visible=false;
Edit5->Visible=false;
Label2->Visible=false;
Label5->Visible=false;
Label8->Visible=false;
Button7->Visible=false;
Label9->Visible=false;
Panel2->Visible=false;
Label11->Visible=false;
Button8->Enabled=false;
}
//—————————————————————————
void __fastcall TForm1::Button5Click(TObject *Sender)
{GroupBox2->Visible=false;
TabControl1->Visible=false;
Memo1->Visible=true;
Edit7->Visible=true;
Button9->Visible=true;
Button8->Enabled=true;
}
//—————————————————————————
void __fastcall TForm1::Button6Click(TObject *Sender)
{CreateDB();
if(((Edit3->Text!=»»)||(Edit3->Enabled==false))&&(Label11->Caption!=»»))
{Table1->Active=true;
Form1->Table1->Insert();
if(CheckBox3->Checked==true)
Form1->Table1->FieldByName(«AcsDat»)->AsString=1;
else
Form1->Table1->FieldByName(«AcsDat»)->AsString=0;
if(CheckBox1->Checked==true)
Form1->Table1->FieldByName(«DelFil»)->AsString=1;
else
Form1->Table1->FieldByName(«DelFil»)->AsString=0;
if(CheckBox2->Checked==true)
Form1->Table1->FieldByName(«ImpExp»)->AsString=1;
else
Form1->Table1->FieldByName(«ImpExp»)->AsString=0;
Form1->Table1->FieldByName(«StArch»)->AsString=Edit3->Text;
Form1->Table1->FieldByName(«IP»)->AsString=Edit4->Text;
Form1->Table1->FieldByName(«Port»)->AsString=Edit5->Text;
Form1->Table1->FieldByName(«Name»)->AsString=Edit2->Text;
Form1->Table1->FieldByName(«LnF»)->AsString=Label11->Caption;
Form1->Table1->Post();
Table1->Active=false;
ClientSocket1->Address=Edit4->Text;
ClientSocket1->Port=StrToInt(Edit5->Text.c_str());
ServerSocket1->Port=StrToInt(Edit5->Text.c_str());
GroupBox2->Visible=false;
TabControl1->Visible=false;
Memo1->Visible=true;
Edit7->Visible=true;
Button9->Visible=true;
Button8->Enabled=true;
}
else
Application->MessageBoxA(«Введены не все поля»,»Ошибка»,MB_OK);
}
//—————————————————————————
void __fastcall TForm1::Button3Click(TObject *Sender)
{OpenDialog1->InitialDir=»C:\\»;
if(OpenDialog1->Execute())
{Edit3->Text=OpenDialog1->FileName;
}
}
//—————————————————————————
void __fastcall TForm1::Button7Click(TObject *Sender)
{Form2->Show();
}
//—————————————————————————
void __fastcall TForm1::Button4Click(TObject *Sender)
{CheckBox3->Checked=true;
CheckBox1->Checked=false;
CheckBox2->Checked=true;
Edit3->Text=»C:\\Program Files\\WinRar\\Rar.exe»;
Edit4->Text=»127.0.0.1″;
Edit5->Text=2000;
Edit2->Text=»Бугага»;
Label12->Caption=»C:\\Downloads\\»;
}
//—————————————————————————
void __fastcall TForm1::CheckBox2Click(TObject *Sender)
{if(CheckBox2->Checked==true)
{Edit3->Enabled=true;
Button3->Enabled=true;
}
else
{Edit3->Enabled=false;
Edit3->Text=»»;
Button3->Enabled=false;
}
}
//—————————————————————————
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{Label10->Caption=»Клиент подключен»;
Image1->Visible=false;
Image2->Visible=true;
Image3->Visible=false;
Button11->Caption=»Разъединить»;
Button10->Enabled=false;
ClientSocket1->Active=true;
}
//—————————————————————————
void __fastcall TForm1::Button11Click(TObject *Sender)
{int c;
if(Button11->Caption==»Ожидание соединения»)
c=1;
if((Button11->Caption==»Отмена»)||(Button11->Caption==»Разъединить»))
c=2;
switch(c)
{case 1: {ServerSocket1->Port=StrToInt(Edit5->Text.c_str());
ClientSocket1->Address=Edit4->Text;
ClientSocket1->Port=StrToInt(Edit5->Text.c_str())+500;
Label10->Caption=»Ожидание подключения»;
Image1->Visible=false;
Image2->Visible=false;
Image3->Visible=true; //Yellow
ServerSocket1->Active=true;
Button11->Caption=»Отмена»;
Button10->Enabled=false;
} break;
case 2: {Label10->Caption=»Клиент не подключен»;
Image1->Visible=true; //Red
Image2->Visible=false;
Image3->Visible=false;
ClientSocket1->Active=false;
ServerSocket1->Active=false;
Button11->Caption=»Ожидание соединения»;
Button10->Enabled=true;
ComboBox2->Clear();
ComboBox2->Items->Add(Edit2->Text);
ComboBox2->ItemIndex=0;
} break;
}
}
//—————————————————————————
void __fastcall TForm1::Button10Click(TObject *Sender)
{ClientSocket1->Address=Edit4->Text;
ClientSocket1->Port=StrToInt(Edit5->Text.c_str());
ServerSocket1->Port=StrToInt(Edit5->Text.c_str())+500;
ClientSocket1->Active=true;
ServerSocket1->Active=true;
}
//—————————————————————————
void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender,
TCustomWinSocket *Socket)
{String str,nnm,comand,param,CD,D,SF,of;
int a,b,tck,skb;
str=Socket->ReceiveText();
if(str[1]=='<‘)
Memo1->Lines->Add(str);
if(str[1]==’~’) //обмен именами
{for(a=2;a<=strlen(str.c_str());a++)
nnm=nnm+str[a];
ComboBox2->Items->Add(nnm);
}
if((str[1]==’#’)&&(CheckBox3->Checked==true)) //команды
{for(a=2;a<=8;a++)
comand=comand+str[a];
if(comand==»ImportFile»)
{
}
if(comand==»CmdConn») //запрос имён дисков и содержания первого
{for(b=0;b<DExplorer.Kd;b++)
CD=CD+DExplorer.Disk[b];
ClientSocket1->Socket->SendText(«/D «+CD); //передача названий дисков
FileListBox1->FileName=DExplorer.Disk[0];
SF=»»;PostrSpis(DExplorer.Disk[0]);
for(a=1;a<=FileListBox1->Count;a++)
SF=SF+DExplorer.TrData[0][a]+»/»;
ClientSocket1->Socket->SendText(«/F «+SF); //передача списка файлов
}
if(comand==»FileLst») //запрос списка файлов по заданному пути
{param=»»;
for(a=10;a<=strlen(str.c_str());a++)
param=param+str[a];
FileListBox1->FileName=param;
SF=»»;PostrSpis(param);
Form3->Edit1->Text=param;
Form3->StringGrid1->RowCount=FileListBox1->Count;
for(a=1;a<=FileListBox1->Count;a++)
{SF=SF+DExplorer.TrData[0][a]+»/»;
Form3->StringGrid1->Cells[0][a]=DExplorer.TrData[0][a];
}
ClientSocket1->Socket->SendText(«/F «+SF); //передача списка файлов
}
}
if(str[1]==’/’) //параметры
{if(str[2]==’D’) //получение названий дисков
{ComboBox1->Clear();
param=»»;
for(a=4;a<=strlen(str.c_str());a++)
param=param+str[a];
for(a=1;a<=strlen(param.c_str());a=a+3)
{D=»»;
D=D+param[a];
D=D+param[a+1];
D=D+param[a+2];
ComboBox1->Items->Add(D);
}
ComboBox1->ItemIndex=0;
Edit1->Text=ComboBox1->Text;
} //<==
if(str[2]==’F’) //получение списка файлов
{param=»»;
for(a=4;a<=strlen(str.c_str());a++)
param=param+str[a];
a=0; of=»»; b=0;
do
{a++;
if(param[a]==’/’)
{b++;
DExplorer.DataImport[0][b]=of;
of=»»;
}
else
of=of+param[a];
}
while(a!=strlen(param.c_str()));
StringGrid1->RowCount=2;
if(strlen(Edit1->Text.c_str())==3)
StringGrid1->RowCount=b+2;
else
StringGrid1->RowCount=b;
for(a=1;a<=b;a++) //заполнение таблицы полученными данными
StringGrid1->Cells[0][a]=DExplorer.DataImport[0][a];
for(a=1;a<=StringGrid1->RowCount;a++)
{tck=0;skb=0;
for(b=1;b<=strlen(StringGrid1->Cells[0][a].c_str());b++)
{if(StringGrid1->Cells[0][a][b]==’.’)
tck=1;
if(StringGrid1->Cells[0][a][b]=='[‘)
skb=1;
}
if(skb!=1)
StringGrid1->Cells[1][a]=»Файл»;
else
StringGrid1->Cells[1][a]=»Папка»;
}
StringGrid1->Cells[0][1]=»[..]»;
StringGrid1->Cells[1][1]=»»;
}
}
if((str[1]==’#’)&&(CheckBox3->Checked==false))
ClientSocket1->Socket->SendText(«NoAccess»);
if(str==»NoAccess»)
{Application->MessageBoxA(«Доступ к данным удаленного терминала запрещен»,»Доступ»,MB_ICONERROR);
ComboBox1->ItemIndex=0;
ComboBox2->ItemIndex=0;
Edit1->Text=ComboBox1->Text;
FileListBox1->FileName=Edit1->Text;
BldTable();
}
if(str==»Access»)
{Application->MessageBoxA(«Доступ к данным удаленного терминала разрешен»,»Доступ»,MB_ICONINFORMATION);
}
}
//—————————————————————————
void __fastcall TForm1::SndMsg()
{AnsiString msg;
if(Label10->Caption==»Клиент подключен»)
{msg=»<«+Edit2->Text+»>: «+Edit7->Text;
Edit7->Text=»»;
ClientSocket1->Socket->SendText(msg);
Memo1->Lines->Add(msg);
}
}
//—————————————————————————
void __fastcall TForm1::Button9Click(TObject *Sender)
{SndMsg();
}
//—————————————————————————
void __fastcall TForm1::Edit7KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{if(Key==13)
SndMsg();
}
//—————————————————————————
void __fastcall TForm1::ClientSocket1Error(TObject *Sender,
TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode)
{Application->MessageBoxA(«Сервер не отвечает»,»Ошибка»,MB_ICONERROR);
ErrorCode = 0;
ClientSocket1->Active=false;
ServerSocket1->Active=false;
Label10->Caption=»Клиент не подключен»;
Image1->Visible=true; //Red
Image2->Visible=false;
Image3->Visible=false;
Button11->Caption=»Ожидание соединения»;
Button10->Enabled=true;
}
//—————————————————————————
void __fastcall TForm1::ClientSocket1Connect(TObject *Sender,
TCustomWinSocket *Socket)
{Label10->Caption=»Клиент подключен»;
Image1->Visible=false;
Image2->Visible=true; //Green
Image3->Visible=false;
Button11->Caption=»Разъединить»;
Button10->Enabled=false;
if(SendName==false)
{ClientSocket1->Socket->SendText(«~»+Edit2->Text);
SendName=true;
}
}
//—————————————————————————
void __fastcall TForm1::CreateDB()
{Form1->Table1->TableName=»D:\\Options.db»;
Form1->Table1->TableType=ttParadox;
Form1->Table1->FieldDefs->Clear();
TFieldDef *pNewDef = Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»AcsDat»;
pNewDef->DataType=ftInteger;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»DelFil»;
pNewDef->DataType=ftInteger;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»ImpExp»;
pNewDef->DataType=ftInteger;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»StArch»;
pNewDef->DataType=ftString;
pNewDef->Size=255;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»IP»;
pNewDef->DataType=ftString;
pNewDef->Size=128;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»Port»;
pNewDef->DataType=ftInteger;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»Name»;
pNewDef->DataType=ftString;
pNewDef->Size=20;
pNewDef=Form1->Table1->FieldDefs->AddFieldDef();
pNewDef->Name=»LnF»;
pNewDef->DataType=ftString;
pNewDef->Size=255;
Form1->Table1->CreateTable();
}
//—————————————————————————
void __fastcall TForm1::Button12Click(TObject *Sender)
{if(Sleg==false)
{Sleg=true;
Form1->Enabled=false;
Form3->Show();
}
}
//—————————————————————————
void __fastcall TForm1::ComboBox2Change(TObject *Sender)
{int a;
if((ComboBox2->Text!=Edit2->Text)&&(ClientSocket1->Active==true))
ClientSocket1->Socket->SendText(«#CmdConn»);
else
{ComboBox1->Clear();
for(a=0;a<DExplorer.Kd;a++)
ComboBox1->Items->Add(DExplorer.Disk[a]);
ComboBox1->ItemIndex=0;
FileListBox1->FileName=ComboBox1->Text;
BldTable();
}
}
//—————————————————————————
void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{int a;
Label10->Caption=»Клиент не подключен»;
Image1->Visible=true; //Red
Image2->Visible=false;
Image3->Visible=false;
ClientSocket1->Active=false;
ServerSocket1->Active=false;
Button11->Caption=»Ожидание соединения»;
Button10->Enabled=true;
ComboBox2->Clear();
ComboBox2->Items->Add(Edit2->Text);
ComboBox2->ItemIndex=0;
ComboBox1->Clear();
for(a=1;a<=DExplorer.Kd;a++)
ComboBox1->Items->Add(DExplorer.Disk[a]);
Application->MessageBoxA(«Клиент отсоединился»,»Сообщение»,MB_ICONINFORMATION);
}
//—————————————————————————
void __fastcall TForm1::Button1Click(TObject *Sender)
{ClientSocket1->Socket->SendText(«#ImportFile»);
}
//—————————————————————————