Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с ListBox и TObject 
V
    Опции темы
Pentium02
Дата 15.9.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Короче пишу плеер. Начал делать плей листы, ну дык вот проблема такова. Надо чтоб он добавлял все mp3'шки из папки в ListBox и чтоб в нём отображалось ТЕГ из mp3, а при двойном щелчке воспроизводился сам файл. При простом добавление одного mp3 файла всё нормально

Код

Form1.channel:=Bass_StreamCreateFile(False, PChar(Form1.OpenDialog1.FileName), 0,0,0);
Listbox1.Items.AddObject(GetTagFile(Form1.Channel), Tobject(Form1.OpenDialog1.FileName));


Но при сканировании папки на наличие mp3 файлов, чтние их тегов и добавление в ListBox глючит, теги читаются правильно, но пути к файлам путаются? вместо одного путя, стоит другой. Вот функция сканирования на mp3 и добавление в ListBox

Код

function GetTagFile(var channel: DWORD): string;
var  FTitleStr: string;
begin
FTitleStr:= TAGS_Read(Channel,
'%IFV2(%ARTI,%ICAP(%ARTI),Unknown artist) - %IFV2(%TITL,%ICAP(%TITL),Untitled)');
GetTagFile:=FTitleStr;
end;

begin
  List.BeginUpdate;
  try
    StartFolder := IncludeTrailingBackslash(StartFolder);
    FindResult := FindFirst(StartFolder + '*.*', faAnyFile, SearchRec);
    try
      while FindResult = 0 do
        with SearchRec do
        begin
          if (Attr and faDirectory) <> 0 then
          begin
            if ScanSubFolders and (Name <> '.') and (Name <> '..') then
              FindFiles(StartFolder + Name, Mask, List, ScanSubFolders);
          end
          else
          begin
            if MatchesMask(Name, Mask) then
              BASS_MusicFree(Form1.channel); 
              BASS_StreamFree(Form1.channel);//Очищение канала
              Form1.channel:=Bass_StreamCreateFile(False, PChar(StartFolder + Name), 0,0,0);//Создание потока
              List.AddObject(GetTagFile(Form1.Channel), Tobject(StartFolder + Name)); //добавление в Лист
          end;
          FindResult := FindNext(SearchRec);
        end;
    finally
      FindClose(SearchRec);
    end;
  finally
    List.EndUpdate;
  end;
end;


Ну и чобственно вызов функции

Код

FindFiles('H:\New3', '*.mp3', ListBox1.Items, True);


Это сообщение отредактировал(а) Pentium02 - 15.9.2006, 19:15
PM MAIL WWW ICQ   Вверх
RA
Дата 15.9.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 14
Всего: 115



Похоже плохо реализован поиск файлов, вот на форуме нарыл простой пример поиска файлов, сравни и может найдёшь что не так.

Код

Procedure FindFile(Dir:string, FileMask: string); 
var SearchRec:TSearchRec; 
begin 
 if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';  
 if FindFirst(Dir+FileMask, faAnyFile, SearchRec)=0 then repeat  
   if (SearchRec.name='.') or (SearchRec.name='..') then continue;  
   if (SearchRec.Attr and faDirectory)<>0 then  
     ScanDir(Dir+SearchRec.name) 
   else  
     Делай_с_найденным_файлом _фсё_что_хочеш(Dir+SearchRec.name); 
 until FindNext(SearchRec)<>0;  
 FindClose(SearchRec);
end; 

FindFile('c:\','*.mp3');


Добавлено @ 20:09 
или даже вот так http://vingrad.ru/DELPHI-DLP-002507
PM   Вверх
Pentium02
Дата 16.9.2006, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Блин всё равно также  smile 
PM MAIL WWW ICQ   Вверх
DonPager
Дата 17.9.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Колдырь
**


Профиль
Группа: Участник
Сообщений: 327
Регистрация: 28.3.2003
Где: Воронеж

Репутация: нет
Всего: 2



а путаются как ? у следующего файла  адрес преведущего ?
если так то ты наверное не вовремя добавляешь объект - поток уже перешёл на следующий файл, а ты всё ещё пишеш про этот...


--------------------
кодер + лодырь = колдырь
PM MAIL ICQ Skype GTalk   Вверх
Pentium02
Дата 17.9.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Путаются вообще не понятно, просто получается каша, у некоторых вообще нет путей.
PM MAIL WWW ICQ   Вверх
Pentium02
Дата 17.9.2006, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Даже так пробовал, но всёравно
Код


address := T.Create;
address.s := String(StartFolder + Name);
Form1.channel:=Bass_StreamCreateFile(False, PChar(StartFolder + Name), 0,0,0);
List.Items.AddObject(GetTagFile(Form1.Channel), Tobject(address.S));
address.Free;

PM MAIL WWW ICQ   Вверх
Matematik
Дата 17.9.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



имхо проще так
Код

var tmp : Pchat;
{...}
tmp := StrNew(PChar(StartFolder + Name));
Form1.channel:=Bass_StreamCreateFile(False, tmp, 0,0,0);
List.Items.AddObject(GetTagFile(Form1.Channel), Tobject(tmp));

Только когда будешь чистить ListBox надо очищать буфер StrDispose(Str: PChar)

PM MAIL WWW ICQ   Вверх
Pentium02
Дата 17.9.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 29.4.2006
Где: Россия

Репутация: нет
Всего: 1



Всё запахало, спасибо большое.
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0653 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.