Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1184
от 17.09.2008, 22:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 393, Экспертов: 50
В номере:Вопросов: 3, Ответов: 5

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 143682: Доброго времени суток! Предстал перед задачей написать небольшую программку удалённого контроля. Объясните пожалуйста следующий момент: как в Borland Delphi <b>7</b> осуществить передачу сообщения от серверного приложения клиентскому по сети, е...
Вопрос № 143684: Уважаемые эксперты, подскажите пожалуйста: какой фильтр нужно установить в OpenDialog, чтобы можно было выбрать не файл, а папку?...
Вопрос № 143758: Уважаемые эксперты, у меня такой вопрос: как в Delphi проверить наличие элемента в списке. Например у меня есть переменная <font color="green"> sStrings </font> типа <font color="green"> tstrings </font>. В программе идет присвоение значений переменн...

Вопрос № 143.682
Доброго времени суток!
Предстал перед задачей написать небольшую программку удалённого контроля.
Объясните пожалуйста следующий момент: как в Borland Delphi 7 осуществить передачу сообщения от серверного приложения клиентскому по сети, если известен IP-адрес удалённой машины? Компьютеры находятся в одной рабочей группе.
Зараннее благодарен.
Отправлен: 11.09.2008, 22:12
Вопрос задал: SHERRY (статус: Студент)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Олекса aka SoW
Здравствуйте, SHERRY!
Самый простой способ - использовать компоненты TServerSocket и TClientSocket. Они располагаются на закладке Internet.
Если там нет етих компонентов, то Вам нужно их установить (в Делфи 6 и 7 они по умолчанию не устанавливаются). Для єтого найдите на установочном диске Делфи файл dclsocketsXX.bpl, где ХХ - номер версии Делфи. Скопируйте его куда-нибудь на жесткий диск, например в поддиректорию bin директории, куда установлен Делфи. В этой папке находятся все bpl-файлы и вполне разумно поместить туда и этот.

После этого в Делфи нужно выбрать пункт Install Package в меню Component. Откроется окно, в нем нажмите кнопку Add, и перед Вами появится стандартное окн открытия файла. Выберите скопированный файл dclsocketsXX.bpl. После етого можете закрывать все открытые окна кнопками OK.

Теперь непосредственно к тому, как передать сообщение:

1) Серверная часть, которая получает сообщение и соответственно его обрабатывает.
- На форму нужно поместить компонент TServerSocket. В его свойстве Port задаем нужный порт (Любое значение от 1024 до 65000).
- При запуске программы пишем строчку ServerSocket1.Activate:=true; - она запускает сервер и открывает указанный порт в ожидании соединения.
- Теперь в событии OnClientRead обрабатываем полученное сообщение, например:
procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
var
s:String;
begin
s:= Socket.ReceiveText;
if s='R' then ExitWindowsEx(EWX_SHUTDOWN,0);
end;

2) Клиентская часть: ставим на форму компонент TClientSocket. Пример его использования:
procedure TForm1.Button1Click(Sender: TObject);
begin
clientsocket1.host:='172.27.8.100';
clientsocket1.active:=true;
clientsocket1.Socket.SendText('Текст сообщения');
clientsocket1.active:=false;
end;

Если что-то непонятно, пишите в ЛС
---------
Вiк живи - вiк учись.
Ответ отправил: Олекса aka SoW (статус: 3-ий класс)
Ответ отправлен: 11.09.2008, 23:07
Оценка за ответ: 5
Комментарий оценки:
Благодарю за подсказку!


Вопрос № 143.684
Уважаемые эксперты, подскажите пожалуйста: какой фильтр нужно установить в OpenDialog, чтобы можно было выбрать не файл, а папку?
Отправлен: 11.09.2008, 22:51
Вопрос задал: Хукаленко Дмитрий (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Хукаленко Дмитрий!
Для таких целей я использовал модуль BrowseFolderDlg (см. в приложении).
Пишите в основной программе
uses BrowseFolderDlg;
А для выбора папки вызываете функцию BrowseFolder(handle, caption). В качестве handle указываете handle используемой формы. Caption - заголовок (по умолчанию пустой).
Данный модуль был сделан мной из компонента BrowseFolderDlg.

Удачи!

Приложение:

Ответ отправил: Николай Владимирович / Н.В. (статус: Профессор)
Россия, Москва
----
Ответ отправлен: 11.09.2008, 23:48
Оценка за ответ: 5
Комментарий оценки:
ОК. Спасибо.

Отвечает: Олекса aka SoW
Здравствуйте, Хукаленко Дмитрий!
Для етого нужно использовать функцию SelectDirectory, которая объявлена в модуле FileCtrl. У нее три параметра: оглавление окна, корневой каталог, переменная-результат.

Пример использования:

...
uses ... FileCtrl;
...
var Dir:string;
...
SelectDirectory('Укажите каталог установки программы', '', Dir);

В итоге откроется диалог выбора папки, и путь к ней окажется в переменной Dir.
---------
Вiк живи - вiк учись.
Ответ отправил: Олекса aka SoW (статус: 3-ий класс)
Ответ отправлен: 11.09.2008, 23:49
Оценка за ответ: 5
Комментарий оценки:
Спасибо, попробую этот вариант.


Вопрос № 143.758
Уважаемые эксперты, у меня такой вопрос: как в Delphi проверить наличие элемента в списке. Например у меня есть переменная sStrings типа tstrings . В программе идет присвоение значений переменной, например,
Код:
sStrings[0]:='text1',
sStrings[1]:='text2' 
и т. д. Как мне, например, проверить наличие эленента sStrings[6]?
Отправлен: 12.09.2008, 18:13
Вопрос задал: Romach (статус: 1-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Raptor3
Здравствуйте, Romach!

Непонятно что считается элементом в списке - чтоб номер элемента существовал?

sStrings.count - проверяем чтобы 6 (n) был меньше count
---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 8-ой класс)
Ответ отправлен: 12.09.2008, 18:41
Оценка за ответ: 5

Отвечает: monah
Здравствуйте, Romach!
В первую очередь замечу что элементы нумеруются с нуля и по порядку. тогда можно проверить в свойстве "Count"
i:=sStrings.count; Учтите, что максимальный номер на еденицу меньше.
Доступ к конкретному поля осуществляется так
"s:=sStrings.strings[i];" Где "s" строковая переменная.
Анологично можно искать элемент по его значению.
i:=sStrings.indexOf(s); вернет номер поля (отсчет с нуля) или (-1) если ни чего не найдено.
---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 12.09.2008, 19:54
Оценка за ответ: 5
Комментарий оценки:
Спасибо за ответ. Просто я думал, что переменным можно присваивать значения так: srings[5]:=\'string\', когда нет предыдущих элементов списка.


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2008, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале

∙ Версия системы: 5.3 RC 2 от 09.09.2008

Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное