Вопрос № 75381: Подскажите как прикрутить TrackBar к MediaPlayer соттветственно чтоб и трекбар показывал продвижение и передвигая движок бара можно было курсировать по воспроизводимому файлу? Делаю код в приложении - при воспроизведении рывки - оно и понятно fps и з...Вопрос № 75471: Доброго времени суток уважаемые эксперты !
у меня такой вопрос
как перекинуть в Word значения имеющиеся в DBGrid вместе с названием колонки
если можно ответ по подробней потомучто этого неразу неделал и
неполучалось когда пробовал....Вопрос № 75475: Уважаемые эксперты, нужна ваша помощь.
Необходимо написать программу расчета максимальной глубины бинарного дерева. Дерево должно состоять из 15 и более узов.
Уже неделю копаюсь, не могу ничего понять.
Какие будут соображения?
За...Вопрос № 75488: Уважаемые эксперты!!!
Как получить список программ, установленных на другой машине?...Вопрос № 75497: Привет! Пишу ваш код и по истечению врени 6 секунд ничего не, а в StatusBar пишет Connect timed out!что делать делать, помогите
Вот код...Вопрос № 75508: Сздавствуйте проффессионалы!
Очень нужна помощь. Нужно переделать простенькие процедуры и кусок программы из "С" в Delphi.
У меня с этим проблема, т.к. почти не знаю C!
1. for (i = 0; i < strlen(cryptPw); i++) deskey[i%1...Вопрос № 75509: Добрый день, уважаемые эксперты!
Вопрос мой не по программированию, но все же касающийся Delphi.
У нас есть один большой проэкт и необходимо чтобы два человека одновременно с ним работали. Сейчас решили эту проблему таким образом: я соз...
Вопрос № 75.381
Подскажите как прикрутить TrackBar к MediaPlayer соттветственно чтоб и трекбар показывал продвижение и передвигая движок бара можно было курсировать по воспроизводимому файлу? Делаю код в приложении - при воспроизведении рывки - оно и понятно fps и значение таймера разные вещи, мож у pleera есть какое - то событие - при переходе к след кадру? Подскажите хотя-б для известных значений fps видео.
Приложение:
Отправлен: 12.02.2007, 14:59
Вопрос задал: Sync (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 7)
Отвечает: Ерёмин Андрей
Здравствуйте, Sync!
На самом деле никаких описанных Вами проблем и уж тем более рывков нет. Просто нужно установить для таймера такой интервал времени, чтобы он срабатывал не медленнее, чем обновляются кадры. Дело в том, что интервал вызова события OnTimer (Interval) задаётся в миллисекундах (1 сек = 1000 мс). В этом и заключается Ваша ошибка. Ваш код абсолютно верен и будет прекрасно работать. Установите для таймера Interval = 10. Это среднее время и ползунок будет двигаться плавно. Если ставить большие интервалы (вроде 500 мс
= 0.5 сек), то рывки естественно появятся - пока таймер отсчитает столько времени, сменится несколько десятков кадров. Однако это не всё. Даже при таком подходе есть небольшой подводный камень. Не стоит забывать о количестве делений, т.е. числу возможных позиций ползунка. Если у ползунка будет всего 10 позиций, то таймер ничем ситуацию не спасёт. А посему перед воспроизведением нужно установить для TTrackBar свойство Max в количество кадров текущего открытого файла. Делае
тся это так:
TrackBar.Max:=MediaPlayer.Length;
Свойство Length у TMediaPlayer отвечает за количество кадров в файле. А свойство Position - соответственно номер текущего кадра.
Всё остальное в Вашем коде написано верно. Под словом "кадр" здесь условно понимается кадр из видео-файлов, но и с аудио-файлами всё будет работать.
Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор) Россия, Тула WWW:Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом. ICQ: 286867644 ---- Ответ отправлен: 13.02.2007, 20:03 Оценка за ответ: 3 Комментарий оценки: Я знаю что интервалы отчитываются в миллисекундах. Но ведь и при 10 и при 1 в интервале таймера - рывки. Наверное, я чего -то не догоняю все равно,
или мои авишки с частотой кадров 200 кГц - нестандартны.
Вопрос № 75.471
Доброго времени суток уважаемые эксперты !
у меня такой вопрос
как перекинуть в Word значения имеющиеся в DBGrid вместе с названием колонки
если можно ответ по подробней потомучто этого неразу неделал и
неполучалось когда пробовал.
Отправлен: 13.02.2007, 03:55
Вопрос задал: Fins (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Fins!
Есть такой компонент EkRTF, он позволяет "выплюнуть" данные в заранее подготовленный в Word шаблон.
Оказался очень удобным.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Уважаемые эксперты, нужна ваша помощь.
Необходимо написать программу расчета максимальной глубины бинарного дерева. Дерево должно состоять из 15 и более узов.
Уже неделю копаюсь, не могу ничего понять.
Отвечает: Базанов Иван Александрович
Здравствуйте, Попов Евгений!
Алгоритм может быть такой:
Предположим что узел дерева описывается так:
PTreeItem=^TTreeItem;
TTreeItem=record
Data :pointer;
Left, Right : PTreeItem
end;
Функция вычисления высоты (она же максималиная глубина) дерева:
function MaxDeep(pItem : PTreeItem):Integer;
begin
Result := 0;
if pItem=nil then
Exit
else
Result := Max(MaxDeep(pItem^.Left), MaxDeep(pItem^.Right));
end;
Вот собственно и все. Просто рекурсивный вызов функции измерения высоты для поддеревьев и взятие максимума от высот слева и справа.
--------- Программист ошибается дважды: первый раз при рождении, второй при выборе профессии
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Попов Евгений! Базанов Иван Александрович, конечно, в правильном направлении пошел, но я что-то не вижу, в каких случаях функция вернет отличное от нуля значение.
Исправленная функция:
function MaxDeep(pItem: PTreeItem; depth: integer):Integer;
begin
if pItem=nil then begin
Result := depth; // экономим немного машинного времени.
Exit
end else
Result := Max(MaxDeep(pItem^.Left, depth+1), MaxDeep(pItem^.Right, depth+1));
end;
При вызове функции надо в качестве первого параметра передать вершину дерева, а в качестве второго — нуль.
--------- Не узнаешь - не попробуешь.
Как получить список программ, установленных на другой машине?
Отправлен: 13.02.2007, 08:15
Вопрос задал: Osa87 (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir henry
Здравствуйте, Osa87!
Для этого Вам нужно удаленно подключится к реестру той машины. Класс TRegistry это позволяет:
Registry.RegistryConnect("\Имя_компьютера");
Перед этим необходимо указать главный ключ:
Registry.RootKey:=HKEY_LOCAL_MACHINE;
После этого открываете ключ:
SOFTWAREMicrosoftWindowsCurrentVersionUninstall
и после этого начинается самое интересное. :) Перебираете все подключи и если в них находится непустое значение DisplayName, то это именно та программа, которая сидит в списке "Панель управление - Установка и удаление программ".
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 13.02.2007, 09:53 Оценка за ответ: 5 Комментарий оценки: Спасибо за оперативный ответ, попробую!
Отвечает: Gladiator
Здравствуйте, Osa87!
А ещё существует WMI-технология (2K, XP), где имеется класс Win32_Product.
Отвечает: Gladiator
Здравствуйте, Павлов Сергей Сергеевич!
Не знаю, имеется ли у вас какой-нибудь почтовый клиент, где можно взять данные для своей программы. Host'ом, к примеру, может быть ip-адрес почтового сервера (если он в локальной сети "172.21.2.241") или DNS-имя ( если в интернете "mail.onego.ru"). Имя пользователя и пароль - их вы должны знать назубок. Если вы все данные верно ввели и почтовый сервер реально существует, то всё должно работать, так как у меня это работает и в локальной сети и по диалапу.
А если ваш сервер тупит, то можно увеличить таймаут.
Ответ отправил: Gladiator (статус: 9-ый класс)
Ответ отправлен: 13.02.2007, 13:00 Оценка за ответ: 5 Комментарий оценки: Спасибо большое! Очень помогло!!!
Вопрос № 75.508
Сздавствуйте проффессионалы!
Очень нужна помощь. Нужно переделать простенькие процедуры и кусок программы из "С" в Delphi.
У меня с этим проблема, т.к. почти не знаю C!
1. for (i = 0; i < strlen(cryptPw); i++) deskey[i%14] ^= cryptPw[i];
Отвечает: Сухомлин Кирилл Владимирович
Здравствуйте, Мурник Роман!
Часть перевел — дальше вы и сами по аналогии сделаете.
Конструкции типа "if (!deskey)" надо заменять на "if (deskey <> nil) then".
Приложение:
--------- Не узнаешь - не попробуешь.
Ответ отправил: Сухомлин Кирилл Владимирович (статус: Специалист)
Ответ отправлен: 13.02.2007, 16:14 Оценка за ответ: 5 Комментарий оценки: Спасибо. Попробую ))) На самом деле это только половина. Надо-бы заняться изучением С++
Вопрос № 75.509
Добрый день, уважаемые эксперты!
Вопрос мой не по программированию, но все же касающийся Delphi.
У нас есть один большой проэкт и необходимо чтобы два человека одновременно с ним работали. Сейчас решили эту проблему таким образом: я создал другой файл проэкта у себя на компьютере и занес туда ссылки, чтобы файлы проэкта загружались по сети. Но теперь постоянно у нас возникают проблемы с сохранением, сохраняешь модуль, потом открываешь его - а там того что дописал нет. Приходится сначала вспоминать, чего именно там нет, и писать опять. Может кто посоветует, как наладить общую работу над одним проэктом, чтобы
меньше проблем?
Отправлен: 13.02.2007, 11:01
Вопрос задал: Leshka (статус: 1-ый класс)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Leshka!
Попробуйте использовать программу StarTeam (Входит в Delphi) - это управление проектами в команде.
Однако она поддерживает только иерархическую структуру проекта. У меня проект с несколькими головами и она отказалась работать.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 13.02.2007, 11:08 Оценка за ответ: 5 Комментарий оценки: Большое спасибо за совет!!! Буду разбираться с StarTeam
Отвечает: Igor_
Здравствуйте, Leshka!
Для работы над проектом командой лучше использовать какую-либо систему контроля версий.
Общий смысл системы контроля версий:
Есть репозиторий, в котором все исходные коды.
Каждый разработчик извлекает себе рабочую копию, и работает с ней. После чего он может подвердить свои изменения в репозиторий.
Также обновляет свою рабочую версию из репозитория (изменения, которые делали другие).
Я пользуюсь SVN-ом (раньше работал с CVS, но потом перешел на SVN).
http://subversion.tigris.org - сам SVN (сервер)
http://tortoisesvn.net/ - интерфейс пользователя к нему.
Ответ отправил: Igor_ (статус: 1-ый класс)
Ответ отправлен: 13.02.2007, 12:55 Оценка за ответ: 5 Комментарий оценки: Спасибо за совет. Только вот что будет, если несколько разработчиков работают в одно время с одним модулем? или такого нельзя допускать?
Отвечает: Ерёмин Андрей
Здравствуйте, Leshka!
Вопрос на засыпку: как Вы думаете, а как пишут Windows? Тоже вот таким способом - открывают общий доступ к файлам и их одновременно все правят? Конечно же нет! Одновременный доступ к файлам даст сбой. Да что там сбой - даже если и сбоя не будет, то изменения бдут постоянно теряться, потому что каждый будет работать со старой копией, а обновлять файлы в режиме реального времени нельзя. Так вот, а теперь метод решения проблемы. Можно обойтись и без сторонних программ (хотя если StarTeam, про которую упомянули,
с этим справиться - это просто отлично). Смысл технологии в том, что всю программу нужно разделить на модули. Проще говоря, распределяя работу, каждый выбирает себе область, которую он будет разрабатывать и делает он её отдельно, в отдельном проекте. Все функции складываются в отдельный модуль. После того, как всё готово, модуль легко подключить к существующему проекту и он будет прекрасно работать. В то же время модуль можно изменять и изменения будут проявляться уже при
каждом следующем билде программы. Дополнительный плюс такого метода в том, что каждый отвечает за свой участок кода и может безболезненно с ним экспериментировать и отлаживать его. Это позволяет сразу отлавливать ошибки, которые в большом проекте найти очень сложно, если какая-то из функций написана неверно. Желаю удачи!
--------- Нет правила без исключений. Правило без исключений - исключение из правил.
Ответ отправил: Ерёмин Андрей (статус: Профессор) Россия, Тула WWW:Программирование на Delphi. Всё для программиста. Файловый архив, статьи, помощь, советы, обмен опытом. ICQ: 286867644 ---- Ответ отправлен: 13.02.2007, 16:35 Оценка за ответ: 3 Комментарий оценки: Да, это одно из простейших решений этой проблемы, но в данном случае модули связаны между собой настолько, что этот метод к сожалению не подойдет,
полюбому нужно чтобы несколько человек могли работать с одним модулем
Отвечает: Химяк Виктор Васильевич
Здравствуйте, Leshka!
Я не ручаюсь за точность, но по моему для этих целей с дистрибутива Delphi нужно установить программу Remotе Debbuger Server.
Ответ отправил: Химяк Виктор Васильевич (статус: 3-ий класс)
Ответ отправлен: 13.02.2007, 20:17 Оценка за ответ: 2 Комментарий оценки: Не знаю, насколько это правда но за ответ спасибо. И все же постарайтесь в следующий раз перед тем как отвечать удостовериться в правильности ответа.