Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Интернет: Образование, Работа и Бизнес" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Февраль 2006 → | ||||||
1
|
2
|
3
|
4
|
5
|
||
---|---|---|---|---|---|---|
6
|
7
|
8
|
9
|
10
|
12
|
|
13
|
14
|
15
|
16
|
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
|
27
|
28
|
Статистика
-1 за неделю
Программирование на Delphi (выпуск 42)
Программирование на DELPHI | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Выпуск #42 (26 февраля 2006 г.) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Лидеры по количеству баллов:
Некоторая статистическая информация (по системе "Эксперт"):
Примечание: Под форматированием текста понимается возможность оформлять ответы с использованием html-тегов. Если Вы хотите, чтобы Вашего имени (ника) не было в данной таблице, отправьте письмо по этой ссылке с зарегистрированного у нас адреса. В теле письма, пожалуйста, укажите причину удаления имени из таблицы. Нам важно ваше мнение. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Задать вопрос в рассылку | Задать вопрос с помощью web-формы | Система "Эксперт" | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вопрос #242 (автор вопроса: Zeon; вопрос отправлен: 11.02.2006 22:29): Как подсчитать количество входящего/исходящего трафика с заданного IP адреса? [Ответить на вопрос] Вопрос #243 (автор вопроса: Ilia; вопрос отправлен: 11.02.2006 23:04): Ребят, подскажите, как при запуске ехе-шника сделать его доступным для редактирования (если стоит пометка только чтение) и добавить некоторую информацию в реестр виндоуса и в сам ехе-шник? Как пишется код и где? [Ответить на вопрос] Вопрос #244 (автор вопроса: Naj; вопрос отправлен: 12.02.2006 17:23): Как называется и как используется функция в Delphi, которая позволяет не писать например: абвг аБвг Абвг абВг абвГ АБвг АбВГ и т.д. Чтобы это сразу воспринималось программой как одно и то же слово? [Ответить на вопрос] Вопрос #245 (автор вопроса: Evgen Sandrong; вопрос отправлен: 13.02.2006 00:04): Доброго времени суток! Я познакомился с Делфи буквально пару дней назад. Поэтому, если что не так, то прошу извинить. Вопрос у меня такой: как с помощью Делфи можно выполнить перезагрузку Windows XP? Заранее спасибо. [Ответить на вопрос] Вопрос #246 (автор вопроса: Zhenja; вопрос отправлен: 13.02.2006 11:39): Доброго времени суток! У меня следующий вопрос: есть программа, которая выводит звуковой сигнал по заданному расписанию. Проблема в том, что необходимо определить количество звуковых карточек и програмным путем выводить звуковые потоки из форматов *.wav *.mp3. Пытаюсь реализовать задачу на компоненте FilterGraph из библиотеки DSPACK234 (т.к. мне необходим бесплатный компонент). Но готов принять любой пример на любом компоненте или WinAPI, реализующий данную задачу. Зарание спасибо. [Ответить на вопрос] Вопрос #247 (автор вопроса: Ludmila; вопрос отправлен: 13.02.2006 14:18): Как найти и установить в RaveReport свойства MasterDataView и MasterKey для подчиненной полосы данных? Я этих свойств просто не вижу. DetailKey - без проблем. Может не там ищу? [Ответить на вопрос] Вопрос #248 (автор вопроса: Антон; вопрос отправлен: 14.02.2006 15:22): Как сделать подобную интеграцию в Explorer, как у Mobile Phone Manager и Nokia PC Suite, т.е. добавить новый диск в Мой компьютер и написать сам плагин? [Ответить на вопрос] Вопрос #249 (автор вопроса: Zerg; вопрос отправлен: 14.02.2006 22:09): Уважаемые эксперты, подскажите как дернуть фрейм из AVI файла? В статье http://www.excode.ru/art2846.html все работает, если кодек DivX, а если Xvid то не пашет. [Ответить на вопрос] Вопрос #250 (автор вопроса: Wegga; вопрос отправлен: 16.02.2006 11:49): Как в DataSet найти запись, которая была добавлена последней? Или найти значение максималького ключа? [Ответить на вопрос] Вопрос #251 (автор вопроса: Stavskiys; вопрос отправлен: 20.02.2006 13:58): Нужно передать данные из своего приложения в интернет (скрипту), который в последствии обработает эти данные. Скрипт получает данные из $_POST["x"]. Как организовать передачу, без использования WebBrowser и HTML? Допустим, данные вводятся в Memo1. Спасибо. [Ответить на вопрос] |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Вопрос #231: 1. [Отвечает: Антон Трапезников (статус: Практикант), 13.02.2006 12:25]: Воспользуйтесь типом TBlobStream. Например: procedure GetMemo;
Оценка за ответ: 5. Вопрос #232: 1. [Отвечает: Zeon (статус: Эксперт: 5-ый класс), 11.02.2006 20:55]: Прийдётся писать клиент-сервер. Серверная часть будет работать слокальным реестром удалённой машины и обмениваться необходимымиданными с клиентской частью. Реализовать такое чудо проще всего на сокетах. Оценка за ответ: 4. 2. [Отвечает: Садовников Владимир (статус: Практикант), 11.02.2006 22:28]:Думаю, что здесь достаточно простым решением будет написать свойклиент-сервер, если есть возможность установить его на удалённоймашине. На удалённой машине устанавливается сервер, на твоей - клиент.Вешаешь свой протокол обмена - и всё, подавая с клиента запросы,получаешь ответы. Оценка за ответ: 4. 3. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 11:33]: Необходимоподключитьсякрееструспомощьюфункции RegConnectRegistry, Вы получите ключ HKEY, который потом нужнопозставлять в функции работы с реестром. Естественно необходимо иметьввиду, что у Вас должны быть соответствующие права. Этот пример показывает получение строки версии OCизключа HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion - ProductName для компьютера \\server. // Подключение к удаленному реестру
Оценка за ответ: 5. 4. [Отвечает: Антон Трапезников (статус: Практикант), 16.02.2006 11:00]: Для удаленного управления реестром в винде есть одноименная служба, но для этого надо зайти на комп (удаленно) с тем же логином и паролем, что и у админа + должны быть включены: служба удаленного вызова процедур, служба удаленного управления реестром. Вероятно в винде есть пара недокументированных возможностей для программирования подобных служб, но я в MSDN нашел только одну - RegConnectRegistry. LONG RegConnectRegistry( lpMachineName Можно пойти другим путем и написать прогу вроде систем удаленного администрирования или трояна, где серверная часть устанавливается на удаленной машине и запускается вместе с виндой. В задачи серверной части входит прием команд с клиентской проги (которая стоит у Вас) и, естественно, их выполнение. Для работы с реестром в Win32 API предусмотрено несколько функций: RegConnectRegistry Оценка за ответ: 5. Вопрос #233: 1. [Отвечает: Zeon (статус: Эксперт: 5-ый класс), 11.02.2006 21:03]: Вот например очень простой пример простейший пример чата на сокетах: Клиент: unit Unit1;
Сервер: unit Unit1;
И не забуть кинуть на форму соответствующие компоненты. А еще можешь посмотреть стандартный пример в Delphi: <Delphi dir>\Demos\Internet\Chat. Оценка за ответ: 5. 2. [Отвечает: Садовников Владимир (статус: Практикант), 11.02.2006 22:26]: Используй стандартные компоненты. Посмотри на сайте http://www.delphi.int.ru/ пример чата "точка-точка". Если нужен какой-то протокол, то можешь посмотреть мой пример с "сетевыми шариками". Вообще, в последнее время мне больше понравилось прямое использование библиотеки WinSock - через API. Оценка за ответ: 4. 3. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 14:36]: Интересный вопрос!, какой клиент-сервер Вас интересует? TCP/IP, COM, а может InterBase. Если Вы имели ввиду TCP/IP соединение то вот: // Сервер,- получение данных от клиента
В компонентах TServerSocket и TClientSocket соответственно в сервере и клиенте необходимо настроить порты - указать общий, пока не занатый другой программой порт, и нужно в клиенте в TClientSocket указать адрес сервера в свойстве Address. Оценка за ответ: 5. 4. [Отвечает: midav.land.ru (статус: Студент), 13.02.2006 16:32]: Если у Вас Delphi6, то загляните в папочку Demos/Indy/TCPServer если 7, то в каталоге Demos/Indy лежит текстовый документ, в котором написано, откуда скачать примеры. Там много интересного. Оценка за ответ: 5. 5. [Отвечает: Антон Трапезников (статус: Практикант), 15.02.2006 15:49]: Для этого Вам необходимо использовать сокеты, которые фактически представляют из себя логическую связку вида IP - Port и являются интерфейсом сетевого окончания. Как правило, сокеты базируются на протоколе TCP/IP, но иногда могут работать на других протоколах (например, IPX /etc). Важно помнить, что порты протокола TCP и UDP это не одно и то же! Хорошую статью по программированию серверных сокетов написал Nitro http://www.delphimaster.ru/articles/socksrv/index.html. На моей BDS 2006 компоненты TServerSocket/TClientSocket (описанные в статье) отсутствуют в палитре компонент (по моему, начиная с D6) и для того, чтобы их использовать придется подключит в uses модуль ScktComp, а затем создавать компоненты в коде: sockServer := TServerSocket.Create(frmMainWnd); После этого можете начинать работать. Еще могу рекомендовать компоненты со вкладки Indy, т.к. это очень богатая библиотека реализующая множесто сетевых сервисов. Оценка за ответ: 5. Вопрос #234: procedure TForm1.SkanKey(HKey_: HKEY; KeyStr, Name: string; 1. [Отвечает: Гавриленко Евгений (статус: Эксперт: 2-ой класс), 12.02.2006 2:27]: Внимательно читать MSDN и Delphi Help: String и PChar - не одно и тоже. Запись в MemoryStream осуществляетя через методы write или writebuffer и т.д. Вообщем к делу: var
Ниже выдержка из MSDN: RegEnumValue hKey dwIndex lpValueName lpcValueName lpData lpcbData Return Values Windows Me/98/95: RegEnumValueW is supported by the Microsoft Layer for Unicode. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows Me/98/95 Systems. Оценка за ответ: 5. 2. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 16:21]: Очень интерестную функцию Вы написали, пробовал в ней разобраться, но так и не получилось.. Например, зачем нужна Mem: TMemoryStream;, если она сразу после заполнения освобождается. Ну да ладно, это Ваше дело. В общем я написал функцию - аналог Вашей, она работает без ошибок (мне во-всяком случае не попадались), только я убрал из заголовка параметр KeyStr, так как он не используется. Вот: procedure SkanKey(aKey: HKEY; KeyStr : string; var Value: TRegKeyInfo;
Оценка за ответ: 5. 3. [Отвечает: midav.land.ru (статус: Студент), 13.02.2006 16:30]: Зачем так сложно писать? Не проще ли воспользоваться готовым класом TRegistry. В общем идея следующая: Не ко всем ключам можно обращаться. На некоторых стоит ключ только для чтения или, что ещё лучше, права доступа. И даже админ (Администратор) не может получить к ним доступ. Для этого вначале необходимо приписать права себе на этот ключ (ветку). Это очень похоже на папки. Попробуйте получить доступ к папке System Volume Information (под NTFS). неполучиться, пока не припишешь себе права на неё. ВОзможен также другой вариант, его любят вирусы. Имя ключа можно сделать с использованием непечатаемых символов, от которых стандарным функциям рвёт крышу. Для доступа к таким ключам используют нативные функции. Оценка за ответ: 4. Вопрос #235: 1. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 16:42]: Нужно пытаться открыть Excel файл с помощью Word, если конвертор Microsoft Excel Worksheet установлен выпадет окошко, где нужно щелкнуть Ok и файл будет конфертирован в Word. Далее нужно просто Сохранить как... получившийся документ. К сожалению сделать этот процесс полностью автоматизированным (чтобы не вылетало окошко конвертора) по-видимому невозможно. Вот: var
Соответственно исходники утилитки прилагаю. Загрузить прикреплённый файл >> Оценка за ответ: 5. 2. [Отвечает: Антон Трапезников (статус: Практикант), 15.02.2006 17:28]: Возможно вариант не оптимален, но Вы можете использовать для передачи буфер обмена. Навскидку: Sheet := XLApp.Workbooks[1].WorkSheets[1];
//Копирование в буфер ячеек области A1 - C10 Затем WordDocument.Content.Paste; Вы можете почитать статьи (к сожалению, не помню автора) "По волнам интеграции", они есть в Королевстве Delphi. А также советую посмотреть файлы Word\Excel.pas в \Borland\Delphi\Ocx\Servers. И на последок поковырятся в MSDN: Оценка за ответ: 5. Вопрос #236: 1. [Отвечает: SiNiK (статус: Эксперт: 3-ий класс), 11.02.2006 21:59]: Для решения этого вопроса, можно воспользоваться JvRichEdit'ом, который входит в состав JVCL (http://homepages.borland.com/jedi/). Оценка за ответ: 4. 2. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 16:57]: Дело в том, что сообщение WM_LBUTTONDBLCLK, которое возникает при двойном щелчке мышкой (левой кнопкой) обрабатывается еще в TControl - в секции protected, а TRichEdit наследуется в конечном счете от TControl, поэтому для того, чтобу получить событие OnDblClick в TRichEdit его необходимо просто определить в секции published. Для этого можно заново переписать компонент TRichEdit (исходники компонента прилагаю), или поправить модуль ComCtrls. Загрузить прикреплённый файл >> Оценка за ответ: 5. 3. [Отвечает: PVS (статус: Студент), 13.02.2006 9:59]: OnDblClick уже есть в RichEdit'e просто он спрятан. Можно его открыть: TMyRichEdit = class(TRichEdit)
Но нужно иметь в виду, что все равно происходит выделение фрагмента текста, по которому Click'аем. Оценка за ответ: 5. 4. [Отвечает: midav.land.ru (статус: Студент), 13.02.2006 16:40]: В компонента RichEdit нет обработчика двойного клика, странно, но кто нам мешает его туда добавить? Для этого пишем наследника TRichEdit и добавляем обработчик сообщения WM_LBUTTONDBLCLK. Оценка за ответ: 3. 5. [Отвечает: Антон Трапезников (статус: Практикант), 15.02.2006 17:38]: Нужно поставить хук на сообщение WM_RBUTTONDBLCLK, которое генерируется когда пользователь делает двойной правый клик. Выдержка из MSDN (прошу прощения, что на английском) The WM_RBUTTONDBLCLK message is posted when the user double-clicks the A window receives this message through its WindowProc function. Syntax WM_RBUTTONDBLCLK WPARAM wParam wParam The high-order word specifies the y-coordinate of the cursor. The coordinate is relative to the upper-left corner of the client area. If an application processes this message, it should return zero. А вот рабочий пример установки глобального хука на мышь (взято из DRKB) ========== Все, что ниже взято из DRKB (Автор Song) ================== Рабочий пример глобальной блокировки правой кнопки мыши: library Project2; Function SysMsgProc(Code:Integer; WParam:LongInt; LParam:LongInt):LongInt; stdcall; procedure Hook(Flag:Boolean); export; stdcall; exports Hook; {$R *.res} begin ---------------------------- unit Unit1; interface uses type type var implementation {$R *.dfm} procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; procedure TForm1.Button1Click(Sender: TObject); procedure TForm1.Button2Click(Sender: TObject); procedure TForm1.FormDestroy(Sender: TObject); end. Файлы для демонстрации можно взять здесь: http://coolsong.narod.ru/hook.rar. Если требуется перехватывать клавиши, тогда из вышеобозначенной теории нам известны варианты: WH_KEYBOARD, WH_KEYBOARD_LL или WH_GETMESSAGE+WM_CHAR/WM_KEYDOWN/UP type var implementation {$R *.DFM} procedure TForm1.hotykey(var msg: TMessage); if (msg.LParamLo = MOD_CONTROL) and (msg.LParamHi = 82) then procedure TForm1.FormCreate(Sender: TObject); id2 := GlobalAddAtom('hotkey2'); procedure TForm1.FormDestroy(Sender: TObject); Блокировка клавиатуры/мыши. Родственная тема, поэтому помещена в этот же вопрос. Итак, заблокировать можно хуком. Но в некоторых случаях можно обойтись и "малой кровью". Procedure BlockInput(ABlockInput : Boolean); stdcall; external 'USER32.DLL'; BlockInput(True); - заблокировать BlockInput(False); - разблокировать Однако имейте ввиду, что BlockInput() не заблокирует CAD. Кроме того, её работа блокируется по нажатию трёх пальцев.Для блокировки CAD в w9x, мы можем использовать режим скринсэйвера, в NT, увы никак. "rundll32 keyboard,disable" - заблокироовать клавиатуру Запустить эти команды мы можем самое простое через ShellExecute() или WinExec(): ======================================================= Оценка за ответ: 5. 6. [Отвечает: Константин Завальный (KOZ) (статус: Эксперт: 1-ый класс), 21.02.2006 0:47]: Вообще-то у компонента RichEdit нет события OnDblClick. Но можно сделать примерно так. В событии OnMouseUp пропишите: if clck=true then Кинуть на форму таймер, в OnTimer пропишите clck:=false; И не забудьте в разделе var объявить переменную clck типа boolean. Работает это так: Изначально clck равна false. Если вы нажали один раз на компонент, то clck примет true. Когда Вы второй раз щелкните по компоненту, то выполнится ваш код. А чтобы задать максимально допустимый интервал между кликами, используется таймер, обнуляющий clck. Удачи! Оценка за ответ: 4. 10. [Отвечает: sattar (статус: Эксперт: 3-ий класс), 21.02.2006 19:08]: File\Close All Оценка за ответ: 5. Вопрос #237: 1. [Отвечает: Деревянко Евгений (статус: Эксперт: 5-ый класс), 12.02.2006 3:38]: Все помещется в одной строчке кода =)) Memo.Lines.LoadFromFile(ExtractFilePath(paramstr(0)) + Edit.text); Оценка за ответ: 4. 2. [Отвечает: Aleksey Mayboroda (статус: Эксперт: 2-ой класс), 12.02.2006 8:30]: if FileExists(Edit1.Text) then
Оценка за ответ: 5. 3. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 17:06]: 1. Для текста: var
2. Для картинок: var
И добавьте модуль Jpeg в список модулей, чтобы JPEG изображения тоже загружались. Оценка за ответ: 5. 4. [Отвечает: Антон Трапезников (статус: Практикант), 13.02.2006 12:40]: var
С картинками будет также, только Memo нужно будет заменить на Image. Оценка за ответ: 5. 5. [Отвечает: PVS (статус: Студент), 13.02.2006 10:03]:
Текст: Оценка за ответ: 5. 6. [Отвечает: Середюк И. А. (статус: Эксперт: 1-ый класс), 13.02.2006 15:02]: unit Poist_file;
Оценка за ответ: 5. 7. [Отвечает: midav.land.ru (статус: Студент), 13.02.2006 16:07]: Не понял, что понимается под словом "анализируется". Для кнопки, которая должна обрабатывать действие по загрузке должна выглядеть так: Memo1.lines.LoadFromFile(ExtractFilePath(Application.exename)+Edit1.text); "Фразу" ExtractFilePath(Application.exename)+ можно опустить, но в некоторых случаях, когда текущим каталогом будет не каталог с exe-шником, не будет работать Для картинок не сложней Image1.Picture.LoadFromFile(ExtractFilePath(Application.ExeName)+Edit1.text); Оценка за ответ: 5. 8. [Отвечает: tmp (статус: Эксперт: 1-ый класс), 14.02.2006 0:26]: memo1.lines.loadfromfile(edi1.text) - загружает в мемо файл с именем, что находится в edit1. Оценка за ответ: 3. 9. [Отвечает: Константин Завальный (KOZ) (статус: Эксперт: 1-ый класс), 21.02.2006 1:04]: procedure TForm1.Button1Click(Sender: TObject); //При щелчке на кнопке
Некоторые комментарии: Оценка за ответ: 5. 10. [Отвечает: sattar (статус: Эксперт: 3-ий класс), 21.02.2006 18:39]:
1.Memo1.Lines.LoadFromFile(getcurrentdir+'\'+Edit1.Text+'.txt'); Оценка за ответ: 5. Вопрос #238: 1. [Отвечает: Alexey (статус: Эксперт: 2-ой класс), 13.02.2006 15:57]:Не знаю на сколько Вам поможет то, что скажу, но все же - у TQueryTableProducer есть метод SetQuery и SetDataSet - тык вот в TDSTableProducer, от которого порожден этот самый TQueryProducer есть вот что - procedure SetDataSet(ADataSet: TDataSet); virtual; abstract; , что наводит на мысль - пишем класс обертку для TDSTableProducer на подобие TQueryTableProducer, Только вместе строк типа AQuery:=(DataSet as TQuery); Пишем AQuery:=(DataSet as TADOQuery); или делаем метод SetQuery перегруженным. Вот такие мысли после беглого просмотра исходников, за работоспособность сего не берусьучаться, но это выглядит вполне осуществимым и даже не очень сложным. Оценка за ответ: 5. 2. [Отвечает: Антон Трапезников (статус: Практикант), 17.02.2006 10:20]: Попробуйте добавить следующий код в обработчик создания модуля QueryTableProducer1.Query := TQuery(ADOQuery1); Оценка за ответ: 4. Вопрос #239: 1. [Отвечает: SiNiK (статус: Эксперт: 3-ий класс), 11.02.2006 21:59]: Размер файла можно определить так: function GetFileSize(FileName: String): Integer;
Bitrate можно попробовать определить с помощью компонента TAudioInfo (www.yandex.ru :-)) Определение позиции TrackBar можно с помощью TrackBar1.Position. Оценка за ответ: 4. 2. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 17:50]: 1. Определение размера. Дело в том, что у Вы не можете записать на CD диск, а функция Reset пытается открыть файл в режиме полного доступа и поэтому вызов проваливается. Вы можете установить режим "только для чтения" и все получится. Вот: var
Учтите только, что функция FileSize возвращает число записей в файле, а не размер в байтах, поэтому А нужно объявлять как file of Byte. Можно получить размер и через потоки, вот так: var
А можно и с помощью API: var
2. Качество звука. Могу предложить только первое, что пришло в голову - взять размер файла и поделить его на длительность файла в секундах. Это конечно не лучший вариант, результат будет неточным, т.к. пренебрегается размер заголовка и ID3 тег. Вот как это могло бы выглядеть: var
3. Как выяснить позицию по X движка в trackbare? Просто установить TrackBar.Max := MP3.Length и тогда позиция TrackBar-а будет позицией проигрывания. Оценка за ответ: 5. 3. [Отвечает: midav.land.ru (статус: Студент), 13.02.2006 16:16]:
Мож Вы имели ввиду не MP3 а Audio - CD. Иначе говорить про то, что он
на компакте нет смысла.
Но если всё заключается в MP3, то необходимо прочитать теги, а
оттудова извлекается много интересной инфы.
Вобщем читайте по нижеприведённым ссылкам, там примеры и много
интересного (и всё на русском): Оценка за ответ: 5. 4. [Отвечает: senser@elsite.ru (статус: Эксперт: 2-ой класс), 17.02.2006 21:29]: размер файла который находится на CD диске? function X_FileSize(FileName:string):int64;
Оценка за ответ: 5. Вопрос #241: procedure TMainForm.TreeViewChange(Sender: TObject; Node: TTreeNode); От "железа " не зависит - пробовал на других машинах - результат тот же. В Help'е ничего про WebBrowser нет. Подскажите, как правильно рганизовать загрузку HTML-страничек с локального диска. 1. [Отвечает: SiNiK (статус: Эксперт: 3-ий класс), 11.02.2006 21:59]: Delphi 2005, XP+SP2, IE6. Кликал до отупения :-) , но ничего не произошло. Оценка за ответ: 2. 2. [Отвечает: Матвеев И.В. (статус: Практикант), 12.02.2006 18:00]: Не уверен, что ошибка в этом, но вообще за типом OleVariant водятся такие вот непонятные ошибки. Попробуйте так: var
Оценка за ответ: 4. 3. [Отвечает: midav.land.ru (статус: Студент), 13.02.2006 16:22]: Это проблема компонента ShellTreeView. Сыроват он немного. Варианты выхода. Попробовать перейти на 7 Делфи, так как в общем она более устойчива. Переписать компонент ShellTreeView под себя, благо примеров сети много. Простенький вариант здесь: http://www.delphiworld.narod.ru/base/listview_files_list.html или здесь http://www.delphiworld.narod.ru/base/files_list_with_icons.html. Оценка за ответ: 5. 4. [Отвечает: sattar (статус: Эксперт: 3-ий класс), 21.02.2006 18:08]: Попробуй вместо Navigate2 -> Navigate. Оценка за ответ: 3. Все вопросы и ответы на них Вы всегда можете найти на нашем сайте в разделе "Delphi-Эксперт". |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Написание простого медиа-проигрывателя (часть 2) Автор: Ерёмин Андрей Продолжим нашу работу над медиа-проигрывателем, основанным на Windows Media Player. Хочется подчеркнуть, что кардинально изменить что-либо не удастся, поэтому в этой статье я просто расскажу о небольших усовершенствованиях и на этом мы остановимся. Обычно во время воспроизведения мы должны видеть название файла, который проигрывается в данное время. Давайте снабдим проигрыватель этой функцией. Для этого изменим обработчик пункта меню "Открыть" на следующее: if OpenDialog.Execute then
Как работает добавленная строка? Функция ExtractFileName() возвращает имя файла из указанного пути - то, что нам нужно. "SMP" - это сокращённо "Simple Media Player" :-) Наконец, значение присваивается заголовку формы. Что ещё можно добавить? Да, действительно странный проигрыватель... Можно сделать окошко "О программе". Для этого в меню добавьте соответствующий пункт и назовите его "О программе..." По правилам Windows любая надпись, приводящая к открытию диалогового окна, должна заканчиваться многоточием - "..." Рекомендую запомнить это правило и всегда и везде его использовать. Окно можно создать "с нуля": File - New - Form (в разных версиях Delphi названия пунктов меню могут отличаться). А ещё можно воспользоваться окном, подготовленным разработчиками - открываем File - New - Other, переходим на вкладку Forms, выбираем "About box" и нажимаем "ОК". В результате создаётся форма. В ней напишите название программы, своё имя, версию... Далее создаём обработчик для созданного пункта меню AboutBox.ShowModal; Пытаемся запустить программу, но Delphi выдаёт предупреждение, что второй модуль не связан с первым и предлагает это сделать. Соглашаемся, и приложение запускается. Вот и всё. Конечно, такому проигрывателю далеко до Winamp, Light Alloy и даже до стандартного Windows Media Player, но основы, я думаю, понятны. Если вы повнимательнее изучите список ActiveX-компонент, то найдёте там много интересного. Присылайте свои статьи по адресу info@delphi.int.ru с темой 'Articles' (без кавычек), и они будут опубликованы в ближайших выпусках рассылки и на сайте. Также вы можете заполнить вот эту форму. Большая просьба: статью оформляйте в -txt или -doc формате и используйте -zip или -rar сжатие (без самораспаковки). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Из данного раздела Вы можете скачать различные файлы: компоненты, plug-in'ы для Delphi, документацию по программированию, программы, игры, написанные на Delphi и всё остальное... Вы можете добавить свои файлы в данный раздел. Чтобы сделать это, пожалуйста, заполните форму на сайте. К сожалению, новых файлов на сайте нет.
Чтобы перейти к разделу "Файловый архив" на сайте, нажмите на эту ссылку. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Здесь представлены ссылки на дружественные сайты. Обмен ссылками и баннерами всегда приветствуется. Здесь представлены самые последние ссылки:
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
:)) Присылайте свои анекдоты по этой ссылке: info@delphi.int.ru и они обязательно будут опубликованы. Желательно на компьютерную тему. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Товарищи программисты! Проявляйте свою активность. Давайте помогать друг другу! Если вы не нашли ответа на свой вопрос, не отчаивайтесь! Количество подписчиков постоянно растёт и, наверняка, найдётся тот человек, который поможет вам! а сегодня всё. До встречи через неделю!
Ведущий рассылки, Ерёмин Андрей. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Наши реквизиты в системе WebMoney: R379291065219, Z165075684614. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Наш сайт: http://www.delphi.int.ru/ E-mail: admin@delphi.int.ru; info@delphi.int.ru; expert@delphi.int.ru Страница рассылки: http://subscribe.ru/catalog/comp.soft.prog.delphifaq |
В избранное | ||