|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
06.09.2018, 15:54 | #1 |
Пользователь
Регистрация: 06.09.2018
Сообщений: 12
|
Не проходит компиляция
8) Для события OnCreate формы ServerForm записать следующий про-граммный код:
procedure TServerForm.FormCreate(Sender: TObject); begin ServerSocket.Active := True; Slatusbar1.SimpleText := 'Прослушивание канала...' end;. 9) Для события OnTimer компонента Timer1 записать следующий про-граммный код: procedure TServerForm.Timer1Timer(Sender: TObject); var i: Integer; s: String; ms: TMemoryStatus; begin // Передача информации о систем. времени всем подключенным кли-ентам with ServerSocket.Socket do for i := 0 to ActiveConnections-l do Connections[i].SendText('T’ + FormatDateTime(hh-nn-ss', Time)); // Передача информации о статусе виртуальной памяти всем подклю-ченным// клиентам Global MemoryStatus( ms); s := Format('%10dK', [(ms.dwAvailPageFile+ms.dwAvailPhys) div 1024]); with ServerSocket.Socket do for i := 0 to ActiveConnections-1 do Connections[i].SendText('M' + s); end;. 10) Для события OnClientConnect компонента ServerSocket записать следующий программный код: procedure TServerForm.ServerSocketClientConne ct(Sender: Tobject; Socket: TCustomWinsocket); begin ClientsListBox.Items.AddObject(Form at('Установлено соединение с %s', [Socket.RemoteAddress]), Socket); Statusbar1.SimpleText := 'Прослушивание канала...'; end;. 10) Для события OnClientDisconnect (разрыв соединения со стороны клиента) компонента ServerSocket записать следующий программный код: procedure TserverForm.ServerSocketClientDisco nnect(Sender: TObject; Socket: TCustomWinsocket); var i: Integer; begin //Если все клиенты отключены, сервер переводится в пассивное со-стояние if ServerSocket.Socket.ActiveConnectio ns=0 then Server Socket.Active := False; // Просматривается список ClientsListBox всех соединений и из списка удаляется строка // соответствующая закрываемому соединению for i := 0 to ClientsListBox.Count-1 do if ClientsListBox.Items.Objects[i]-Socket then begin ClientsListBox.ltems.Delete(i); break; end; Statusbar1.SimpleText:= 'Прослушивание канала...’; end;. 11) Для события OnClientError компонента ServerSocket записать сле-дующий программный код: procedure TServerForm.ServerSocketClientError (Sender: TObject; Sock-et: TCustomWinsocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin StatusBar1.SimpleText:=Format('Ошиб ка клиента %s: %s', [Socket.RemoteAddress, SysErrorMessage(ErrorCode)]); ErrorCode:=0; end;. и в клиентском приложении. 5) Введите дополнительную процедуру установления соединения с сервером (не забудьте описать эту процедуру в структуре type там, где описаны все остальные процедуры): procedure TClienForm.ConnectToServer; var sAddr: string; begin //Если соединение еще не установлено, то устанавливается соедине-ние if ClientSocket.Active then ClientSocket.Active:=False; try if not InputQuery('Выбор хоста', 'IP-адрес хоста', sAddr) then Abort; if Length(sAddr)=0 then Abort; with ClientSocket do begin Host := sAddr; Active:=True; end; except TimeSpeedButton.Down:=False; MemSpeedButton.Down := False; end; end;. 6) Программирование компонента ClientSocket. Для события OnError запишите следующий программный код: procedure TClientForm.ClientSocketError(Sende r: TObject; Socket: TCustomWinsocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin Application.MessageBox(pChar(Format ('Ошибка соединения c%s: '#13#10'%s', [ClientSocket.Host, SysErrorMessage(ErrorCode)])), pChar(Application.Title), MB_ICONERROR or MB_Ok); ErrorCode :=0; MemSpeedButton.Down := False; TimeSpeedButton.Down := False; end;. 7) Для события On Read запишите следующий программный код: procedure TClientForm.ClientSocketRead(Sender . TObject; Socket: TCustomWinsocket); var s, s1: string; p: pChar; begin s:= Socket.ReceiveText; iа TimeSpeedButton.Down then begin p:=AnsiStrRScan(pChar(s),T); if p <>nil then begin TimeSpeedButton.Caption := Copy(string(p),2, 8); end; end; if MemSpeedButton.Down then begin p :=AnsiStRScan(pChar(s),'M'); if p<>nil then begin MemSpeedButton.Caption :=Copy(string(p), 2, 11); end; end; end;. 8) Для события OnClick компонента MemSpeedButton записать следу-ющий программный код: procedure TClientForm.MemSpeedButtonClick(Sen der: TObject); begin //если кнопка нажата и соединение еще не установлено, то //устанавливается соединение if MemSpeedButton.Down then begin if not ClientSocket.Active then ConnectToServer; end else begin // Если не нажата ни одна из кнопок, то соединение разрывается if not TimeSpeedButton.Down then ClientSocket.Active:=False; MemSpeedButton.Caption:= 'Информация о вирт. памяти на сервере’; end; end;. 9) Для события OnCIick компонента TimeSpeedButton записать сле-дующий программный код: procedure TCIientForm.TimeSpeedButtonClick( Sender: TObject); begin if TimeSpeedButton.Down then begin if not ClientSocket.Active then ConnectToServer; end else begin if not MemSpeedButton.Down then ClientSocket.Active:= False; TimeSpeedButton.Caption :='Показания системных часов на сервере'; end; end;. 10) Для события OnClick кнопки «Разорвать соединение» записать следующий программный код: procedure TClientForm.DisconnectClick(Sender: TObject); begin TimeSpeedButton.Down := False; MemSpeedButton.Down := False; ClientSocket.Close; end;. |
06.09.2018, 15:57 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Начните с чтения ошибок... Ну или изучения основ языка, а не только копи-паста.
Код:
Код:
|
06.09.2018, 16:07 | #3 |
Пользователь
Регистрация: 06.09.2018
Сообщений: 12
|
просто я вообще это не понимаю в приложении делфи,всегда делали работы в лазарусе,а тут вроде одна и та же программа,но очень тяжело
|
06.09.2018, 16:08 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Где в моем посте хоть что-то специфическое для Delphi? Или в лазарусе вдруг паскаль поменялся?
|
06.09.2018, 16:10 | #5 |
Пользователь
Регистрация: 06.09.2018
Сообщений: 12
|
нет не поменялся. просто попросила помощи.
|
06.09.2018, 16:11 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Ну так точки с запятыми где надо поставили? Лишние точки и точки с запятыми убрали? Опечатки исправили?
|
06.09.2018, 16:14 | #7 |
Пользователь
Регистрация: 06.09.2018
Сообщений: 12
|
пробовала и убирать и исправлять,все равно ничего не помогает
|
06.09.2018, 16:20 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,709
|
Ну так исправляйте дальше или возьмите издание книги, из которой копировали, поновее, где детские опечатки исправлены.
Slatusbar1 что за Слатус? Global MemoryStatus что это? зачем пробел в имени функции? Sender . TObject вы не знаете как тип параметра указывается? Sen der - пар аметр? TCIientForm - кИиент? |
06.09.2018, 16:23 | #9 |
Пользователь
Регистрация: 06.09.2018
Сообщений: 12
|
за 1000 решите полностью?
|
06.09.2018, 16:24 | #10 |
Пользователь
Регистрация: 06.09.2018
Сообщений: 12
|
Sender . TObject вы не знаете как тип параметра указывается?
не знаю как указывается |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Почему при указании пути через имя компа сканирование не проходит, а через IP - проходит? | Oxidous | Операционные системы общие вопросы | 2 | 16.03.2016 11:00 |
Не проходит if | tronuo | JavaScript, Ajax | 1 | 13.10.2014 23:44 |
бэкап проходит средствами sql но не проходит средствами 1с | so1idsnake | Помощь студентам | 4 | 16.09.2013 08:44 |
[FASM] Программа для электрической схемы.. Не проходит компиляция.. | hen | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 11.11.2011 07:28 |
Не проходит авторизация | KREGI | Работа с сетью в Delphi | 4 | 24.08.2009 22:15 |