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

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


Информационный Канал Subscribe.Ru

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

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

Выпуск № 194
от 29.07.2005, 20:30

Администратор:Калашников О.А.
В рассылке:Подписчиков: 222, Экспертов: 36
В номере:Вопросов: 4, Ответов: 12


Вопрос № 23931: Здравствуйте, уважаемые эксперты! У меня к вам такой вопрос. У меня есть устройство (ИК приёмник), подключаемое к COM порту. Если загрузить Windows, а затем вместо подключённого к этому порту модема подключить устройство, моя программа не работет...
Вопрос № 23932: Всем летний привет и отличного настроения. Прочитал в рассылке о нитях (трэдах), сразу че то непонял. Это две процедуры одновременно или как понимать, как реализовывается многозадачность процессов. В двух словах разъясните пожалуста. Если мона пример...
Вопрос № 23970: Здраствуйте уважаемые эксперты, ShowCursor прячет курсор мышки только на форме, как зделать чтобы ShowCursor прятал бы мышку и на десктопе...
Вопрос № 23973: Привет все. Есть Listbox. В строках храняться полные пути определенных файлов. Так вот подскажите как удалить эти все файлы? Приветствуется исходник....

Вопрос № 23.931
Здравствуйте, уважаемые эксперты!
У меня к вам такой вопрос. У меня есть устройство (ИК приёмник), подключаемое к COM порту. Если загрузить Windows, а затем вместо подключённого к этому порту модема подключить устройство, моя программа не работет(в частности ф-ция WaitCommEvent). Но если запустить программу, работающую с этим устройством(WinLIRC), то она работает и моя программа после неё работает. В чём может быть проблемма? Пробовал открывать-закрывать порт, ф-ции PurgeComm, SetCommMask но всё безрезультатно! Помогите! Спасибо за ответы!
Отправлен: 23.07.2005, 21:23
Вопрос задал: Ермаков Алексей (статус: Посетитель)
Всего ответов отправлено: 1

Отвечает: sir henry
Здравствуйте, Ермаков Алексей!
Дело в том, что после включения виндоус создает список устройств которые активны (или подключены). И если Вы потом меняете какое-то устройство необходимо сделать рескан системы (в w2k/xp - "Мой комп - управление - Диспетчер устройств - Обновить конфигурацию оборудования"). Если Вы при включении виндоус включаете ее с ик-приемником, а потом попытаетесь работать с модемом, то тоже не сможете, т.к. зарегестрирован на этот порт будет не модем, а ик-приемник.
Как провести програмно пересканирование устройств я не знаю - поищите в инете. :)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.07.2005, 07:45


Вопрос № 23.932
Всем летний привет и отличного настроения. Прочитал в рассылке о нитях (трэдах), сразу че то непонял. Это две процедуры одновременно или как понимать, как реализовывается многозадачность процессов. В двух словах разъясните пожалуста. Если мона пример, любоханький, чтобы скушать а то тяжко. Заранее пасибки.
Отправлен: 23.07.2005, 21:55
Вопрос задал: KolesnikovAV (статус: Посетитель)
Всего ответов отправлено: 3

Отвечает: Denisss
Здравствуйте, KolesnikovAV!
Это нечто похожее на "две процедуры одновременно". Т.е., для Вас кажется, что обе процедуры выполняются одновременно, а на самом деле, просто-напросто Windows распределяет между двумя потоками (трэдами, нитями) процессорное время, в зависимости от приоритета потока.
Пример работы с потоками есть у Вас в папке %Delphi%DemosThreads
Ответ отправил: Denisss (статус: Студент)
Отправлен: 23.07.2005, 22:22
Оценка за ответ: 5
Комментарий оценки:
пасибки тебе, тока маленькое продолжение - не будет ли делфя матерится если одновременно используется одна и та же библиотека, к примеру чарт

Отвечает: sir henry
Здравствуйте, KolesnikovAV!
Нити (потоки, трэды...) - это две (или больше) процедуры выполняемые КАК БЫ одновременно. Дело в том, чтобы распаралелить задачи, нужно минимум два процессора. Чтобы можно было делать несколько задач одновременно на одном процессоре, был придуман ловкий ход - каждой задаче процессор выделяет определенное количество времени (например по 10 милисекунд), в течении которого задача работает, а потом ждет своей очереди и киснет в бездействии.
Если Вы явным образом не указываете, что Ваши процедуры должны работать в разных потоках (применительно к Дельфи - это создание нескольких объектов типа TThread), то все, что Вы написали выполняется последовательно, одно за другим в рамках главного потока программы. Если же Вы выполнение каких-то процедур запихнули в TThread (отдельные потоки), то каждому потоку выделяется дополнительное время для его выполнения.
Если программы не сильно грузит систему (т.е. в Диспетчере задач Вы видите, что у Вас "Бездействие системы" составляет значительный процент процессорного времени), то с помощью потоков можно добиться ощутимого прироста производительности. А вот если процент "Бездействие системы" стремиться к нулю, то будет совершенно по барабану используете Вы потоки или нет, т.к. время процессора будет выделятся за счет какого-либо другого процесса и общее время выполнения, в конечном итого, окажется тоже самое.
Веселый пример с потоками приведен в приложении. В составе Дельфи, в каталоге Demos, тоже есть пример работы с потоками (каталог Threads).

Приложение:

Ответ отправил: sir henry (статус: Профессор)
Отправлен: 24.07.2005, 08:10

Отвечает: Kazarov Vitaliy
Здравствуйте, KolesnikovAV!
В общем-то да... получается как бы параллельная основной программе подпрограмма. Основная программа продолжает отвечать на действия юзера, в то время как в треде выполняется какой-либо цикл, например for(). Пример есть в дистрибутиве Delphi.
Ответ отправил: Kazarov Vitaliy (статус: 2-ой класс)
Отправлен: 25.07.2005, 09:25


Вопрос № 23.970
Здраствуйте уважаемые эксперты, ShowCursor прячет курсор мышки только на форме, как зделать чтобы ShowCursor прятал бы мышку и на десктопе
Отправлен: 24.07.2005, 17:16
Вопрос задал: Станислав (статус: 1-ый класс)
Всего ответов отправлено: 2

Отвечает: Gin

Здравствуйте, Станислав!

Одной строкой (из простейшего, чтоб не писать несколько):

SetCursorPos(1600, 1600); // Устанавливайте по-Больше сдвиг курсора.

С Уважением, Gin.
Ответ отправил: Gin (статус: Студент)
Отправлен: 24.07.2005, 19:18
Оценка за ответ: 5

Отвечает: Ddeedd
Здравствуйте, Станислав!

К сожалению, как я ни пыталься - спрятать через ShowCursor/SetCursor не удалось, но есть еще 2 варианта: если просто надо, чтобы курсор на экране не мешался - можно его запереть через ClipCursor в правом нижнем углу(например в 1 точке), если же нужно, чтобы он все-таки двигался - придется понапрягаться - с помощью SetSystemCursor можно установить для всех стандартных курсоров винды любой другой, например созданный через CreateCursor пустой курсор. Таким образом, вместо большинства курсоров будет ваш пустой. Через LoadCursor загрузив все стандартный курсоры предварительно куда-нибудь, потом ставите их на место.
Ответ отправил: Ddeedd (статус: 2-ой класс)
Отправлен: 24.07.2005, 19:24
Оценка за ответ: 5


Вопрос № 23.973
Привет все.
Есть Listbox. В строках храняться полные пути определенных файлов. Так вот подскажите как удалить эти все файлы? Приветствуется исходник.
Отправлен: 24.07.2005, 18:57
Вопрос задал: CJ (статус: Студент)
Всего ответов отправлено: 6

Отвечает: Gin

Здравствуйте, CJ!

Используйте свойство Clear. Например:

procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.Items.Clear;
end;

С Уважением, Gin.

Ответ отправил: Gin (статус: Студент)
Отправлен: 24.07.2005, 19:39
Оценка за ответ: 3
Комментарий оценки:
Я же сказал, что надо удалить файл, а не запись в списке. Внимательнее надо. :)

Отвечает: Ddeedd
Здравствуйте, CJ!

Например, так:

var i: Integer;
lb: TListBox;
begin
for i:=0 to lb.Items.Count-1 do
DeleteFile(lb.Items.Item[i], true);
lb.Items.Clear;
end;

Это УДАЛИТ файлы(с диска). Если вы это хотели.
Ответ отправил: Ddeedd (статус: 2-ой класс)
Отправлен: 24.07.2005, 19:52
Оценка за ответ: 5
Комментарий оценки:
Благодарю.

Отвечает: sir henry
Здравствуйте, CJ!
Удалить можно самым элементарным образом, например с помощью функции
DeleteFile('Путь и имя файла');
:)
Ответ отправил: sir henry (статус: Профессор)
Отправлен: 25.07.2005, 05:35

Отвечает: streetcat
Здравствуйте, CJ!
если я все правильно понял то решение проще простого: цикл for..to
на форме listbox1 и кнопка button1. исходник модуля смотри в приложении. Для удаления файла служит функция DeleteFile(FileName: string).

Приложение:

Ответ отправил: streetcat (статус: 8-ой класс)
Отправлен: 25.07.2005, 14:06

Отвечает: xXx
Здравствуйте, CJ!
Зделай цикл, см. приложение (примерно):

Приложение:

Ответ отправил: xXx (статус: 3-ий класс)
Отправлен: 25.07.2005, 14:45

Отвечает: Denis Hakimov
Здравствуйте, CJ!
используй функцию
function DeleteFile(const FileName: string): Boolean;{просто удаляет файл с именем FileName}.
количество строк, если я не ошибаюсь в свойстве Items.Count содержится =>
for i:=0 to (ListBox1.Items.Count-1) do
begin
DeleteFile(ListBox1.Items[i]);
end;
самый простой вариант. надеюсь хоть чем то помог.
Ответ отправил: Denis Hakimov (статус: 1-ый класс)
Отправлен: 25.07.2005, 14:56


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

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

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

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

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


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


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.delphiplus
Отписаться
Вспомнить пароль

В избранное