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

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


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

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

Выпуск № 705
от 12.01.2007, 21:05

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


Вопрос № 69825: Господа эксперты! Я использую MS Word для формирования отчетов. Имеется несколько десятков документов-шаблонов. Пользователь выбирает один из них и запускает процедуру, ее примерный код - в приложении. Все работает, но иногда какой-нибудь из...
Вопрос № 69877: Доброго времени суток уважаемые эксперты я уже задавал этот вопрос но возможно из-за того что неуточнил, неполучил правильного ответа проблема вот в чем база данных InteBase в ней данные разного типа (Varcar,Integer,Date(dd,mm,yyy...
Вопрос № 69880: здраствуйте уважаемые эксперты ! подскажите пожалуста как из указаной директории окрыть файл например рисунок или запустить exe какой нибудь спасибо зарание за ответ...
Вопрос № 69896: Как програмно можно отключить а затем включить клавиатуру с мышкой? спасибо....

Вопрос № 69.825
Господа эксперты!
Я использую MS Word для формирования отчетов. Имеется несколько десятков документов-шаблонов. Пользователь выбирает один из них и запускает процедуру, ее примерный код - в приложении.
Все работает, но иногда какой-нибудь из шаблонов (всякий раз - другой) вдруг перестает открываться, выдает сообщение о нехватке памяти, хотя реально памяти полно. При этом в диспетчере задач видно, что есть незавершенный процесс Word. Открыть документ не удается, даже если этот процесс прибить. Другие шаблоны при этом открываются нормально.
Иногда это проходит само собой, но чаще требуется перезагрузка.
Подскажите, что можно предпринять.
Спасибо. С Новым Годом.

Vitaly Grobshtein

Приложение:

Отправлен: 07.01.2007, 03:25
Вопрос задал: Vitaly (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ivanich
Здравствуйте, Vitaly!
Давно я уже не исползовал интерфейс OLE, но попытаюсь помочь. Скорее всего глючит Word.
Ответ отправил: Ivanich (статус: 6-ой класс)
Ответ отправлен: 07.01.2007, 19:04
Оценка за ответ: 2
Комментарий оценки:
За желание помочь - спасибо. Но в вашем сообщении не содержится никакой полезной информации.


Вопрос № 69.877
Доброго времени суток уважаемые эксперты
я уже задавал этот вопрос но возможно из-за того что неуточнил,
неполучил правильного ответа
проблема вот в чем
база данных InteBase
в ней данные разного типа (Varcar,Integer,Date(dd,mm,yyyy))
при поиске по (Varcar,Integer) все замечательно но по (Date)
практически постояно проблемы если нет полного совпадения со значением в базе то ничего невыдает
а мне нужно чтобы поиск производился по (dd,mm)
я пробовал через Like но например если ввести '11' все работает
если ввести '11.11' ничего невыдает хотя в базе есть данное значение
через Starting Whith тоже самое
хотя может я неправильно написал код
прозьба ответ распишите по подробней что и почему
чтобы я тоже понял что я делаю а не просто переписал чужой код
заранее спасибо за ответы
Отправлен: 07.01.2007, 15:38
Вопрос задал: Fins (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: sir henry
Здравствуйте, Fins!
Вам надо было свой код привести. :)
Если Вы задаете условие по неполной дате, то Вам нужно воспользоваться функцией EXTRACT(), которая возвращает отдельные составляющие даты. Например:
SELECT нужные_поля FROM Таблица
WHERE EXTRACT(DAY FROM Поле_Date)=11 and EXTRACT(MONTH FROM Поле_Date)=11
Тип данных Date в обязательном порядке должен предусматривать год.
Ответ отправил: sir henry (статус: Академик)
Россия, Красноярск
----
Ответ отправлен: 08.01.2007, 07:38


Вопрос № 69.880
здраствуйте уважаемые эксперты !
подскажите пожалуста
как из указаной директории окрыть файл например рисунок или запустить exe какой нибудь
спасибо зарание за ответ
Отправлен: 07.01.2007, 16:09
Вопрос задал: Fins (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Ivanich
Здравствуйте, Fins!
например в приложение представлена программа, которая открывает все файлы брошеные ей как параметры в командную строку!

Приложение:

Ответ отправил: Ivanich (статус: 6-ой класс)
Ответ отправлен: 07.01.2007, 18:45

Отвечает: Alexey G. Gladenyuk
Здравствуйте, Fins!
Для запуска других приложений можно использовать WinExec.
function WinExec (lpCmdLine: LPCSTR; uCmdShow: UINT): UINT
lpCmdLine - полный путь к файлу (PAnsiChar)
uCmdShow - способ отображения программы (LongWord). Определены константы:

SW_HIDE - Окно в скрытом режиме.
SW_MAXIMIZE - Окно максимального размера
SW_MINIMIZE - Окно находится в свернутом виде, активируется следующее верхнее окно в Z последовательности.
SW_RESTORE - Активирует и показывает окно. Если окно свернуто или развернуто, Windows восстанавливает его к первоначальному размеру и позиции. Приложение должно определить этот флаг при восстановлении свернутого окна.
SW_SHOW - Активирует окно и выводит его в текущих размерах и позиции.
SW_SHOWMAXIMIZED - Активирует и показывает окно в развернутом виде.
SW_SHOWMINIMIZED - Активирует и показывает окно в свернутом виде.
SW_SHOWMINNOACTIVE - Отображает окно в свернутом виде. Активное окно остается активным.
SW_SHOWNA - Отображает окно в текущем состоянии. Активное окно остается активным.
SW_SHOWNORMAL - Активирует и показывает окно. Если окно свернуто или развернуто, Windows восстанавливает его к первоначальному размеру и позиции. Приложение должно определить этот флаг при показе окна в первый раз.

Однако, Microsoft не рекомендует использовать WinExec, а предлагает пользоваться CreateProcess (создание процесса), что несколько сложнее из-за большого количества передаваемых аргументов.

Более "продвинутый" вариант вызова - ShellExecute.
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST

Функция позволяет открыть или вывести на принтер указанный файл, а также открыть каталог (open (открыть), print (напечатать) и explore (исследовать)). В качестве файла (параметр Operation) можно указать исполняемый файл, в результате чего запустится приложение, либо любой другой файл, что приведет к запуску соответствующего приложения, обрабатывающего данный тип файлов. Например, если с помощью ShellExecute Вы попробуете запустить файл с расширением .BMP, то будет запущена соответствующая программа для просмотра графических файлов.
Параметр hWnd содержит ссылку на окно, из которого запускается другое приложение.
Параметр Operation указывает на строку с описанием выполняемой команды (операции). Командная строка может принимать следующие значения:
- open (открытие файла или каталога, указанных параметром FileName. Если задан исполняемый файл, то он запускается).
- print (печать файла документа).
- explore (открытие каталога, указанного параметром FileName).
Если для этого параметра указать nil, то по умолчанию принимается значение open.
Параметр FileName является указателем на строку с именем файла или каталога, для которых выполняется операция.
Параметр Parameters указывает на строку, содержащую передаваемые запускаемому приложению параметры. Если открывается неисполняемый файл, то следует установить это значение в nil.
Параметр Directory указывает на строку с именем каталога по умолчанию.
Параметр ShowCmd определяет (так же, как для WinExec) способ отображения окна запускаемого приложения.

Перед использованием ShellExecute в разделе Uses нужно подключить модуль ShellAPI.
Пример использования ShellExecute для запуска блокнота Windows:

ShellExecute (Application.MainForm.Handle, PChar ('open'), PChar ('notepad.exe'), Nil, Nil, SW_SHOWNORMAL);
В качестве окна, вызвавшего Блокнот, указана главная форма приложения Application.MainForm.

Открытие текстового документа:
ShellExecute (Application.MainForm.Handle, PChar ('open'), PChar ('test.doc'), Nil, PChar ('c:example'), SW_SHOWNORMAL);
Открывается файл test.doc из каталога c:exampleю
Ответ отправил: Alexey G. Gladenyuk (статус: Академик)
Россия, Сегежа
Тел.: +7 911 402 18 57
Организация: ОАО "Сегежский ЦБК"
WWW: Мой город
ICQ: 279076419
----
Ответ отправлен: 12.01.2007, 00:06


Вопрос № 69.896
Как програмно можно отключить а затем включить клавиатуру с мышкой? спасибо.
Отправлен: 07.01.2007, 17:56
Вопрос задал: Танасюк Олег Олегович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Ivanich
Здравствуйте, Танасюк Олег Олегович!
Знвчит на счет мяши все просто. Мною уже давно была написана программа "Мышеловка", которая при запуске ограничивает или совсем запрещает движение мяши. Основой ее была API-функция ClipCursor. Единственный ее параметр - это указатель на структуру TRect, в которой указаны экранные координаты отсекаемой области для действия мыши. Вот примерные процедуры остановки и возобновления работы мыши:
procedure StopMouse; //см. приложение
procedure RunMouse; //см. приложение
С клавиатурой же все сложнее.
Скорее всего для ее полного отключения придется написать целый дополнительный модуль. Не знаю API-функций для выключения клавиатуры и по этой причине могу предложить только решить эту проблему только с помощью Hooks (ловушек) системных событий.

Приложение:

Ответ отправил: Ivanich (статус: 6-ой класс)
Ответ отправлен: 07.01.2007, 18:35

Отвечает: Alexanderus
Здравствуйте, Танасюк Олег Олегович!
Для этого нужно зайти в диспетчер устройсв найти клавиатура, нажать свойства-вкладку драйвер-откатить. Доже самое проделать с мышкой.
Ответ отправил: Alexanderus (статус: 3-ий класс)
Ответ отправлен: 07.01.2007, 22:14

Отвечает: Coupler
Здравствуйте, Танасюк Олег Олегович!
Код для включения-выключения того и другого в приложении.

Приложение:

Ответ отправил: Coupler (статус: Студент)
Ответ отправлен: 08.01.2007, 06:02
Оценка за ответ: 5


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

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

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

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

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

В избранное