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

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


Информационный Канал Subscribe.Ru


RusFAQ.ru: Программирование на C++ Builder / Delphi

Выпуск № 321
от 25.04.2004, 22:20

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 1488
Отправлено ответов: 3396
Активность: 228.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Boriss
Статус: Профессиональный
Общий рейтинг: 158.97
URL: Программирование на Паскале
[Подробней >>]
Pawel
Статус: Профессиональный
Общий рейтинг: 159.47
[Подробней >>]
CJ
Статус: Опытный
Общий рейтинг: 125.34
URL: Персональный сайт Каратецкого Кирилла.
Телефон: +375297353706
[Подробней >>]
 
sir henry
Статус: Профессиональный
Общий рейтинг: 159.94
[Подробней >>]
Dyma
Статус: Начальный
Общий рейтинг: 113.63
[Подробней >>]
Ray Adams
Статус: Доверительный
Общий рейтинг: 125
[Подробней >>]
 
boris
Статус: Начальный
Общий рейтинг: 104.34
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1476. Когда выделяешь слово в RichEdit (BCB 5.02), рядом со словом выделяется еще какойто пробел... что эт... (ответов: 1)
Вопрос № 1477. Вопрос 1: как кроме через MediaPlayr(компонент) ,воспроизвести видео , звук ? Можно отвечать по все... (ответов: 5)
Вопрос № 1479. Добрый день. Есть MDI форма. Из нее вызываю другую форму (Child) procedure TfrmMain.cmdConnectClick(... (ответов: 6)

Вопросов: 3, ответов: 12


 Вопрос № 1476

Когда выделяешь слово в RichEdit (BCB 5.02), рядом со словом выделяется еще какойто пробел... что это за фигня? как это исправить?



Вопрос отправлен: 20.04.2004, 22:23
Отправитель: Alexey

[Следующий вопрос >>] [Список вопросов]

Отвечает Boriss

Доброе время суток, Alexey!
Что для одного фигня ...
Посмотреть, есть ли и отрезать программно в обработчике события

Ответ отправлен: 21.04.2004, 10:26
Отправитель: Boriss


 Вопрос № 1477

Вопрос 1: как кроме через MediaPlayr(компонент) ,воспроизвести
видео , звук ? Можно отвечать по всему отдельно , можно вместе.
Вопрос 2:как запустить exe из программы на Delphi?



Вопрос отправлен: 20.04.2004, 23:04
Отправитель: DoctorSERG

[Следующий вопрос >>] [Список вопросов]

Отвечает Pawel

Здравствуйте, DoctorSERG!
1) через WinApi
2)WinExec, ShellExecute

Ответ отправлен: 22.04.2004, 19:51
Отправитель: Pawel


Отвечает CJ

Приветствую Вас, DoctorSERG!
1) Сначала указываешь медиаплееру имя файла так: Mediaplayer1.filename:='C:primer.wav';
Потом пишешь mediaplayer1.play; В этом компоненте можно проиграть любой файл-мультимедии
хоть звуковой, хоть видео, главное что-бы в системе поддерживался.
2) WinExec('С:прога.exe',sw_normal); // запуститься прога.exe с обыкновенным размером окна
shellExecute(0,Nil,pChar('C:програ.exe'),Nil,Nil,SW_NORMAL); // тоже самое, только в uses необходимо прописать модуль shellapi

Ответ отправлен: 21.04.2004, 16:05
Отправитель: CJ


Отвечает sir henry

Доброе время суток, DoctorSERG!
Ответ сразу по первому и второму вопросу. Есть специальная функция WinAPI для запуска внешних программ или документов (вордовских, экселевских, звуков, видео и вообще, чего угодно):
function ShellExecute(hWnd: HWND; Operation, FileName, Parameters, Directory: PChar; ShowCmd: Integer): HINST; stdcall;
hWnd - окно-владелец;
Operation - "Open", чтобы открыть файл или программу;
FileName - имя файла, который Вы пытаетесь запустить;
Parameters - параметры :)))));
Directory - рабочий каталог;
ShowCmd - в каком виде будет отображаться окошко запущеной программы.
Эта функция находится в модуле ShellAPI.
-----
Звук можно проиграть такой функцией WinAPI:
function PlaySound(pszSound: PChar; hmod: HMODULE; fdwSound: DWORD): BOOL;
pszSound - имя файла или NIL, если из ресурса;
hmod - хэндл ресурса или NIL, если из файла.
fdwSound - флаги и их много :)
Для проигрывания из ресурса такие:
SND_RESOURCE or SND_ASYNC
Для проигрывания из файла такие:
SND_FILENAME or SND_ASYNC.
-----
Более подробную справку о функциях смотрите в справке по WinAPI.

Ответ отправлен: 21.04.2004, 05:53
Отправитель: sir henry


Отвечает Boriss

Добрый день, DoctorSERG!
2) По-простому, WinExec, ShellExecute, но лучше освоить CreateProcess
1) Можно тем же ShellExecute, если у Вас что установлено для проигрывания, а так WinAPI, как описал Sir Henry

Ответ отправлен: 21.04.2004, 10:24
Отправитель: Boriss


Отвечает Dyma

Здравствуйте, DoctorSERG!
1:
Можешь сам попробовать создавать компонент похожий на MediaPlayer или попробуй написать наследника MediaPlayer. А лучше поищи в Inet-е, чтоб долго не мучиться.
2:
Можно воспользоваться функцией: CreateProcess из модуля Windows. The CreateProcess function creates a new process and its primary thread. The new process runs the specified executable file in the security context of the calling process.
А еще функции ShellExecute или ShellExecuteEx из модуля ShellAPI. Функция может открыть или напечатать определенный файл. Исполняет как Windows-приложения так и открывает файлы-документы (.txt, .doc, ...).
Но, если пугают функции со многими параметрами, то легче всего воспользоваться функцией WinExec (модуль Windows). Хотя данная функция является устаревшей и вместо нее рекомендуется использовать функции ShellExecute или CreateProcess.
Решать тебе какая лучше подойдет для твоего приложении.


Ответ отправлен: 21.04.2004, 12:21
Отправитель: Dyma


 Вопрос № 1479

Добрый день.
Есть MDI форма. Из нее вызываю другую форму (Child)
procedure TfrmMain.cmdConnectClick(Sender: TObject);
begin
application.CreateForm(TfrmLogin, frmLogin);
end;
На этой форме две кнопки OK и Cancel.
procedure TfrmLogin.cmdCancelClick(Sender: TObject);
begin
frmLogin.free;
end;
procedure TfrmLogin.cmdOKClick(Sender: TObject);
begin
frmLogin.free;
end;
Ну так вот - если сразу нажать ОК то программа вылетает с первой ошибкой. Если первый раз нажать Cancel форма нормально закрывается, вызываю ее еше раз и нажимаю ОК прога вылетает со второй ошибкой. Cancel всегда работает нормально.
Что бы все что значило и как с этим боротся ?
Спасибо.


Приложение:


Вопрос отправлен: 22.04.2004, 12:34
Отправитель: Jevgenic

[Следующий вопрос >>] [Список вопросов]

Отвечает sir henry

Приветствую Вас, Jevgenic!
А зачем Вы вызываете метод Free? Чем Вас Close не устраивает?
У Вас налицо обращение к объекту после его уничтожения. Поменяйте Free на Close и у Вас опять будет все нормально :).

Ответ отправлен: 22.04.2004, 15:18
Отправитель: sir henry


Отвечает Ray Adams

п”пѕп±яЂпѕпµ пІяЂпµпјяЏ яЃяѓя‚пѕпє, Jevgenic!
п’яЃпµ пґпµп»п°пµя‚яЊяЃяЏ пЅпµпІпµяЂпЅпѕ, пІпѕя‚ пё я‚яѓя‡п° пѕя€пёп±пѕпє.
п’пѕя‚ пєп°пє пЅп°пґпѕ яЃпѕп·пґп°пІп°я‚яЊ child я„пѕяЂпјяѓ.
procedure TfrmMain.cmdConnectClick(Sender: TObject);
begin
TfrmLogin.Create(Self);
end;
пІпѕя‚ пєп°пє я„пѕяЂпјп° пґпѕп»п¶пЅп° яЃпµп±яЏ п·п°пєяЂя‹пІп°я‚яЊ
procedure TfrmLogin.cmdCancelClick(Sender: TObject);
begin
Close;
end;
procedure TfrmLogin.cmdOKClick(Sender: TObject);
begin
Close;
end;
пё яЃп°пјпѕпµ пЁп°п»пІпЅпѕпµ пІяЃя‚п°пІпёя‚яЊ пІ пѕп±яЂп°п±пѕя‚пєяѓ OnClose я‚п°пєпѕп№ пєяѓяЃпѕпє пєпѕпґп°
Action:=caFree;
-------
пЎяѓпґяЏ пїпѕ пЅп°п·пІп°пЅпёяЏпј я‚я‹ пІя‹пІпѕпґпёя€ пІя‹пІпµяЃя‚пё я„пѕяЂпјяѓ, я‡я‚пѕ-я‚пѕ я‚п°пј пІпІпѕпґпёя€ пё п·п°пєяЂя‹пІп°пµя€ пµпµ, я‚п°пє пїпѕя‡пµпјяѓ я‚пѕпЁпґп° я‚я‹ яЌя‚пѕ пґпµп»п°пµя€ пєп°пє MDIChild , п° пЅпµ пЅпѕяЂпјп°п»яЊпЅя‹пј пґпёп°п»пѕпЁпѕпІя‹пј яЂпµп¶пёпјпѕпј?

Ответ отправлен: 22.04.2004, 13:31
Отправитель: Ray Adams


Отвечает Dyma

Добрый день, Jevgenic!
Попробуй сделать то же самое, но чуть по-другому.
procedure TfrmMain.cmdConnectClick(Sender: TObject);
begin
frmLogin:=TfrmLogin.create(application);
frmLogin.Show; или frmLogin.ShowModal;
end;
procedure TfrmLogin.cmdCancelClick(Sender: TObject);
begin
frmLogin.free;
можно ставить и frmLogin:=nil;
//Если использовал ShowModal, то можешь добавить для выхода из child form ModalResult:= mrOk; или mrCancel ...
end;
procedure TfrmLogin.cmdOKClick(Sender: TObject);
begin
frmLogin.free;
можно ставить и frmLogin:=nil;
end;

Ответ отправлен: 22.04.2004, 14:27
Отправитель: Dyma


Отвечает boris

Доброе время суток, Jevgenic!
Проблема может заключатся в том, что метод free вызывается из той же формы, т.е. получается, что форма хочет освободить саму себя. В общем нерекомендуется так делать. Надо освобождать форму не из TfrmLogin, а откуда нибудь другого места

Ответ отправлен: 22.04.2004, 15:04
Отправитель: boris


Отвечает Boriss

Здравствуйте, Jevgenic!
Явно, что нажав Step - Вы увидели бы точно, где и что произошло
А так, лучше или создавать и освобождать каждый раз (в каждом обработчке событий) или проверять frmLogin на "вшивость", то есть на NIL.

Ответ отправлен: 23.04.2004, 08:43
Отправитель: Boriss


Отвечает Pawel

Доброе время суток, Jevgenic!
Вы с начало уничтожаете обьект(free) а потом к нему обращаетесь...
Лучьше заменить free на close

Ответ отправлен: 24.04.2004, 12:47
Отправитель: Pawel



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


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


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (12)
Perl (1)
Builder / Delphi (18)
Pascal (17)
Basic / VBA (3)
Java / JavaScript (4)
PHP (10)
Криптография (6)
WinAPI (11)
Радиоэлектроника (7)
Пользователю
Windows 95/98/Me (30)
Windows NT/2000/XP (43)
"Железо" (23)
Поиск информации (14)
Администратору
Windows NT/2000/XP (24)
Linux / Unix (6)
Юристу
Гражданское право (11)
Семейное право (8)
Трудовое право (10)
КоАП (7)

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




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное