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

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


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

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

Выпуск № 737
от 15.02.2007, 11:35

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


Вопрос № 74949: Здравствуйте!!! Для соединения двух прог использую компаненты indy. Просмотрел несколько исходных текстов, но везде при написании клиента используют Timer. Что то типа этого: var st:string; begin st:=client.readln(); if st<&g...
Вопрос № 75005: Здравствуйте! Имеется TListBox. При загрузке будет заполняться списком из ФИО писателей. ФИО берутся из текстовых файлов. Один файл на автора. При щелчке на элементе ListBox будет открываться окошко, которое будет заполняться данными из файла.<br...
Вопрос № 75055: Доброго времени суток!Вопрос такой:при сворачивании программы на панель задач на панели задач отображаетя иконка программы и назание программы.Как сделать что бы вместо этого имени отображался какой нибудь процесс,например чтобы там отоб...

Вопрос № 74.949
Здравствуйте!!!
Для соединения двух прог использую компаненты indy. Просмотрел несколько исходных текстов, но везде при написании клиента используют Timer. Что то типа этого:
var st:string;
begin
st:=client.readln();
if st<>'' then memo1.lines.add(st).

Но дело в том, что клиент зависает, вызвав функцию readln. и не получив никаких данных.
Как выйти из этой ситуации? Если это имеет значение у меня 7 делфи. Сервер висит под XP а клиент запускается с 98.
Отправлен: 09.02.2007, 13:40
Вопрос задал: Prowler (статус: 8-ой класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Балашов Григорий
Здравствуйте, Prowler!
Попробуйте изменить код следующим образом (для Indy 10):

var
st: string;
begin
if not IdTCPClient1.IOHandler.Readable(100) then Exit;
st := IdTCPClient1.IOHandler.ReadLn;
end;

Метод Readable проверяет, есть ли данные в буфере чтения, и если есть, вернет true, НЕ ЧИТАЯ ДАННЫЕ из буфера. Выбираем их с помощью Readln. В данном примере интервал ожидания данных составляет 100 миллисекунд.
Вообще использование таймера не очень хорошая идея, лучше использовать потоки.
P.S.: C Delphi 7 обычно поставляется Indy 9, а пример для Indy 10. Скачайте новую версию Indy с сайта разработчика.
Ответ отправил: Балашов Григорий (статус: 1-ый класс)
Ответ отправлен: 09.02.2007, 18:14


Вопрос № 75.005
Здравствуйте!
Имеется TListBox. При загрузке будет заполняться списком из ФИО писателей. ФИО берутся из текстовых файлов. Один файл на автора. При щелчке на элементе ListBox будет открываться окошко, которое будет заполняться данными из файла.
Как привязать элемент к какому-либо файлу? Код не нужен, приведите пример "на словах".
Отправлен: 09.02.2007, 21:47
Вопрос задал: Yadovit (статус: 3-ий класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Bushmen
Здравствуйте, Yadovit!
Здесь ты можешь пойти разными способами во первых ты можешь при выборе из ListBox брать его номер и по номеру читать файл или по его значению - ФИО. Удачи
Ответ отправил: Bushmen (статус: 1-ый класс)
Ответ отправлен: 09.02.2007, 22:16
Оценка за ответ: 3

Отвечает: Mo-skin
Здравствуйте, Yadovit!
Я предлагаю такой вариант:
Создаете список строк (StringList:=TStringList.Create), и, когда формируете LIstBox, паралельно
в StringList записаваете пути к файлам.
в итоге получится:
ListBox.Items[25] = 'Пушкин АС/DC' и StringList[25]='c:/book/pushkin.txt'
Т. е. каждому элементу ListBox соответствует этемент StringList.
P/S Можно использовать массив вместо списка строк, но ,естественно, тогда его придется изначально ограничивать...
---------
Чем больше женщину мы меньше, тем меньше больше мы ее!
Ответ отправил: Mo-skin (статус: 3-ий класс)
Ответ отправлен: 09.02.2007, 22:32
Оценка за ответ: 5

Отвечает: monah
Здравствуйте, Yadovit!
Можно хранить данные в файлах, имя которого совподает с именем писателя. Например Пушкин AC.dat
---------
festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 10.02.2007, 06:14

Отвечает: Синельников Сергей
Здравствуйте, Yadovit!

Добавлять элементы в список следует методом AddObject, который помимо текста добвляет указатель на объект. Ну а объектом может быть все что угодно, в том числе и строчка с именем файла. В хелпе есть примеры.
Ответ отправил: Синельников Сергей (статус: 3-ий класс)
Ответ отправлен: 10.02.2007, 07:17
Оценка за ответ: 5


Вопрос № 75.055
Доброго времени суток!Вопрос такой:при сворачивании программы на
панель задач на панели задач отображаетя иконка программы
и назание программы.Как сделать что бы вместо этого имени
отображался какой нибудь процесс,например чтобы там отображалось
то же что и в строке EDIT.И еще хотелось бы что бы моя программа
запускалась сама после того как произойдет соединение с интернетом
слышал о процедуре FINDFORM но не знаю поможет ли она в этом случае
и вообще как ею пользоваться.Спасибо!
Отправлен: 10.02.2007, 11:07
Вопрос задал: Байрашевский Тахир (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ерёмин Андрей
Здравствуйте, Байрашевский Тахир!
Текст на кнопке программы в панели задач - это не что иное как заголовок приложения. Он доступен из объекта Application. Изменять его можно так:
Application.Title:='Text';
Связать с TEdit можно например так. Выберите TEdit и создайте для него событие OnChange (можно просто сделать двойной щелчок), а в шаблон процедуры вписать код (то, что нужно дописать подчёркнуто):
procedure TForm1.Edit1Change(Sender: TObject);
begin
Application.Title:=Edit1.Text;
end;

Теперь при изменении текста в Edit1 заголовок будет изменяться соответственно.
Желаю удачи!
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом.
ICQ: 286867644
----
Ответ отправлен: 10.02.2007, 11:52
Оценка за ответ: 5


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

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

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

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

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


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


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

В избранное