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

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


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

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

Выпуск № 629
от 23.10.2006, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 397, Экспертов: 76
В номере:Вопросов: 8, Ответов: 18


Вопрос № 59310: Здравствуйте уважаемые эксперты! Скажите, как можно управлять питанием USB-порта. Мне нужно выполнять "Безопасное отключение устройства" от USB-порта. Подскажите как это делается или где об этом можно почитать....
Вопрос № 59315: Приветствую, камрады эксперты. Больной вопрос назрел как чирей. Треба взрезать его с умением и пользой. Умение - от вас, польза - людям :-) Итак. Имею мысль: написать хитрую приблуду типа клиент-сервер, которая висит в на сервер...
Вопрос № 59340: Добрый день! Подскажите как реализовать программу чтоб мультиязычным напримере Office MUI, мне интересно знать как они это реализовали. заранее спасибо! ...
Вопрос № 59345: Доброе время суток, уважаемые Эксперты. Такой вопрос возник. У TAction из TActionList в дизайнтайм есть свойство Enabled, а в рантайм его нету. Почему? Нужно все пункты меню и кнопки на ToolBar, которые ссылаются на определенный TAction з...
Вопрос № 59365: Здравствуйте! Я работаю с компонентом ТQuery для запроса к БД MySql, делаю Sql запрос все получается но я не знаю как результат запроса записать в текстовый файл. Моя программа работает как служба и поэтому я не могу использовать компонент DBGrid и ...
Вопрос № 59375: Подскажите где моя ошибка. В dll использую только тип WideString в параметрах и значение функций (обработка несколько строк xml). И еще две глобальные переменные, одну изменяю из вызывающего модуля (имя файла хранящий xml), а второй пользуются ф...
Вопрос № 59394: Здравствуйте эксперты! Как можно организовать премещение объекта (н-р кнопка) при наведении на него мыши. Пробовал и position писать, как со scrollbar, но делфи не распознает. p.s компонент должен двигаться по заданной формуле (синусоидально, ран...
Вопрос № 59395: Здравствуйте эксперты! Как можно организовать премещение объекта (н-р кнопка) при наведении на него мыши. Пробовал и position писать, как со scrollbar, но делфи не распознает. p.s компонент должен двигаться по заданной формуле (синусоидально, ран...

Вопрос № 59.310
Здравствуйте уважаемые эксперты! Скажите, как можно управлять питанием USB-порта. Мне нужно выполнять "Безопасное отключение устройства" от USB-порта. Подскажите как это делается или где об этом можно почитать.
Отправлен: 18.10.2006, 06:18
Вопрос задал: Nettler (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: sir henry
Здравствуйте, Nettler!
Управлять питанием никак. А вот безопасное извлечение вполне можно.
Зайдите на http://jedi-apilib.sourceforge.net/ и там скачайте scapi (Setup & Config Manager API). В архиве есть пример по безопасному извлечению, называется SafeRemoval.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 18.10.2006, 11:42


Вопрос № 59.315
Приветствую, камрады эксперты.

Больной вопрос назрел как чирей. Треба взрезать его с умением и пользой. Умение - от вас, польза - людям :-)
Итак.

Имею мысль: написать хитрую приблуду типа клиент-сервер, которая висит в на сервере и слушает порт. Соотвественно, на другом электронном болване - программа-клиент стукает в этот порт и шлет серверу данные. Но, так как опыта подобного программирования не имею ни полраза, хочу спросить:
1. Какие компоненты за все это отвечают?
2. Можно ли на всем этом реализовать собственное подобие протокола? Свои виды пакетов, коды, методы авторизации? Хотя, в общем, сиё некритично.
3. Основные ошибки начинающих в такого рода программировании.
4. Банальность скажу: ну, и ссылками, ссылками в мну покидайте.

Спасибо за потраченное с пользой время, мою благодарность улучшает вашу карму в режиме онлайн :-)
Отправлен: 18.10.2006, 08:14
Вопрос задал: Скип Кудета (статус: 1-ый класс)
Всего ответов: 6
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gladiator
Здравствуйте, Скип Кудета!
TClientSocket, TServerSocket из вкладки Internet в Дельфи.
Статей в интернете по этой теме море.
Ответ отправил: Gladiator (статус: 4-ый класс)
Ответ отправлен: 18.10.2006, 08:50

Отвечает: Кулаков Антон Сергеевич /SandroNec
Здравствуйте, Скип Кудета!

1. Для начала попробуте воспользоваться компонентами TCLientSocket и TServerSocket, сам с этого начинал, удобные в работе, и лекго можно написать свои обработчики событий (типа пришел файл, месаге, авторизация). Ну а в дальнейшем переходите на WinSock.

2. Можно попытаться
3. Их куча и перечеслять их нет смысла, от себя скажу одно, надо сделать в клиенте обработчик на подключение к серверу в блоке try except чтобы пользователя не пугать страшными англоязычными ошибками.
---------
Настоящий программист на вопрос - "можешь ли ты это сделать", всегда ответит - "да", а потом подумает как
Ответ отправил: Кулаков Антон Сергеевич /SandroNec (статус: 2-ой класс)
Ответ отправлен: 18.10.2006, 08:54
Оценка за ответ: 5

Отвечает: Monah
Здравствуйте, Скип Кудета!
Можно использовать компоненты Indy: idTCPClient, idTCPServer.
Но лучше, на мой взгляд, установить компоненты ServerSocket/ClientSocket. В Делфи, меню Component/Instal Packages жмем кнопку Add, Переходим в папку delphi /bin. Файл dclsockets70.bpl. Жмем ок и готово. Компоненты на вкладке Internet.
Свой портокол можно осуществить. Вообще же для работы в ClientSocet необходимо обрабатывать событие onRead, в нем обрабатывать Socket.Receive***.
Основные ошибки, это попытка обращения до установления связи.
Ответ отправил: Monah (статус: 5-ый класс)
Ответ отправлен: 18.10.2006, 09:00
Оценка за ответ: 5

Отвечает: Baduin
Здравствуйте, Скип Кудета!
Сам сталкивался с такой проблемой - писал прогу для посылки сообщений по сети (есть подобные проги в инете, но я хотел сам разобраться как это делается). Пользовался протоколом UDP ( в делфях сие дело поддерживается компонентами). Этот протокол похуже TCP (он не проверяет доставку и др.) но для меня вполне подошел. Могу кинуть исходники на мыло.
Ответ отправил: Baduin (статус: 1-ый класс)
Ответ отправлен: 18.10.2006, 09:45

Отвечает: Sattar
Здравствуйте, Скип Кудета!
Indy
http://docs.indyproject.org/
Ответ отправил: Sattar (статус: 1-ый класс)
Ответ отправлен: 18.10.2006, 10:15

Отвечает: sir henry
Здравствуйте, Скип Кудета!
1. Если речь идет об общераспространенных портах (почта, новости и т.п.), то лучше пользоваться специализированными компонентами INDY. Например для почты - TIdPOP3 и TIdSMTP. Если задумали нечто совершенно уникальное, то из той-же закладки INDY - TIdTCPServer и TIdTCPClient. Они дадут общее представление о работе в сети.
Когда все хорошо изучите, можно, ради разнообразия, перейти на более низкоуровневые компоненты, например TClientSocket, TServerSocket.
2. Можно, но не стоит. Накладные расходы на разработку очень велики, т.к. придется перечитать тонны документации, а вот выгода будет едва ли. Впрочем, все зависит от того, насколько грамотно Вы сможете поставить задачу.
3. Как и в других разделах программирования. :)
- Нечеткая постановка задачи,
- Незнание альтернативных методов,
- Отсутствие таблицы сравнения решения задачи тем или другим способом.
Все остальные ошибки легко исправимы в процессе заглядывания в хелп, о них даже упоминать не стоит. :)
4. Например delphiworld.narod.ru - большой сборник статей, в том числе и по работе с сетью.
www.delphikingdom.com - тоже агромадное хранилище информации, там надо поисковиком пользоваться. :)
http://www.sources.ru/delphi/delphi_network.shtml - примеры-исходники.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 18.10.2006, 11:13
Оценка за ответ: 5


Вопрос № 59.340
Добрый день! Подскажите как реализовать программу чтоб мультиязычным напримере Office MUI, мне интересно знать как они это реализовали. заранее спасибо!
Отправлен: 18.10.2006, 13:05
Вопрос задал: ERA (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Monah
Здравствуйте, ERA!
В файле, или в ресурсах программы сохраняешь заголовки на разных языках. В любом удобном виде. (ID001="Файл" или еще как), Потом при старте в onCreate перебираешь все компоненты и выставляешь значения. Можешь и вручную, если их не много. То же самое при смене языка. Проше всего хранить все в отдельном файле для каждого языка, или в секциях *.ini файла.
Ответ отправил: Monah (статус: 5-ый класс)
Ответ отправлен: 18.10.2006, 13:15

Отвечает: Хлызов Алексей
Здравствуйте, ERA!

<offtop> Пробуйте писать по-русски, легче будет понимать Ваш бред. </offtopic>

По сути: в Delphi есть такая вещь, как ITE (Integrated Translation Environment). Общий (приблизительный) смысл этого таков - каждая строка задается переменной, значение которой выбирается из определенного массива, в зависимости от кода используемого языка. На этом принципе работет очень много программных пакетов.
Ответ отправил: Хлызов Алексей (статус: 2-ой класс)
Ответ отправлен: 19.10.2006, 09:44


Вопрос № 59.345
Доброе время суток, уважаемые Эксперты.
Такой вопрос возник.
У TAction из TActionList в дизайнтайм есть свойство Enabled, а в рантайм его нету. Почему?
Нужно все пункты меню и кнопки на ToolBar, которые ссылаются на определенный TAction задать Enabled ссответственно равным аналогичному из TAction.
Точнее нужно пробежать по всем TAction и изменить свойство Enabled и соответственно всему, что на них ссылается.
Как это можно реализовать?
Отправлен: 18.10.2006, 13:31
Вопрос задал: Topa (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Mexes
Здравствуйте, Topa!
Если у Вас действие типа TAction, то Enabled никуда у неё не денется.
Возможно, Вы получили ссылку на этот объект, приведенную к TCustomAction или TContainedAction (именно такой тип хранит TActionList) - в этом случае Enabled действительно перестает быть видно. Приведите эту ссылку к типу TAction и измените свойство Enabled:

(ссылка_на_action as TAction).Enabled:=...;
или
TAction(ссылка_на_action).Enabled:=...;
Ответ отправил: Mexes (статус: 4-ый класс)
Ответ отправлен: 18.10.2006, 13:45
Оценка за ответ: 5
Комментарий оценки:
Сенкс, помогло

Отвечает: Werewolf
Здравствуйте, Topa!
Вы немного ошибаетесь
свойство Enabled есть и в runtime
просто если Action.OnExecute=nil то
Action.Enabled=false;
если ActionList.State=asNormal
попробуте поставить ActionList.State=asSuspendedEnabled
Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 18.10.2006, 13:50


Вопрос № 59.365
Здравствуйте! Я работаю с компонентом ТQuery для запроса к БД MySql, делаю Sql запрос все получается но я не знаю как результат запроса записать в текстовый файл. Моя программа работает как служба и поэтому я не могу использовать компонент DBGrid и другие ему подобные компоненты. Помогите пожалуйста. Заранее спасибо!
Отправлен: 18.10.2006, 16:54
Вопрос задал: Майтдинов Рашит (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, Майтдинов Рашит!

Попробуйте примерно такую конструкцию:

with Query do
begin
Active:=true;
First;
For i:=1 to RecordCount do
begin
writeln(fl,FieldByName('Название поля').AsString);
Next;
end;
end;

где Query - название Вашего TQuery...
fl - текстовый файл в который Вы записываете информацию.....

Если что то не понятно пишите в личку, либо в Мини-форум...

Удачи!!!
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Практикант)
Ответ отправлен: 18.10.2006, 17:04

Отвечает: Baduin
Здравствуйте, Майтдинов Рашит!
я советую следующим образом поступить, в процедуре сохранения написать:

procedure SaveQuery;
var List:TStrings; i:integer;
begin
List:=TStringList.Create;
List.Clear;
for i:=1 to Query.RecordCount do
List.Add('строка '+IntToStr(i)+Query.FieldByName('Name').AsString);
List.SaveToFile('c:file.txt'); //сохранение в файл
List.Free;
end;

И все, все данные в файле
Ответ отправил: Baduin (статус: 1-ый класс)
Ответ отправлен: 19.10.2006, 05:45
Оценка за ответ: 4


Вопрос № 59.375
Подскажите где моя ошибка.
В dll использую только тип WideString в параметрах и значение функций (обработка несколько строк xml). И еще две глобальные переменные, одну изменяю из вызывающего модуля (имя файла хранящий xml), а второй пользуются функции из dll (сам xml) (c xml работаю через MSXML). Все работает нормально, но вот при выходе из программы выдает ошибку: Project rised too many consecutive exceptions : 'access violation at ... read of address ...' . Функции загружаю статически.
Отправлен: 18.10.2006, 18:28
Вопрос задал: Negruzzi Cristian (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Gladiator
Здравствуйте, Negruzzi Cristian!
Возможно ты используешь ShareMem. При использовании типа WideString это не требуется.
Ответ отправил: Gladiator (статус: 4-ый класс)
Ответ отправлен: 19.10.2006, 08:05
Оценка за ответ: 5

Отвечает: Werewolf
Здравствуйте, Negruzzi Cristian!
попробуйте сделать Build вашей прогаммы и dll с пакетами vcl и rtl.
Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 19.10.2006, 14:26
Оценка за ответ: 4


Вопрос № 59.394
Здравствуйте эксперты!
Как можно организовать премещение объекта (н-р кнопка) при наведении на него мыши. Пробовал и position писать, как со scrollbar, но делфи не распознает. p.s компонент должен двигаться по заданной формуле (синусоидально, рандомом и т.д.). Помогите, плиз, кто знает.
Отправлен: 18.10.2006, 21:25
Вопрос задал: hairbaton (статус: 3-ий класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Monah
Здравствуйте, hairbaton!
Button1.left:=random(1024);
Button1.top:=random(768);
Остальное думаю сам осилишь.
Ответ отправил: Monah (статус: 5-ый класс)
Ответ отправлен: 18.10.2006, 21:51
Оценка за ответ: 5

Отвечает: Prosto_Blackhowk
Здравствуйте, hairbaton!
Обрабатывайте события onmousedown, onmousemove, onmousedown
Ответ отправил: Prosto_Blackhowk (статус: 2-ой класс)
Ответ отправлен: 18.10.2006, 22:10


Вопрос № 59.395
Здравствуйте эксперты!
Как можно организовать премещение объекта (н-р кнопка) при наведении на него мыши. Пробовал и position писать, как со scrollbar, но делфи не распознает. p.s компонент должен двигаться по заданной формуле (синусоидально, рандомом и т.д.). Помогите, плиз, кто знает.
Отправлен: 18.10.2006, 21:19
Вопрос задал: hairbaton (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, hairbaton!
За размеры и положение любого визуального компонента отвечают свойства:
Left, Top, Width, Height.
Вот их и изменяйте. А как он будет двигаться - уже не важно. Хоть вприсядку.
---------
Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Практикант)
Ответ отправлен: 18.10.2006, 23:47
Оценка за ответ: 5


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

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

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

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

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


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


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное