Здравствуйте, уважаемые читатели! Перед вами выпуск №6 от 02.12.04.
Сразу начну с новостей. Теперь за каждый ответ вы будете получать баллы. За каждый ответ вам может быть начислено от 1 до 5 баллов, в зависимости от полноты ответа и касания им заданной темы. Читатель, набравший наибольшее количество баллов по истечении определённого времени, полчит возможность разместить видную ссылку на свой сайт на главной странице нашего портала, а также в рассылке. Также, кроме ответов на вопросы, вы сможете заработать дополнительные баллы, но об этом позже... Тем, кто отвечал на вопросы, выслано письмо с количеством баллов на его счету. Голосование насчёт типа создаваемых программ ещё продолжается, т.к. проголосовали очень немногие... Пожалуйста, проголосуйте.
Программы какого направления вы создаёте?
>>> Для работы с текстом >>> Мультимедийные приложения >>> Приложения, основанные на WinAPI (интегрирующиеся с операционной системой) >>> Системные утилиты >>> Программы другого типа (пожалуйста, укажите, какие именно в тексте письма) >>> Программы для работы с графикой >>> БД (Базы Данных) >>> Сетевые приложения
Также вы можете выбрать несколько вариантов ответа, но выбирайте те, что действительно "преобладают" над другими.
Правила нашей рассылки:
1. Не присылайте ответов на вопросы вроде "да я не знаю" или "да/нет". Такие ответы не публикуются.
2. Вопросы, не касающиеся Delphi, не принимаются (для этого существуют другие рассылки).
3. Запрещено присылать вложенные файлы, размером более 100 Кб, без предварительной связи с администратором.
4. Письма с "неправильной" темой не публикуются!
Ну а теперь перейдём непосредственно к вопросам, ответам и изучению Delphi...
Статья по Delphi.
Перемещение мышью визуальных компонентов на форме во время выполнения программы
TPanel можно "таскать" мышкой по форме в run-time'е.
Поместите на форму TPanel (Panel1) и напишите обработчик события OnMouseDown, запустите программу и задвинте эту панель подальше :))
На самом деле подобным образом можно таскать абсолютно любой визуальный компонент...
Новые вопросы:
11. Здравствуйте! У меня вопрос: как в Delphi можно сделать сворачивание окна программы в трей? И еще: каким образом можно было бы сделать аналоговые часы? Заранее благодарю. Divan. [Ответить].
Вопросы, ждущие ответа:
8.Подскажите как работать с интерфейсом USB в Delphi, прием и передача данных? [Ответить].
9.Доброе время суток! Я хотел бы сделать прогу для имитации мультимедиа клавиатуры: пользователь нажимает на клавишу (допустим F5), а прога отсылает проигрывателю команду о начале воспроизведения (play). Хотелось бы чтобы прога работала с любым проигрывателем (а не только Winamp-ом или MediaPlayer-ом). Буду благодарен любой помощи. [Ответить].
10.Как определить размер файла размером более 10GB? Функцией GetFileSize не получается... Выдает неверный результат. [Ответить].
Поступившие ответы:
7. (Хранение значений констант в секциях секциях exe-файла). [Отвечает: Садовников Владимир]. Ознакомься с форматом файлов PE! Каждый файл делится на секции, которые следуют друг за другом. Дело в том, что в EXE-файле все секции плотно упакованы друг за другом (между ними нет промежутков), а в виртуальной памяти Windows они, как раз, имеют полную длину. Чтобы узнать, где всё-таки находится твоя константа, надо посчитать, в какой секции и с каким смещением она находится. Узнать информацию о секциях и их расположении в файле можно только прочитав заголовок EXE-файла. А дальше всё просто.
Пример.
Имеется три секции:
Код - виртуальный адрес - $401000, размер - $18980
Данные - виртуальный адрес - $430000, размер - $8680
Константы - виртуальный адрес - $438000, размер - $600
Виртуальный адрес и размер читаются из заголовка.
У тебя возвращается, например, LongWord(@константа)=$438010. Это значит, что для хранения используется секция констант, а данная константа располагается в этой секции со смещением $10. Теперь дело за малым: ищешь, где в файле находится начало определения секции констант и, сместившись на $10 байт от начала, пишешь новое значение. Таким образом можно не только константу, но и код поменять в некоторых случаях.
Вы также можете ответить на предыдущие вопросы. Поскольку на них уже ответили как минимум раз, они больше не публикуются в рассылке. Но если вы можете что-то добавить к ответам других, пожалуйста, отвечайте - ответы будут опубликованы. Найти предыдущие вопросы вы можете в архиве рассылки: http://subscribe.ru/archive/comp.soft.prog.delphifaq/, либо на сайте рассылки (http://www.delphi-faq.fatal.ru).
Друзья:
Здесь представлены ссылки на дружественные сайты нашего портала. Если вы тоже хотите стать нашим другом, разместите баннер на главной странице своего сайта. Подробнее о том, как стать "другом", можно прочитать здесь: http://www.delphi-faq.fatal.ru/banner.htm.
http://infomania2004.webhost.ru/ - Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, вы можете оставить заявку на ее поиск. Как только информация будет найдена, она появится на сайте, а вам сообщат об этом. http://www.basic.webhost.ru/ - Программирование на языках Basic и Visual Basic. http://www.sashook.nm.ru/ - Игры, флешки, обои, компьютерные приколы.
Юмор:
Вчера программист Иванов отметил свой юбилей. Ему исполнилось 32 года.
Лаборант в компьютерном классе:
- Прежде чем вставить дискету в дисковод, проверьте ее на вирусы!
Новый Левша сумел разместить свое имя и фото на картинке размером в 1x1 пиксель.
Договорились о встрече Ламер (Л), Юзер (Ю) и Хакер (Х). Ламер и Хакер пришли, а юзера нет. И тут прибегает запыхавшийся Юзер.
Ю: Извините, что задержался, я книжку по TCP/IP покупал:
Л: Что такое TCP/IP?
Х: Что такое книжка?!
Keyboard not found. Press F1 to continue...
Присылайте свои "компьютерные" анекдоты по этой ссылке: delphi-faq@list.ru и они обязательно будут опубликованы!
Товарищи программисты! Проявляйте свою активность. Давайте помогать друг другу! Если вы не нашли ответа на свой вопрос, не отчаивайтесь! Ведь количество подписчиков постоянно растёт и, наверняка, найдётся тот человек, который поможет вам! На сегодня всё. До встречи через неделю!