Отчет по производственной практике. Тема: «Сетевой файловый менеджер»


Приднестровский государственный университет им. Т.Г. Шевченко

Инженерно технический институт Кафедра ВКСС

Выполнил:Студент гр.05В(сокр.)                                                  Д.И.Ивченко

Проверил:Преподаватель кафедры ВКСС                                  О.И.Вакарь

Тирасполь 2007

СОДЕРЖАНИЕ

  1. Введение………………………………………………………………………3

2.Анализ задания и выбор технологии, языка и среды разработки          задания на производственную практику……………………………………..4

3.Определение структуры программного продукта……………………………4

4.Разработка пользовательского интерфейса…………………………………..5

5.Заключение……………………………………………………………………..6

Приложение……………………………………………………………………….7

Введение

В настоящее время , в связи, с быстрым развитием компьютерных сетей, как локальных так и сети INTERNET,  широкое распространение получили программы удаленного доступа к компьютеру.

Целью данного задание на производственную практику является разработка  программы «сетевой файловый менеджер», программа , которая может   через сеть (локальную, глобальную) просматривать папки, файлы на удаленном компьютере, а также иметь возможность добавлять,  изменять и удалять их.

  1. Анализ задания и выбор технологии, языка и среды разработки.

Программа должна иметь удобный пользовательский интерфейс и доступные диалоговые окна.

При выборе технологии предпочтение было отдано объектно-ориентированному подходу, как обеспечивающему максимальную эффективность разработки. Структурный подход используется в настоящее время практически только при выполнении специфических разработок на системном уровне в MS DOS.

Для реализации программы был выбран язык программирования C++ Builder. Язык имеет  широкие возможности и средства для работы с сетью, а также для создания удобного интерфейса.

  1. Определение структуры программного продукта.

Программа должна работать с файлами  удаленного компьютера, для этого была предусмотрена возможность  выбора компьютера с помощью 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»);

}

//—————————————————————————

Загрузка...