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

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


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

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

Выпуск № 485
от 27.05.2006, 21:05

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


Вопрос № 43789: Добрый вечер. Есть проблема. При установке компонентов выдается ошибка [Error] CORELBUT.PAS(25): Unit identifier 'CorelButton' does not match file name [Fatal Error] dclusr.dpk(37): Could not compile used unit 'CorelbtnCORELBUT.PAS'<...
Вопрос № 43793: Здравствуйте эксперты ! Вопрос такой к Вам: есть у меня файл Exelевский, как мне использовать из программы, чтобы работать с ним как с шаблоном, и подставлять свои значения только в определенные ячейки этого файла. Буду рад приме...
Вопрос № 43799: Здравствуйте, уважаемые эксперты! У меня есть простая программа, которая последовательно перебирает все текстовые файлы {FindFirst, FindNext} в своей папке, открывает их, читает {AssignFile, Reset, ReadLn}, и, выудив какую-то информацию, сохраняе...
Вопрос № 43829: Здравствуйте, господа Эксперты! Возник такой вопрос: имеется несколько Label`ов, при наведении каждый должен менять цвет и подчеркиваться. Можно ли прописать это в одно отдельную поцедуру, а не писать для каждого OnMouseEnter? Присвоить через Object ...
Вопрос № 43832: Здравствуйте, уважаемые эксперты. Вы не подскажите, что это за структура - "TOverlapped" Как и где ее используют? Заранее благодарен....
Вопрос № 43853: Здраствуйте эксперты! вопрос в следуещем: как сделать окно допустим в виде трапеции и чтобы оно не было видимым + на форму поместить *.gif рисунок. Желательно приведите пример. Заранее спасибо...

Вопрос № 43.789
Добрый вечер.
Есть проблема.
При установке компонентов выдается ошибка
[Error] CORELBUT.PAS(25): Unit identifier 'CorelButton' does not match file name
[Fatal Error] dclusr.dpk(37): Could not compile used unit 'CorelbtnCORELBUT.PAS'

итак любая компонента. Подскажите вчем моя ошибка или ошибка в установке.
Delphi 6

Заранее благодарен.
Отправлен: 21.05.2006, 23:37
Вопрос задал: Алексеев Александр Владимирович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Алексеев Александр Владимирович!
Я думаю, что дело в том, что основной unit компонента называется CORELBUT.PAS, а в тексте модуля стоит строка: unit CorelButton.
Сделайте оба имени одинаковыми - будет работать.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: 6-ой класс)
Ответ отправлен: 22.05.2006, 01:05
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо. Все получилось


Вопрос № 43.793
Здравствуйте эксперты !

Вопрос такой к Вам:
есть у меня файл Exelевский, как мне использовать из программы, чтобы
работать с ним как с шаблоном, и подставлять свои значения только в определенные ячейки этого файла.
Буду рад примеру или ссылке на пример.
Заранее спасибо.
Дельфи 7.
Отправлен: 22.05.2006, 01:03
Вопрос задал: Муратов Радик Анатольевич/Мустафа (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Муратов Радик Анатольевич/Мустафа!

Для записи в какую либо ячейку, просто присвойте ей соответствующее значение. Лучше всего Excel "понимает" строки, поэтому при записи чисел лучше присваивать IntToStr(integer);
Описанный метод подключения к экселю - позднее связывание. Метод не самый лучший. Если будете писать какие-то серьезные приложения, то используйте подключения к OLE Automation Servers с помощью компонент TExcelApplication, TExcelDocument etc. Тем более, что это худо-бедно описано в Delphi help, а так придется каждый раз лезть в инет, чтобы узнать, как сделать то-то и то-то.

Приложение:

Ответ отправил: Сухомлин Кирилл Владимирович (статус: 6-ой класс)
Ответ отправлен: 22.05.2006, 05:23

Отвечает: RSV
Здравствуйте, Муратов Радик Анатольевич/Мустафа!
Работа с Excel хорошо описана на Королевстве Делфи ( http://www.delphikingdom.com/asp/section.asp?id=16 ) в статьях "По волнам интеграции"
Ответ отправил: RSV (статус: 1-ый класс)
Ответ отправлен: 23.05.2006, 14:13


Вопрос № 43.799
Здравствуйте, уважаемые эксперты!
У меня есть простая программа, которая последовательно перебирает все текстовые файлы {FindFirst, FindNext} в своей папке, открывает их, читает {AssignFile, Reset, ReadLn}, и, выудив какую-то информацию, сохраняет все в еще один некий файл в той же папке. Алгоритм обработки несложный. Фактически, файлы являются документами хтмл и программа читает внутренний текст некоторых тегов.
В частности, в приведенном ниже примере она обрабатывает ~700 файлов, каждый размером 30-100кб.
Внимание, вопорс: Почему на машинах c непринципиально различной конфигурацией, скорость принципиально различная?
Детали конфигураций в приложении.
Дополнительный вопорс: как переписать программу(мб использовать TFileStream?), чтобы на машине с более "медленной" конфигурацией работало не так медленно?
Буду рад получить полезные ссылки по тематике данного вопроса.

Приложение:

Отправлен: 22.05.2006, 05:45
Вопрос задал: Сухомлин Кирилл Владимирович (статус: 6-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Николай Б.
Здравствуйте, Сухомлин Кирилл Владимирович!
Не согласен: конфигурация очень даже различается!
Если представить, что у Вас такие параметры:
проц: AMD Barton 2.2GHz / intel Celeron 2.0GHz
память: 2x512MB DDR400 / 512MB DDR400
....
то на первой машине уже выигрыш в скорости получается в 2 раза, особенно, если учитывать, что Delphi-приложения используют много ОЗУ.
А на изменении скорости:
проц: AMD Barton 3200+ GHz / intel Celeron 2.0GHz
память: 2x512MB DDR400 / 512MB DDR400
Получается остальной выигрыш.
Ещё хочу обратить Ваше внимание на следующее: процессор celeron 2.0 GHz слабее, чем проц. AMD 2.0 GHz! (т.к. у первого кэш меньше).
Удачи!

---------
Недавно прошёл тест на IQ. Результат отрицательный.
Ответ отправил: Николай Б. (статус: 9-ый класс)
Ответ отправлен: 22.05.2006, 06:10

Отвечает: sir henry
Здравствуйте, Сухомлин Кирилл Владимирович!
Категорически не согласен на счет непринципиального различия - оно более чем принципиальное. Celeron, даже по сравнению с Sempron с аналогичной частотой, работает заметно медленнней. П уж если речь идет о сравнении его AMD Barton, ну это примерно как Волга ГАЗ-24 и BMW пятерка. :)
Попробуйте загружать файлы в StringList. У этого компонента есть метод Find, который позволит Вам быстро отыскивать необходимые тэги. Мало того, в этом компоненте Вы можете обрабатывать строки в произврльном порядке, в отличие от непосредственно текстового файла, где все строки обрабатываются последовательно.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.05.2006, 06:25


Вопрос № 43.829
Здравствуйте, господа Эксперты! Возник такой вопрос: имеется несколько Label`ов, при наведении каждый должен менять цвет и подчеркиваться. Можно ли прописать это в одно отдельную поцедуру, а не писать для каждого OnMouseEnter? Присвоить через Object Inspector Event нельзя. Заранее спасибо!
Отправлен: 22.05.2006, 11:15
Вопрос задал: Neiroman (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, Neiroman!
Присвоить через Object Inspector прекрасно получается, когда создаете обработку события для OnMouseEnter или OnMouseLeave в инспекторе появляется строка вида Label1MouseEnter. Нужно стать на Label2, напротив нужного события в инспекторе из выпадающего меню выбрать нужное, созданое для Label1. А в обработчиках событий ввести следующий код:

procedure TFMain.Label1MouseEnter(Sender: TObject);
begin
(Sender as TLabel).Font.Style := (Sender as TLabel).Font.Style + [fsUnderline];
(Sender as TLabel).Font.Color := clBlue;
end;

procedure TFMain.Label1MouseLeave(Sender: TObject);
begin
(Sender as TLabel).Font.Style := (Sender as TLabel).Font.Style - [fsUnderline];
(Sender as TLabel).Font.Color := clBlack;
end;

Удачи!
---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 4-ый класс)
Ответ отправлен: 22.05.2006, 11:37

Отвечает: Caleb
Здравствуйте, Neiroman!

Не понятно одно, почему нельзя присваивать одно событие к остальным label'ам через Object Inspector?

создаете процедуру для одного Label'а и затем присваеваете ее к остальным.
У меня все работало. В общем в приложении показан пример, с присвоением процедуры обработки мыши в ручную (Программным методом).
Создайте новый проект, киньте на него 4 label'а (Только не переменовывайте их), затем замените текст проекта на тот, что в приложении и поставьте в Object Inspector событие onformCreate для Form1 равному процедуре formcreate

Удачи.

P.S. Если и Label'ы создавать в ручную, то программу можно организовать циклом и тогда несколько строк программы будет нормально работать хоть для 1000 динимически созданных label'oв.

Приложение:

Ответ отправил: Caleb (статус: 1-ый класс)
Ответ отправлен: 22.05.2006, 13:25

Отвечает: sir henry
Здравствуйте, Neiroman!
Если нельзя присвоить в DesignTime то сделайте это в RunTime. Просто напишите процедуру, выполняющую необходимый действия, а в коде модуля напишите:
Var
Labels: array[0..9] of TLabel;
Begin
For i:=0 To Length(Labels)
Label[i].OnMouseEnter:=MyProc;
End;
Где MyProc и будет написаная Вами процедура.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.05.2006, 13:52

Отвечает: Serg_6667
Здравствуйте, Neiroman!
Возможно такое решение:

создаете отдельную процедуру-обработчик. Например proc(....).
Параметры должны соответствовать.
В FormCreate или FormActivate прописываете:
label1.onmouseenter := proc;
label2.onmouseenter := proc;
label3.onmouseenter := proc;
Еще проще - зажимаете Shift, выделяете все нужные лэйблы, открываете Objecr Inspector вкладку Events и щелкаете в поле OnMouseEnter. Так тоже будет работать
Ответ отправил: Serg_6667 (статус: 1-ый класс)
Ответ отправлен: 22.05.2006, 16:37

Отвечает: RSV
Здравствуйте, Neiroman!

procedure TForm.LabelMouseEnter(Sender: TObject);
begin
TLabel(Sender).Color:= clNavy;
TLabel(Sender).Font.Color:= clYellow;
end;

Для каждого Label событие OnMouseEnter -> LabelMouseEnter.

Ответ отправил: RSV (статус: 1-ый класс)
Ответ отправлен: 23.05.2006, 14:37


Вопрос № 43.832
Здравствуйте, уважаемые эксперты.
Вы не подскажите, что это за структура - "TOverlapped"
Как и где ее используют?

Заранее благодарен.
Отправлен: 22.05.2006, 11:39
Вопрос задал: Solodov Evgeniy Vladimirovich (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Solodov Evgeniy Vladimirovich!
Описание этой структуры Вы можете посмотреть в справке по WinAPI (прилагается к Дельфи). Эта структура используется как параметр к тем функциям, который оперируют асинхронным вводом/выводом, например GetOverlappedResult() - эта функция возвращает результат работы с файлом-портом-каналом. Т.е. можно пустить самотеком выполнятся какие-либо файловые операции, а самому время от времени проверять результат, а не ждать, когда этот результат будет, в случае синхронноно обращения к файлу.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 22.05.2006, 13:46
Оценка за ответ: 5
Комментарий оценки:
спасибо за ответ


Вопрос № 43.853
Здраствуйте эксперты! вопрос в следуещем: как сделать окно допустим в виде трапеции и чтобы оно не было видимым + на форму поместить *.gif рисунок. Желательно приведите пример. Заранее спасибо
Отправлен: 22.05.2006, 14:09
Вопрос задал: Barbos (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gh0stik
Здравствуйте, Barbos!

Смотрите приложение в котором как Вы и просили рисуется окно в виде трапеции.

По поводу "...чтобы оно не было видимым ..." - Form1.Visible:=False;

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаються события на земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: 8-ой класс)
Ответ отправлен: 22.05.2006, 16:03

Отвечает: Serg_6667
Здравствуйте, Barbos!

На счет прозрачности окна. Может, поможет.
http://soft32.ru/delphi.shtml?topic=app&title=transparent_win
Ответ отправил: Serg_6667 (статус: 1-ый класс)
Ответ отправлен: 22.05.2006, 16:48

Отвечает: Ерёмин Андрей
Здравствуйте, Barbos!
Окно нестадартной формы делается с помощью регионов - формируется группа необходимых контуров. А ещё есть хороший компонент: Shaped Form. Также прочтите вот эту статью: http://www.delphi.int.ru/?name=articles&action=view&articleid=4
Для размещения gif-изображения на форме воспользуйтесь следующим компонентом: Gif Image.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 22.05.2006, 17:24


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

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

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

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

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала 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.33 от 25.05.2006
Яндекс Rambler's Top100

В избранное