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

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


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

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

Выпуск № 911
от 31.08.2007, 20:35

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


Вопрос № 99721: Здравствуйте Уважаемые!У меня к Вам вот какой вопрос.Я должен из бинарного файла ридом считывать блочки по 3 байт во временную переменую temp,правильно ли я сделал выбрав её тип как Cardinal(т.е 4-х байтовый),а если правильно расскажите как по байтно...
Вопрос № 99739: Здравсвуйте! Скажите, пожалуйста, как можно в заданной папке с несколькими подпапками найти все mp3 файлы, и добавить их в TreeView. И можно как-нибудь прочесть инфу из тегов -исполнитель и альбом и сортировать их уже по этим полям(плюс и названи...
Вопрос № 99745: Здрасти как сделать чтоб программа запускалась когда Windows полностью загрузился. А то моя программа запускаеться когда окно ПРИВЕТСВИЕ . (Программа без интерфейса) ??!...

Вопрос № 99.721
Здравствуйте Уважаемые!У меня к Вам вот какой вопрос.Я должен из бинарного файла ридом считывать блочки по 3 байт во временную переменую temp,правильно ли я сделал выбрав её тип как Cardinal(т.е 4-х байтовый),а если правильно расскажите как по байтно (от начала или от конца)считается туда этот блочок,если допустим если смотреть в шестнацетиричном редакторе там идёт 00 00 10(как запишется это в 4 байта).
Отправлен: 26.08.2007, 15:33
Вопрос задал: Зотов Геннадий Александрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Coupler
Здравствуйте, Зотов Геннадий Александрович!
Допустим, имеется бинарный файл с содержимым 02 03 04 05 06 07 08 09. Чтобы считать 3 байта, можно использовать процедуру BlockRead(var F: File; var Buf; Count: Integer [var AmtTransferred: Integer]). Переменная типа cardinal занимает 4 байта в памяти, и нетрудно посмотреть, что 3 байта "встанут" на старшие адреса (поставьте breakpoint и посмотрите на temp как на дамп памяти) - она будет иметь вид $02 $03 $04 $00. Также можно читать 3 байта в массив array [1..3] of byte - там байты будут по порядку, как в файле. Примеры чтения в приложении.

Приложение:

Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 26.08.2007, 16:38
Оценка за ответ: 5
Комментарий оценки:
спасибо за подробный ответ с примерами


Вопрос № 99.739
Здравсвуйте!
Скажите, пожалуйста, как можно в заданной папке с несколькими подпапками найти все mp3 файлы, и добавить их в TreeView. И можно как-нибудь прочесть инфу из тегов -исполнитель и альбом и сортировать их уже по этим полям(плюс и название трека взять оттуда же)? Может быть для этого нужны какие-нибудь компоненты(JVCL уже есть)?
Спасибо!

Приложение:

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

Отвечает: Уваров Андрей Александрович
Здравствуйте, Skvitek!
Вопрос 1:
Смотрите пример кода. Вытащите все что вам нужно оттуда. Код рабочий - я из своей программы вытянул. Это полностью юнит с кодом поиска и добавления файлов в потоке в список. Просто список! Без ID3 Тэгов. (Они так называются правильно)
Frm_Main.MP3List это список.
Frm_Main.E_Of это лейбл с колличеством файлов которые нашло.
В приложении DFM файл с формой. Он использует TProgressCyl и Alcione компоненты. (Красивого вида) Их можно найти на Torry.net либо я могу вам их выслать по email.
Вопрос 2:
Есть такой компонент TID3Engine. Через него читаются и пишутся тэги. Тоже на torry.net он есть. Вот пример чтения тегов:

procedure TFrm_ID3.LoadID3( FileName: string );
begin
try
ID3Engine := TID3Engine.Create( Frm_ID3 );
ID3Engine.FileName := FileName;
ID3Engine.Active := True;
L_Version.Caption := IntToStr( ID3Engine.Header.VersionNumber ) + '.' + IntToStr( ID3Engine.Header.VersionRevision );
with Frm_ID3 do
with ID3Engine do
begin
E_Name.Text := Title;
E_Artist.Text := Artist;
E_Album.Text := Album;
E_Genre.Text := Genre;
E_Year.Text := Year;
end;
ID3Engine.Active := False;
except
MessageBox( handle, PChar( Format( 'Невозможно получить информацию и файле %s!', [ FileName ] ) ), 'Ошибка ID3!', MB_ICONERROR + MB_OK );
end;
end;

Сортировку уже делайте сами. Скажу только что в DelphiWorld есть много вариантов сортировки. Это уже на ваш вкус.
=============================
Код юнита слишком большой, поэтому он перенесён в Приложение. Эксперт sir henry

Приложение:

---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com

Ответ отправил: Уваров Андрей Александрович (статус: Студент)
Ответ отправлен: 26.08.2007, 20:42
Оценка за ответ: 5


Вопрос № 99.745
Здрасти как сделать чтоб программа запускалась когда Windows полностью загрузился. А то моя программа запускаеться когда окно ПРИВЕТСВИЕ . (Программа без интерфейса) ??!
Отправлен: 26.08.2007, 20:22
Вопрос задал: Василий Васильевич Сквозняков (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Уваров Андрей Александрович
Здравствуйте, Василий Васильевич Сквозняков!
Windows уже загрузился, это загружается рабочий стол и программы. К сожелению никак нельзя сделать чтобы программа запустилась только когда все остальные закончат работу. Можно попробовать принудительно ожидать например 20 сек., тогда можно быть уверенным что почти все загрузилось. Так же вы можете попробовать отслеживать загрузку CPU, но тут можно очень сильно просчитаться. Так как какая-нибудь программа может сразу начать грузить процессор.
---------
Обращаться в ICQ: 66550088 (Ally) или E-Mail: AvePassion@GMail.Com
Ответ отправил: Уваров Андрей Александрович (статус: Студент)
Ответ отправлен: 26.08.2007, 20:46

Отвечает: Виктор Пырлик
Здравствуйте, Василий Васильевич Сквозняков!

Да поместите в автозапуск и всё. Программа не будет запускаться "когда окно приветствие", потому что, это отрабатывает для конкретного пользователя и на стадии регистрации пользователь не известен.

---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 26.08.2007, 23:25


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

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

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

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

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


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


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

В избранное