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

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


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

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

Выпуск № 534
от 16.07.2006, 23:35

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


Вопрос № 48774: Доброго времени суток уважаемые эксперты. В моей программе используются "экзотические" шрифты, которых у других пользователей естественно нет. Каким образом их установить програмно без их ведома, и не потребуются ли для этого права админист...
Вопрос № 48775: Здравствуйте уважаемые эксперты. Можно ли и каким образом изменить скроллбары компонент у которых недоступны такие свойства? (В смысле VertScrollBar и HorzScrollBar) Я слышал, что можно с помощью API. Может подскажете как именно, а может кто знает сп...
Вопрос № 48805: Здравствуйте! В Delphi есть фукции Hi и Lo, которые возвращают первый и воторой байт Переменной Integer. Поскажите пож. функци, которая делает обратное. Из двух переменных типа Byte переводит в одну переменную типа Integer. Обединяет ...
Вопрос № 48808: Здравствуйте. Дело в том, что моя Дельфи 6 совершенно не желает грузиться, заявляя по этому поводу следующее: “Точка входа в процедуру @Sysutils@CheckWin32Version$qqrii не найдена в библиотеке DLL rtl60.bpl.” Не пользовался ей длительное...
Вопрос № 48816: Добый день уважаемые эксперты! Подскажите пожалуйста, как проиграть в Delphi7 файлы ogg и wma. Можна ли воспользоватся компонентом MediaPlayer? Заранее спасибо...
Вопрос № 48817: Добрый день, ув. эксперты... Возник такой вопрос... Есть форма, на нее ставлю панель, размер панели маленький. Как реализовать что бы при разворачивании формы и возвращении в исходное положение панель была всегда в центре... Буду признате...
Вопрос № 48839: Здраствуй народ. Есть файлы типа XML, в них находится список. Скажите как мне в Delphi 7 получить данные из этих файлов? Я не разбирался раньше с эти - нужды небыло, а сейчас появилась. Где почитать про это?...

Вопрос № 48.774
Доброго времени суток уважаемые эксперты. В моей программе используются "экзотические" шрифты, которых у других пользователей естественно нет. Каким образом их установить програмно без их ведома, и не потребуются ли для этого права администратора.
Отправлен: 11.07.2006, 02:14
Вопрос задал: Попцов Иван (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Попцов Иван!
Как установить совсем без ведома пользователей, я не знаю. Но вообще, на мой взгляд это очень и очень неправильно. Потому что, например, пользователь может посмотреть список установленных шрифтов и очень удивиться, обнаружив там что-то, чего он лично не ставил.
А вообще, для установки шрифта, насколько я знаю, достаточно скопировать его в папку %WinDir%system32fonts
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 11.07.2006, 03:27
Оценка за ответ: 4
Комментарий оценки:
Уже подсказали. Но всё равно спасибо.

Отвечает: Ерёмин Андрей
Здравствуйте, Попцов Иван!
Установить шрифт в систему очень легко. Для существует специальные API-функции. Лучше всего подключать шрифт при запуске программы и отключать его при выходе. В этом случае пользователь его и не заметит. А делается это так:
AddFontResource(ExtractFilePath(Application.ExeName)+'myfont.ttf');
...
RemoveFontResource(ExtractFilePath(Application.ExeName)+'myfont.ttf');

В параметрах обеих функций нужно указать полный путь к файлу шрифта. Копировать в каталог Fonts файл шрифта НЕ нужно.
---------
Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор)
Россия, Тула
WWW: Программирование на DELPHI: Всё для программиста.
ICQ: 286837644
----
Ответ отправлен: 11.07.2006, 07:56
Оценка за ответ: 5
Комментарий оценки:
Спасибо огромное. Именно то, что нужно.


Вопрос № 48.775
Здравствуйте уважаемые эксперты. Можно ли и каким образом изменить скроллбары компонент у которых недоступны такие свойства? (В смысле VertScrollBar и HorzScrollBar) Я слышал, что можно с помощью API. Может подскажете как именно, а может кто знает способ попрощще?
Отправлен: 11.07.2006, 02:22
Вопрос задал: Попцов Иван (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Melamed
Здравствуйте, Попцов Иван!
Если у предков коипонетов присутсвуют свойства VertScrollBar и HorzScrollBar, то можно написать потомок этого компонента (см. приложение) или воспользоваться API функцией

или воспользоваться компонентом TscrollBox и в обрабодчике его OnScrol выпольнить необходимые действия. Да, распологать его следует около компонента, у которого вы хотите иметь п&# 1086;лосу прокрутки

Приложение:

Ответ отправил: Melamed (статус: 2-ой класс)
Ответ отправлен: 11.07.2006, 16:27
Оценка за ответ: 4
Комментарий оценки:
Не понятно, но всё равно спасибо.
Может кто знаком с этой самой API функцией?


Вопрос № 48.805
Здравствуйте!
В Delphi есть фукции Hi и Lo, которые возвращают первый и воторой байт Переменной Integer.
Поскажите пож. функци, которая делает обратное.
Из двух переменных типа Byte переводит в одну переменную типа Integer.
Обединяет их.
Спасибо
Отправлен: 11.07.2006, 11:37
Вопрос задал: Vasiliy (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: IUnknown
Здравствуйте, Vasiliy!

intAnswer := HiByte * 256 + LoByte
---------
я не специалист
Ответ отправил: IUnknown (статус: 5-ый класс)
Ответ отправлен: 11.07.2006, 12:10
Оценка за ответ: 5

Отвечает: Physicist
Здравствуйте, Vasiliy!

Для обратного преобразования используйте такую функцию:

Приложение:

Ответ отправил: Physicist (статус: 4-ый класс)
Ответ отправлен: 11.07.2006, 12:23
Оценка за ответ: 5

Отвечает: METALLDOCTOR
Здравствуйте, Vasiliy!
А вы ничего не перепутали? Дело в том, что Byte - беззнаковый целый тип, занимает 8 бит, а Integer - знаковый целый тип, занимающий 32 бита, то есть в 4 раза больше. (вырезка из справки в приложении)

Но есть, например, метод получать, например Word из Byte: значение первого байта домножить на два в восьмой(этим сместить байт влево на 8 позиций), прибавить к нему второй байт и присвоить это всё Word'у.

Приложение:

---------
Ни о чём не жалею!

Ответ отправил: METALLDOCTOR (статус: 4-ый класс)
Ответ отправлен: 11.07.2006, 12:23
Оценка за ответ: 5

Отвечает: sir henry
Здравствуйте, Vasiliy!
Hi() и Lo() возвращают СТАРШИЙ и МЛАДШИЙ байт значения. Это не тоже самое, что первый и второй байт.
Впрочем, эти функции не различают двух и четырехбайтовые переменные.
Такой функции нет, но Вы можете сами ее составить, путем сдвига влево первого значения на 8 позиций с помощью оператора SHL и суммированием со вторым значением. Что-то типа:
Function TwoBytes(a, b: Byte): word;
Begin
Result:=a;
Result:=(Result shl 8) + b;
End;
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 11.07.2006, 12:35
Оценка за ответ: 5


Вопрос № 48.808
Здравствуйте.
Дело в том, что моя Дельфи 6 совершенно не желает грузиться, заявляя по этому поводу следующее:
“Точка входа в процедуру @Sysutils@CheckWin32Version$qqrii не найдена в библиотеке DLL rtl60.bpl.”
Не пользовался ей длительное время, возможно, причина в нескл. заплатках установленных с сайта Микрософт за этот период…
Буду благодарен за участие.
Отправлен: 11.07.2006, 11:54
Вопрос задал: Пухов Фома Кузьмич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Coupler
Здравствуйте, Пухов Фома Кузьмич!
Судя по всему, это довольно распространенная проблема. С моей дельфей такое случалось пару раз, и в обоих случаях помогла замена rtl60.bpl на исходный (тот, который входит в установку). Если хотите, могу выслать rtl60.bpl на email (~300 кб). Конечно, поможет переустановка, но перед этим нужно удалить все bpl-ки, относящиеся к этой дельфе (предварительно сохранив из в другом месте на случай чего).
Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 11.07.2006, 12:19

Отвечает: sir henry
Здравствуйте, Пухов Фома Кузьмич!
Просто возмите из дистрибутива файл rtl60.bpl и замените им тот, на который ругается Дельфи. Или поставьте сервис пак Борланда для Дельфи 6. Второе предпочтительнее, т.к. будут исправлены мелкие козявки в Дельфи.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 11.07.2006, 12:50
Оценка за ответ: 4


Вопрос № 48.816
Добый день уважаемые эксперты! Подскажите пожалуйста, как проиграть в Delphi7 файлы ogg и wma. Можна ли воспользоватся компонентом MediaPlayer? Заранее спасибо
Отправлен: 11.07.2006, 12:50
Вопрос задал: Денис Володя (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: PheanixN
Здравствуйте, Денис Володя!
проигрывать файлы возможно... Главное что бы в системе были установленные соотвецтвенные кодеки.
Ответ отправил: PheanixN (статус: 1-ый класс)
Ответ отправлен: 11.07.2006, 13:00
Оценка за ответ: 2
Комментарий оценки:
Кодеки установлены, но с помощью стандартного компонента MediaPlayer удаётся проиграть только файлы типов wav і mp3

Отвечает: METALLDOCTOR
Здравствуйте, Денис Володя!

Не очень понятно, что вы имеете в виду. Вы хотите написать свой плеер? Тогда вам надо найти, как расшифровывается звук из файлов, считывать файлы и исходя из полученных значений подавать команду на динамик, но удобнее это делать используя специальные кодеки, например ffdshow, входящие в состав пакета K-Lite Codec Pack или CodecXP(или как-то так) от Microsoft'а, в них есть dll, содержащие фуникции для расшифровки звука. Подробнее в документации.
---------
Ни о чём не жалею!
Ответ отправил: METALLDOCTOR (статус: 4-ый класс)
Ответ отправлен: 11.07.2006, 13:24


Вопрос № 48.817
Добрый день, ув. эксперты...
Возник такой вопрос...
Есть форма, на нее ставлю панель, размер панели маленький. Как реализовать что бы при разворачивании формы и возвращении в исходное положение панель была всегда в центре...
Буду признателен за примеры....

Приложение:

Отправлен: 11.07.2006, 12:55
Вопрос задал: PheanixN (статус: 1-ый класс)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Проходящий Мимо
Здравствуйте, PheanixN!
Обрабатывать событие формы:
procedure TForm1.FormResize(Sender: TObject);
begin
Panel1.Top := Form1.ClientHeight div 2 - Panel1.Height div 2;
Panel1.Left := Form1.ClientWidth div 2 - Panel1.Width div 2;
end;

---------
Carpe diem!
Ответ отправил: Проходящий Мимо (статус: 6-ой класс)
Ответ отправлен: 11.07.2006, 13:05
Оценка за ответ: 4

Отвечает: Physicist
Здравствуйте, PheanixN!

Нужно обрабатывать изменение размера формы и изменять при этом положение (а можно и размер) остальных компонентов. В приложении есть пример.

Приложение:

Ответ отправил: Physicist (статус: 4-ый класс)
Ответ отправлен: 11.07.2006, 13:06
Оценка за ответ: 4

Отвечает: Татьяна
Здравствуйте, PheanixN!
Если я вас правильно поняла и вы изначально ставите ее в центр, то чтобы она была тех же размеров и всегда была в центре при разворачивании необходимо в свойствах панели в свойстве Anchors установить все четыре опции в false (akLeft,akRigth...)
---------
Возможно все. И ничего возможно тоже.
Ответ отправила: Татьяна (статус: Студент)
Ответ отправлен: 11.07.2006, 13:13
Оценка за ответ: 5


Вопрос № 48.839
Здраствуй народ. Есть файлы типа XML, в них находится список. Скажите как мне в Delphi 7 получить данные из этих файлов? Я не разбирался раньше с эти - нужды небыло, а сейчас появилась. Где почитать про это?
Отправлен: 11.07.2006, 16:58
Вопрос задал: Карасев Алексей Александрович (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Melamed
Здравствуйте, Карасев Алексей Александрович!
Используйте компонент TXMLDocument вкладка Internet в палитре компонентов. А прочитать про этот компонент можно в справке Delphi
Ответ отправил: Melamed (статус: 2-ой класс)
Ответ отправлен: 11.07.2006, 17:36
Оценка за ответ: 1
Комментарий оценки:
Никогда не ставил оценок, но хочется спросить, что нет разницы между справочником и технологией?

Отвечает: PheanixN
Здравствуйте, Карасев Алексей Александрович!
В Delphi 7 есть компоненты для работы с этим форматом файлов. Прочитать все можно в справке Delphi или набрать в поисковике "Delphi использование XML"
Есть хорошая справка с примерами на русском языке Delphi World 6 Pro, правда занимает около 30 метров. Но если скачаете - не пожалеете.
Ответ отправил: PheanixN (статус: 1-ый класс)
Ответ отправлен: 11.07.2006, 17:41

Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Карасев Алексей Александрович!
Во-первых, вам надо использоватьTXMLDOcument. Про такие очевидные методы, как LoadFromFile и подобные им я вам не буду рассказывать.
В XML используется технология DOM - Documnet Object Model. Т.е. струткура объекта - это дерево, как структура каталогов на диске.
соотв. вам понадобится DOM или XML Parser (не помню, как он там называется). Обращение к корню дерева происходит не помню как, но как-то просто. А от любой точки, на уровень ниже: enumearteChilds.elements[i];
Структуру документа можно оценить визуально, если посмотреть, как вложены друг в друга теги.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Студент)
Ответ отправлен: 11.07.2006, 17:44

Отвечает: Gh0stik
Здравствуйте, Карасев Алексей Александрович!

Вот советую Вам почитать варианты решения проблем по работе с XML-форматом на портале Королевство Delphi по такой ссылке:

http://www.delphikingdom.com/asp/itemq.asp?mode=0&ItemID=429
---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Студент)
Ответ отправлен: 13.07.2006, 15: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.34 от 01.06.2006
Яндекс Rambler's Top100

В избранное