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

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


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

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

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

Выпуск № 1036
от 16.01.2008, 14:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 428, Экспертов: 61
В номере:Вопросов: 8, Ответов: 17

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 117799: Здравствуйте. Как мне мое приложение сделать службой? Что бы могла себя добавить. Могла запускаться останавливаться и тд. Приложение есть оконное нужно просто добавить эту функцию....
Вопрос № 117806: Здравствуйте, уважаемые эксперты. Надеюсь на Вашу помощь. Суть проблемы: имею небольшой опыт работы с Delphi, в частности с теми компонентами, которые нужно будет использовать в данной программе, поэтому вопрос такой: как лучше реализовать задума...
Вопрос № 117825: Здравствуйте господа эксперты. Как можно корректно перевести константу из типа TGUID в PGUID для работы с DirectDraw7....
Вопрос № 117854: Здрасти уважаемые эксперты. Вопросик вроде и не сложный но всёже : в Microsoft*овском Excel*е есть протяжка пишим всолбик 1 2 3 а протяжкой 4 5 6 итд. Я хотелбы реализовать такую протяжку у меня на Form1 стоит 2 Edit*а и 1 Memo и кнопка мне нужно реа...
Вопрос № 117860: Здравствуйте, уважаемые Эксперты!!! Суть вопроса в следующем. Имеется приложение, к программному коду доступа не имею. Нужно сделать такую программу, котрая бы запускала данное приложение в режиме "Поверх всех окон". Заранее...
Вопрос № 117867: Здраствуйте господа эксперты! Просветите по следующему вопросу. Существует ли бесплатный вариан поставки Delphi с урезанными возможностями, но достаточный для первоначального обучения. О проекте Lazarus и Free Pascal знаю. если есть ...
Вопрос № 117919: Здравствуйте господа Эксперты! Подскажите, как в строк. переменную считать системную дату,мес.,год? Т.е., какая функция для этого подойдёт?В реестре параметра не нашол. Пожалуйста, если можно код процедуры. Спасибо!...
Вопрос № 117977: Здравствуйте, маленький вопросик, как сделать TImage поверх TPageControl? Наверное только через апи?.....

Вопрос № 117.799
Здравствуйте.
Как мне мое приложение сделать службой?
Что бы могла себя добавить. Могла запускаться останавливаться и тд.
Приложение есть оконное нужно просто добавить эту функцию.
Отправлен: 10.01.2008, 15:14
Вопрос задал: Sergoss (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Drbear
Здравствуйте, Sergoss!

читайте:
http://rusfaq.ru/info/Question/101369
Ответ отправил: Drbear (статус: 5-ый класс)
Ответ отправлен: 10.01.2008, 15:21


Вопрос № 117.806
Здравствуйте, уважаемые эксперты. Надеюсь на Вашу помощь.
Суть проблемы: имею небольшой опыт работы с Delphi, в частности с теми компонентами, которые нужно будет использовать в данной программе, поэтому вопрос такой: как лучше реализовать задуманное?
Если будут примеры, то вобще супер.

Итак, пишу программу для рассылки SMS родителям студентов. Отправка сообщения реализуется через email-sms шлюзы операторов. С этим проблем нет, сообщения отправляются.
Следущий шаг - Реализация БД телефонных номеров с ФИО и прочей информацией. Хочу сделать 2 таблицы, которые будут отображаться в окне, в одной - ФИО, тел.номер и с др. инфа, в другой - 2 столбца: номер группы и столбец со значением "+" или "-" - в какие группы отправлять сообщение. + возможность добавления и удаления групп и сообщений.
Опыта работы с БД в Delphi у меня никакого, как лучше хранить эти таблицы? ADO, BDE или еще как-то? В каких компонентах лучше выводить информацию из БД?
Может есть примеры подобных программ? интересует только реализация БД. Почему то пугает разнообразие всех этих ADO, BDE и прочего.
И еще интересно для каких технологий(ADO, BDE,..) необходимо что-то устанавливать дополнительно для их работы(драйвера, библиотеки и прочее)?
Отправлен: 10.01.2008, 15:40
Вопрос задал: Benhu (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: Евсюков Виталий Евгеньевич
Здравствуйте, Benhu!
Драйверы никакие, в 99% случаев, устанавливать не надо, если используешь ADO. BDE - suxx, не используй это. Плюс на компе без установленных борландовских библиотек пахать не будет. Используем по старинке ADOTable, DataControl и DBGrid
---------
I Aear can ve na Mar
Ответ отправил: Евсюков Виталий Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 10.01.2008, 16:50

Отвечает: Delph
Здравствуйте, Benhu!

Думаю, Вам будет полезно обзавестись литературой - в книгах можно найти ответы на многие вопросы. В качестве примера предлагаю такую книгу:

Андрей Сорокин "Delphi Разработка баз данных"

Если у Вас не получится найти её в бумажном варианте, то можно скачать в электронном, например - с www.librus.ru.

Хранить таблицы лучше при помощи какого-либо SQL-сервера, поскольку это предоставит в Ваше распоряжение богатые возможности языка SQL. В качестве бесплатных серверов могу назвать Firebird, MySQL, PostgreSQL. Мне нравится последний. С BDE, пожалуй, лучше не связываться - стареет эта технология, да и драйвер BDE поставить без Delphi - задача не тривиальная. К PostgreSQL, равно как и к MS SQL Server (этот уже довольно дорогой) я привык обращаться через ADO. В случае с MS SQL Server нужно будет скачать с сайта Microsoft драйвер MDAC (весит немного и распространяется бесплатно) - его достаточно, чтобы программа могла обращаться к серверу по сети. При помощи ADO-шных компонентов можно создать и полностью локальную базу без каких-либо SQL-серверов, но в этом случае Вы будете ощутимо ограничены в своих возможностях (например - наладить сетевую и многопользовательскую работу такой базы будет довольно трудно).

По поводу таблиц предлагаю такую структуру:

Таблица Group:
Group_Id: integer - уникальный идентификатор строки (обязательно),
GroupNumer: VarChar(16) - номер группы (можно с буквами),
SMS_Sending: VarChar(1) - '+' или '-' - в какие группы отправлять SMS,
прочие поля, если необходимо.

Таблица Students:
Student_ID: integer - уникальный идентификатор строки,
Group_Key: integer - ссылка на Group.Group_Id
FIO: VarChar(32),
Phone: VarChar(20),
прочие поля, если необходимо.

В программе Вам понадобятся следующие компоненты (для случаев с MS SQL Server, PostgreSQL и локальной базы, в других случаях скорее всего понадобятся "родные" компоненты):
ADOConnection - компонент для соединения с базой - один на всю программу;
ADOTable - набор данных (таблица);
DataSource - "клей" между наборами данных и визуальными компонентами вроде DBGrid;
DBGrid - визуальный компонент, отображающий данные из таблицы.
Если Вы хотите серьёзно заниматься базами данных, то вместо ADOTable имеет смысл использовать ADOQuery - этот компонент умеет выбирать из базы данные, удовлетворяющие каким-либо условиям (в зависимости от текущей задачи), хотя начать работу с ним будет чуть посложнее. На каждую таблицу, которую Вы хотите отображать пользователю, нужна своя связка ADOTable/ADOQuery ==> DataSource ==> DBGrid, но на все таблицы достаточно одного ADOConnection-а.

Если Вы сделаете выбор в пользу сервера PostgreSQL, я смогу оказать Вам более детальную помощь.
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 11.01.2008, 09:22


Вопрос № 117.825
Здравствуйте господа эксперты. Как можно корректно перевести константу из типа TGUID в PGUID для работы с DirectDraw7.
Отправлен: 10.01.2008, 17:05
Вопрос задал: Genia007 (статус: 4-ый класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Genia007!

Очень просто :)

var
ID: TGUID;
PID: PGUID;
begin
ID := '{12A85C67-643A-4FCC-A276-AC0EBD4E10B6}';
PID := @ID;
...
end;

А если для передачи в функцию единоразово - то просто @имя_переменной_TGUID в месте параметра
Ответ отправил: Лукьяненко Алексей Валериевич (статус: 10-ый класс)
Ответ отправлен: 10.01.2008, 17:12
Оценка за ответ: 5
Комментарий оценки:
Большое спасибо, совсем забыл про @

Отвечает: Евсюков Виталий Евгеньевич
!!!
Здравствуйте, Genia007!
Обычно всегда вроде PHrenovina = @THrenovina и THrenovina = ^PHrenovina. Поправьте, если брешу;)

Второе явно не для этого случая. Да и делать указатель на указатель - извращение.
-----
∙ Отредактировал: sir henry (Академик)
∙ Дата редактирования: 11.01.2008, 12:04

---------
I Aear can ve na Mar
Ответ отправил: Евсюков Виталий Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 10.01.2008, 22:25
Оценка за ответ: 5
Комментарий оценки:
Спасибо, сработало только PHrenovina = @THrenovina, на THrenovina = ^PHrenovina Дэлфи матерится.


Вопрос № 117.854
Здрасти уважаемые эксперты. Вопросик вроде и не сложный но всёже : в Microsoft*овском Excel*е есть протяжка пишим всолбик 1 2 3 а протяжкой 4 5 6 итд. Я хотелбы реализовать такую протяжку у меня на Form1 стоит 2 Edit*а и 1 Memo и кнопка мне нужно реализовать протяжку 1 и 2 едите числа а при нажатие на кнопку чтоб в мемо производилась протяжка ещё 10 значений. желательно с примером зарание спасибо.
Отправлен: 10.01.2008, 20:05
Вопрос задал: Мокроусов Алексей Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Louken
Здравствуйте, Мокроусов Алексей Сергеевич!

Код в приложении.
Протяжку можно осуществлять не только целых чисел, но и вещественных (дробных).

Для примера, введите в один едит "1,9" (без ковычек), а во второй "2". получите протяжку от "2,1" до "3", с шагом 0,1. Можно поменять числа местами.

Приложение:

Ответ отправил: Louken (статус: Студент)
Ответ отправлен: 10.01.2008, 20:48
Оценка за ответ: 5
Комментарий оценки:
Спасибки!! а for i:=1 to 10 do begin от 1 до 10 ето скодько выдоватся будет в мемо заначений?


Вопрос № 117.860
Здравствуйте, уважаемые Эксперты!!!
Суть вопроса в следующем.
Имеется приложение, к программному коду доступа не имею.
Нужно сделать такую программу, котрая бы запускала данное приложение в режиме "Поверх всех окон".
Заранее благодарен!!!
С уважением Павел Форсман.
Отправлен: 10.01.2008, 20:37
Вопрос задал: Форсман Павел Вячеславович (статус: 2-ой класс)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: PavelGM
Здравствуйте, Форсман Павел Вячеславович!

Сначала надо провести анализ и выяснить имя класса окна приложения, которое хотите запускать (для этого можно использовать программы типа Spy++ или самим через WinAPI - EnumWindows - до запуска и после).

Запуск осуществляется стандартными способами (WinExec or CreateProcess or ShellExecute)

По классу окна при помощи FindWindow находится окно (если оно не одно, то можно провести анализ заголовков, но в подобных задачах чаще всего это не нужно). Может потребоваться некоторое время - пока программа запуститься и создаст окно.

Далее добавляем к стилям окна WS_EX_TOPMOST:
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOPMOST);

После этого может еще понадобиться SetForegroundWindow, чтобы "поднять" окно совсем наверх среди всех TOPMOST.

P.S. Все это применимо только к обычным программам, не использующим полноэкранный DirectDraw (т.е. с большинством "тяжелых" игр не пройдет :) )

Ответ отправил: PavelGM (статус: Студент)
Ответ отправлен: 11.01.2008, 10:46
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за ответ, но дело в том, что я не силен в WinAPI.

Отвечает: Сазонов Михаил Владимирович
Здравствуйте, Форсман Павел Вячеславович!
Создайте форму.
Куски кода в приложении, вроде и все.

Приложение:

Ответ отправил: Сазонов Михаил Владимирович (статус: 1-ый класс)
Ответ отправлен: 11.01.2008, 13:22


Вопрос № 117.867
Здраствуйте господа эксперты!
Просветите по следующему вопросу.
Существует ли бесплатный вариан поставки Delphi с урезанными возможностями, но достаточный для первоначального обучения.
О проекте Lazarus и Free Pascal знаю.
если есть то можно ссылку, на оф. сайте борланда ничего не нашел или плохо искал.
Спачибо.
Отправлен: 10.01.2008, 21:01
Вопрос задал: Костя Симанович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Евсюков Виталий Евгеньевич
Здравствуйте, Костя Симанович!
Turbo Delphi; Kylix (под никсы)
---------
I Aear can ve na Mar
Ответ отправил: Евсюков Виталий Евгеньевич (статус: 3-ий класс)
Ответ отправлен: 10.01.2008, 22:14
Оценка за ответ: 4
Комментарий оценки:
Linux я начал изучать недели две назад более менее серьездно, и если Kylix действительно бесплатный то это не может не радовать, останется только установить.

Отвечает: Николай Владимирович / Н.В.
Здравствуйте, Костя Симанович!
Бесплатной версии Delphi нет.

Кстати, Borland уже не занимается этим - нынешний разработчик CodeGear.
Посмотрите Turbo Delphi Explorer. Это бесплатная версия Turbo Delphi.
Главное отличие платной и бесплатной версии Turbo продуктов – возможность создания и использования сторонних компонентов. Однако речь не идет о лицензионных ограничениях. Даже бесплатный продукт может быть использован в коммерческих целях. И если это действительно так, то бесплатные Turbo продукты составят весомую конкуренцию продуктам линии Microsoft's Express. Последние имеют существенные лицензионные ограничения. (источник)

Удачи!
Ответ отправил: Николай Владимирович / Н.В. (статус: Практикант)
Ответ отправлен: 10.01.2008, 22:15
Оценка за ответ: 5
Комментарий оценки:
Про Turbo Delphi Explorer не знал, теперь знаю, буду изучать его возможности.


Вопрос № 117.919
Здравствуйте господа Эксперты! Подскажите, как в строк. переменную считать системную дату,мес.,год? Т.е., какая функция для этого подойдёт?В реестре параметра не нашол. Пожалуйста, если можно код процедуры. Спасибо!
Отправлен: 11.01.2008, 06:41
Вопрос задал: Дубинин С.И. (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Raptor3
Здравствуйте, Дубинин С.И.!

str:=DateToStr(Now);

Now- текущая дата

наверно это имелось ввиду
---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 06:47
Оценка за ответ: 3

Отвечает: Delph
Здравствуйте, Дубинин С.И.!

Саму текущую дату можно прочитать при помощи функций Now ("сейчас": текущие дата и время) и Date (текущая дата), обе функции имеют тип TDateTime. Выделить из текущей даты день, месяц и год можно с помощью функций DayOf(Now), MonthOf(Now), YearOf(Now). Эти функции определены в модуле DateUtils (просто добавьте этот модуль в строку uses). Функции DayOf, MonthOf, YearOf имеют целый тип и выделяют соответственно день, месяц и год из любого переданного им параметра с типом TDateTime, поэтому Вы можете работать не только с текущей датой, а вообще с любой.

Перевести текущую дату в строковую переменную можно, например, так:
str := IntToStr(DayOf(Now)) + '.' + IntToStr(MonthOf(Now)) + '.' + IntToStr(YearOf(Now));

Кроме того в Delphi определены ещё 2 подпрограммы для обработки дат:
procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word) - разбивает дату на год, месяц и день;
function EncodeDate(Year, Month, Day: Word): TDateTime - объединяет год, месяц и день в значение типа TDateTime.
---------
Сомневайся во всём! Реальность часто бывает не такой, как мы о ней думаем.
Ответ отправил: Delph (статус: Студент)
Ответ отправлен: 11.01.2008, 09:52
Оценка за ответ: 5
Комментарий оценки:
Спасибо! то что нужно. Удачи!

Отвечает: Genia007
Здравствуйте, Дубинин С.И.!
117919
Всё очень просто s:=DateToStr(Date); или если время s:=TimeToStr(Time);
Ответ отправил: Genia007 (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 11:33
Оценка за ответ: 5

Отвечает: Markedone
Здравствуйте, Дубинин С.И.!
FormatDateTime(‘dd/mm/yyy’, Date()); // Дата будет в виде “11/01/2008”
FormatDateTime(‘dddddd’, Date()); // Дата будет в виде “11 января 2008”
FormatDateTime(‘hh:nn’, Time()); // Время будет в виде “06:41”
FormatDateTime(‘hh:nn - ss’, Time()); // Время будет в виде “06:41 - 24”

Ответ отправил: Markedone (статус: 3-ий класс)
Ответ отправлен: 11.01.2008, 16:23
Оценка за ответ: 5


Вопрос № 117.977
Здравствуйте, маленький вопросик, как сделать TImage поверх TPageControl? Наверное только через апи?..
Отправлен: 11.01.2008, 13:50
Вопрос задал: Red Spirit (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 3)

Отвечает: Raptor3
Здравствуйте, Red Spirit!

нехорошо вопросом на вопрос отвечать - но все же - зачем?зачем имагой закрывать пагеконтрол?? я не смог придумать ситуации когда это может пригодиться.

Не проще будет бросить Image на сам TPageControl???
---------
Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 4-ый класс)
Ответ отправлен: 11.01.2008, 14:07
Оценка за ответ: 3
Комментарий оценки:
Я не отвечал вопросом, а лишь предположил один из вариантов решения, который мне пришел в голову, но я его еще не пробывал, так как надеялся получить более простой вариант, в общем не важно )

Отвечает: BlackRaider
Здравствуйте, Red Spirit!

Самый "дубовый вариант" кидаем панель снимаем свойства BevelInner и BevelOuter,
размеры под размер Image у Image Align в alClient.
и у Вас в принципе Image поверх PageControl'a
Ответ отправил: BlackRaider (статус: 1-ый класс)
Ответ отправлен: 11.01.2008, 14:16
Оценка за ответ: 4
Комментарий оценки:
Попробуем..

Отвечает: Mishell
Здравствуйте, Red Spirit!
не получится даже с через апи - т.к. TPageControl порожден от TWinControl, а TImage - от TGraphicControl
т.е. первый это по-сути окно, а второй просто рисунок на родителе
выход или ложить TImage на TPanel, а ее уже поверх TPageControl
или рисовать на экране поверх всего (и TPageControl в т.ч.) - но это, имхо, извращение :)
Ответ отправил: Mishell (статус: 8-ой класс)
Ответ отправлен: 11.01.2008, 14:17
Оценка за ответ: 4


Вы имеете возможность оценить этот выпуск рассылки.
Нам очень важно Ваше мнение!
Оценить этот выпуск рассылки >>

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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.69 от 06.01.2008
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное