Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет: Образование, Работа и Бизнес" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование на Delphi #16
Информационный Канал Subscribe.Ru |
Программирование на Delphi. Выпуск №16: 16.01.05.
|
||||||||||||||||||||||||||||||||||||
Top-10 Readers:
Примечание: читателям, которые нашли и разгадали ключевую фразу конкурса, 25 баллов уже начислены. Правила нашей рассылки: |
||||||||||||||||||||||||||||||||||||
49. Подскажите, как сделать, чтобы программа два раза не запускалась? Чтобы, если она уже запущена, активизировалось старое окно. Пробовала проверять перед запуском приложения, оно все равно успевает открыться. [Ответить]. 50. Здравствуйте! В программе к каждому рисунку должен отображаться соответствующий текст. подскажите, пожалуйста, как лучше и проще это реализовать на Делфи? Учитывая, что рисунков будет несколько десятков и чтобы ее можно было без проблем установить на других компьютерах. Спасибо. [Ответить]. 51. Привет всем и с прошедшими всех праздниками! У меня вот какой вопрос: можно ли в компоненте StringGrid менять в отдельных столбцах шрифт, и, если можно, то как это сделать? Я как не пробовал, у меня ничего не получилось - шрифт если и меняется, то меняется во всем StringGrid-е сразу. Заранее благодарен. [Ответить]. 52. Как правильно работать из delphi-приложения с справкой в формате HTML? У меня установлен HTML Help Workshop и в документации есть заглавочный файл для C, но никак не могу вызвать функцию HtmlHelp. Подскажите, в какой библиотеке она находится. [Ответить]. Вопросы, требующие ответа. 12. Привет. Может, кому-нибудь из читателей, удалось написать утилиту, показывающую все активные TCP/IP соединения (аналог Netstat) на Delphi без использования Fnugry Netstat Components. Поделитесь пожалуйста исходником, а то дядька Google мне отказался с этим помочь. [Ответить]. 15. Здраствуйте. Можете сказать, как я могу выбрать компонент из другого приложения? Например в другом приложении я использовал Edit (у него есть OnChange(), OnKeyPress() и др.) или он может быть не визуальным. И хочу добавить код в новое приложение (первому Form, OnCreate ) чтобы он автоматически выбрал тот компонент, какой я задам в коде. Заранее благодарен! [Ответить]. 37. Как отправить текст из переменной на сайт в интернете в текстовый или HTML-файл? [Ответить]. 40. Как мне определить скорость инета? Почитал msdn, понял, что надо юзать IPHLPAPI.DLL, а вот как? [Ответить]. |
||||||||||||||||||||||||||||||||||||
4. (Изменение разрешения экрана). [Отвечает: Iron Monk]: Всем привет! uses ShellApi; procedure SaveSettings; procedure SetScreen(BPP:byte;width,height,FR:integer); Вызывается так: SetScreen(глубина цвета, разрешение по горизонтали, разрешение по вертикали, частота в герцах); Например: SetScreen(16,800,600,80); {16 бит цвет, 800х600, 80Гц.} При завершении программы для восстановления старых параметров вызываем эту процедуру с сохранёнными ранее значениями: Я не стал здесь беспокоиться о сохранении/возвращении частоты обновления, а сразу установил 80Гц, но если кто желает, может сохранить и этот параметр при запуске и восстановить при закрытии программы: Взято с www.delphiworld.narod.ru 17. (Копирование URL в TMemo). [Отвечает: Iron Monk]: Всем привет! 19. (Прогресс закачки файлов из сети). [Отвечает: Iron Monk]: Программа для закачки файлов по протоколу http. При старте (если в буфере обмена есть ссылка), вставляет ссылку в поле Edit, запрашивает с сайта размер файла и выводит его размер в Label, в качестве ProgressBar используется TGauge. Сохраняет лог в папке Windows, поэтому, при первом запуске программы выдаст ошибку(т.к. файла там пока нет). [Исходники ЗДЕСЬ]. 21. (Непреравное получение данных со сканера). [Отвечает: Четвертных В.В.]: Отвечу сам себе: 24. (Библиотеки DelphiX). [Отвечает: Dron]: На текущий момент, последняя версия DirectX - 9.0c. Найти графические библиотеки, которые будут с этой версией работать - практически невозможно. Так быстро они не адаптируются. Но вот с DirectX 8 - без проблем! Качай UnDelphiX (UnDelphiX - практически тоже самое, что и DelphiX, точно не помню, - но кажется это просто неофициальная версия; сам её использую - всё прекрасно работает). В ReadMe написано, что скачать можно здесь: http://turbo.gamedev.net/undelphix.asp. Также там есть адрес: http://www.ingjapan.ne.jp/hori/. Наверняка, найдёшь без проблем. Удачи! 25. (Изображения JPG в DLL.). [Отвечает: Iron Monk]: Всем привет! Очень просто. Сначала, с помощью Restoratorа, создаём файл Jpeg.res и загружаем в него Jpg картинки в формате RCData. Создаём библиотеку dll - например J_PG.dll: library J_PG; Библиотека J_PG.dll готова. Создаём новый проект: Кидаем на форму Button1: uses JPEG;
27. (Создание файлов справки). [Отвечает: Iron Monk]: Есть описание по вопросу создания файлов справки в формате .hlp и .chm ( файл Help.chm 138 Kb). [Скачать] 30. (Редактирование реестра). [Отвечает: Iron Monk]: Всем привет! Посмотрел на сайте ответы на этот вопрос и не увидел самый простой: @ regedit -s file.reg - выполнение .reg файла без запроса (file.reg - ваш .reg файл). 44. (Ссылки на ресурсы по Delphi). [Отвечает: Садовников Владимир]: http://www.delphi-jedi.org/ http://www.vr-online.ru/ [Отвечает: Feniks]:
http://www.GoldFAQ.ru
И еще кучу можно найти хотя бы через Гугл. [Отвечает: Dron]: http://www.torry.net/ Да их очень много! Зайди в любой поисковик, да набери "Компоненты для Delphi"... [Отвечает: Iron Monk]: Всем привет!
[Отвечает: Геннадий Самолдин]: www.torry.net, www.delphimaster.ru. [Отвечает: Андрей Акишин]: попробуй тут http://www.aboutdelphi.w6.ru/janer3.htm. 45. (Запуск и открытие файлов/приложений). [Отвечает: Den]: Это просто, функция Win API - WinExec, запускает исполняемый файл (в хелпе есть все необходимое). Там же описано как создать\запустить процесс (прога-невидимка, без окна) и куча чего еще интересного. Там же в Win API есть способ передавать параметры вызываемому приложению, например если прога при загрузке подключается к БД, и логин с паролем нужно передавать на автомате или скрыто от юзера... [Отвечает: Садовников Владимир]: Посмотри функции ShellExecute и WinExec. Первая открывает всё, что угодно (вплоть до документов), вторая - запускает приложения. Посмотри во встроенном хелпе Delphi - там есть их описание. [Отвечает: Dasha]: Это делается функцией ShellExecute, см. хелп Windows SDK. Например, так:
[Отвечает: Андрей Лучников]: Можно так (простенько и со вкусом): uses ShellAPI;
P.S. Есть еще ShellExecute, так там больше параметров. [Отвечает: Feniks]: Для программного запуска файлов следует использовать функции ShellExecute, ShellExecuteEx. Они прекрасно описаны в хелпе по Делфи. Но там указано, что лучше всего использовать функцию CreateProcess. Но ей очень много специфических параметров надо задавать. Есть еще WinExec для совместимости с 3.51. Так что выбирай сам. [Отвечает: Dron]: Всё очень просто. ShellAPI - в uses.
Дальше - вызываем функцию ShellExecute. [Отвечает: Iron Monk]: Запустить .exe можно так: [Отвечает: Геннадий Самолдин]: ShellExecute(<файл><файл>);
[Отвечает: Иванов Сергей]: WinExec('c:\proga.exe'),0); [Отвечает: Lyubimov Pavel]: Запуск внешней программы и ожидание ее завершения: ShellExecute() - описание есть в справке!!! по Дельфи (RTFM). 46. (Периодическое выполнение функции, пока из изменится возвращаемое значение). [Отвечает: Садовников Владимир]: Создай нить, в которой в цикле будешь проверять твою функцию. Никакой таймер не понадобится. Тогда код будет выглядеть так: procedure TMyThread.Execute; [Отвечает: Iron Monk]: У меня функция: function InetIsOffline(Flag: Integer): Boolean; stdcall; external 'URL.DLL'; 47. (Значки веток в TreeView). [Отвечает: Садовников Владимир]: SelectedIndex - номер рисуемой иконки, когда твой элемент выделен. ImageIndex - номер рисуемой иконки, когда твой элемент не выделен. И ничего здесь нет связанного с раскрытием/закрытием. Чтобы поменять картинку при раскрытии/закрытии, воспользуйся этим: procedure TForm1.TreeView1Expanded(Sender: TObject; Node: TTreeNode); procedure TForm1.TreeView1Collapsed(Sender: TObject; Node: TTreeNode); 48. (Преобразование BMP в EMF). [Отвечает: Iron Monk]: Всем привет! implementation Вы также можете ответить на предыдущие вопросы. Поскольку на них уже ответили как минимум раз, они больше не публикуются в рассылке. Но если вы можете что-то добавить к ответам других, пожалуйста, отвечайте - ответы будут опубликованы. Найти предыдущие вопросы вы можете на нашем сайте: http://www.delphi-faq.fatal.ru/ или в спец-выпусках рассылки. |
||||||||||||||||||||||||||||||||||||
Написание инсталлятора на Delphi (Часть 9). Деинсталляция Итак, поговорим немного о деинсталляции. В идеале, деинсталляция должна привести компьютер к виду, в котором он был до инсталляции. На практике, это возможно не для всех приложений, особенно, если они разделяют ресурсы с другими программами. Программа инсталляции должна вести журнал инсталляции, в который должны быть занесены все действия, производимые этой программой: создание разделов в реестре, секций в .INI-файлах, копирование, переименование, регистрация ActiveX-компонентов и многое другое. Программа деинсталляции может, основываясь на этом журнале, произвести деинсталляцию продукта. Но это всё вещи очевидные, как и многое другое в деинсталляции. Мы можем для каждого действия программы инсталляции указать действие, которое должно происходить при деинсталляции.
Обратите внимание, что при деинсталляции журнал должен обрабатываться в обратном порядке. Например, если при инсталляции сначала был создан каталог, а потом в него скопированы несколько файлов, то при деинсталляции сначала удаляются эти файлы, а затем каталог. В статье, посвящённой системному реестру, рассказано, как поместить свою программу в список программ деинсталляции (Панель управления/Установка и удаление программ). Что ещё? Самое главное вы намучаетесь с удалением самой программы деинсталляции с жёткого диска. Дело в том, что программу невозможно удалить до тех пор, пока она запущена Windows закрывает к ней доступ. Что делать? Если мы посмотрим, как с этой ситуацией справляются распространённые инсталляторы (например, InstallShield и Wise), то увидим, что они оставляют программу деинсталляции на диске. Она становится разделяемым ресурсом, частью операционной системы (помещается в каталог Windows). Например, у меня на диске находятся C:\WINDOWS\UNINST16.EXE, C:\WINDOWS\UNINST.EXE (InstallShield) и C:\WINDOWS\UNWISE.EXE (Wise). Это достаточно корректное решение, поскольку этими инсталляторами пользуются многие программы. Мы можем сделать то же самое, изменив имя программы деинсталляции (uninst и unwise уже заняты :) Мы также можем скопировать программу деинсталляции во временный каталог и запустить её оттуда. Она, конечно, не будет уничтожена, однако при следующей чистке временного каталога, пользователь её удалит. Какие проблемы могут возникнуть на этом пути? Обратите внимание, что программу деинсталляции мы должны будем скопировать во временный каталог только во время инсталляции в ином случае пользователь может удалить её значительно раньше, чем она ему потребуется для деинсталляции (а откуда он знает, что это за файл?). Значит, вариант может быть таким: скопировать программу, запусить её из нового каталога, а текущую копию завершить. Здесь как раз и находится проблема: как только наша программа будет завершена, фокус будет передан назад в окно Установка и удаление программ, а мы как раз начнём запрашивать пользователя, действительно ли он согласен удалить продукт с машины... Вы можете написать простую программу для того, чтобы убедиться, что выглядит это некрасиво. У этой проблемы может быть несколько решений, например, первая копия может удалить продукт с машины, а затем скопировать себя во временный каталог и перезапуститься уже без главного окна просто для того, чтобы удалить один файл и каталоги, в котором он находится. Или мы можем поместить деинсталлятор только в нашу группу программ, следовательно, пользователь сможет запустить её только оттуда, и у него не возникнет проблем с окном Установка и удаление программ. Наконец, мы можем удалить-таки наш единственный EXE-файл автоматически. Для того, чтобы понять, как это делается, достаточно вспомнить о разделе RunOnce системного реестра. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\ CurrentVersion\RunOnce] SomeName="C:\WINDOWS\COMMAND.COM /C DEL C:\TEMP\DEINST.EXE" При следующей перезагрузке компьютера будет вызван командый процессор, который и удалит ненужный EXE-файл. Затем параметр SomeName будет автоматически удалён из раздела RunOnce. Командным процессором может быть не только command.com, но и cmd.exe (в NT), 4dos.com, 4nt.exe и другие программы. Переменная окружения COMSPEC содержит полный путь к текущему командному процессору function GetCommand: String; var szCommandPath: array[0..MAX_PATH - 1] of Char; begin GetEnvironmentVariable('COMSPEC', szCommandPath, MAX_PATH); Result := String(szCommandPath); end; Вот, видимо, и всё. Ну вот, закончился цикл статей по написанию инсталлятора на Delphi. Вы прошли подробнейший курс из 9 уроков и рассмотрели каждый этап отдельно. Теперь самое время попробовать всё это на практике. Если вы всё это время были с нами и писали свой собственный инсталлятор, доделывайте его и присылайте нам! Мы оценим ваши труды и опубликуем программу на сайте! Присылайте свои статьи по адресу delphi-faq@list.ru с темой 'Clause' (без кавычек), и они будут опубликованы в ближайших выпусках рассылки. Большая просьба: статью оформляйте в -txt или -doc формате и используйте -zip или -rar сжатие (без самораспаковки). Скачать полный архив статей "Написание инсталлятора на Delphi" (с рисунками) вы можете с нашего сайта. Вот здесь. |
||||||||||||||||||||||||||||||||||||
В данном разделе публикуются различные ссылки, причём не только по Delphi но и по OpenGL, WinAPI, DirectX и т.д. (они могут быть на других языках, например, на Си). Присылайте свои ссылки на документацию по программированию. "Delphi Russian Knowledge Base": http://www.sources.ru/delphi/drkb.zip [Ссылки прислал: Рудов Антон] |
||||||||||||||||||||||||||||||||||||
Если вам есть, что добавить в данный раздел, - пишите, щёлкнув по этой ссылке. Только большая просьба: не присылайте файлы сразу! Итак, что же сегодня нового? Исходники программ: WinAPI - программа, которая показывает возможности работы WinAPI. Поиск окон других приложений, изменение заголоков окон, получение информации об окнах, изменение состояния окон и многое другое. Открытые исходники помогут вам быстрее разобраться с возможностями этой могучей системы. [6.32 Кб, ZIP]. Компоненты: JWBBalloon - "пузыри" - всплывающие подсказки округлой формы, получившие своё распространение большей частью в Windows XP. Придают программе изящный вид. [7.46 Кб, ZIP].
|
||||||||||||||||||||||||||||||||||||
Здесь представлены ссылки на дружественные сайты нашего портала. Если вы тоже хотите стать нашим другом, разместите баннер на главной странице своего сайта. Подробнее о том, как стать другом, можно прочитать здесь: http://www.delphi-faq.fatal.ru/banner.htm, а узнать о всех наших друзьях - на странице http://www.delphi-faq.fatal.ru/friends.htm http://infomania2004.webhost.ru/ - Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, вы можете оставить заявку на ее поиск. Как только информация будет найдена, она появится на сайте, а вам сообщат об этом. |
||||||||||||||||||||||||||||||||||||
Забрали программиста в армию офицером. Построил он солдат и командует: *** Работа программиста и работа шамана имеют много общего: например, оба произносят непонятные слова, совершают непонятные действия и не могут объяснить, как это все работает. *** На этом свете 10 типов людей - те, кто понимает двоичную систему счисления и те, кто не понимает ее. *** Молитва сисадмина: *** Для ухода за пожилым программистом требуется приятная женщина, говорящая на FORTRAN, BASIC и С++. *** Звонок в фирму по продаже компьютеров и комплектующих: *** Вначале был бит, потом байт, и только потом появилось слово. *** Верх упорства: набирать неверный пароль, пока компьютер не согласится. [Анекдоты прислала: Dasha]. Присылайте свои "компьютерные" анекдоты по этой ссылке: delphi-faq@list.ru и они обязательно будут опубликованы! Нецензурные анекдоты не публикуются! |
||||||||||||||||||||||||||||||||||||
Товарищи программисты! Проявляйте свою активность. Давайте помогать друг другу! |
||||||||||||||||||||||||||||||||||||
|
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.delphifaq |
Отписаться |
В избранное | ||