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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодом, просьба найти ощибки. 
:(
    Опции темы
kind_programmer
Дата 11.5.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго вечера...

Код

procedure ListFileDir(Path: string; FileList: TStrings);
 var
   SR: TSearchRec;
 begin
   if FindFirst(Path + '*.avi', faAnyFile, SR) = 0 then
   begin
     repeat
       if (SR.Attr <> faDirectory) then
       begin
         FileList.Add(SR.Name);
       end;
     until FindNext(SR) <> 0;
     FindClose(SR);
   end;
 end;

procedure TForm3.ListBox1DblClick(Sender: TObject);
var
i: integer;
begin
for i:=0 to ListBox1.items.Count - 1 do
if ListBox1.Selected[i] then begin
s:=listbox1.Items[i]
end;    s:='c:\avi\'+s;  edit1.Text:=s;
form4.MediaPlayer1.Open;
form4.MediaPlayer1.FileName:=s;
form4.MediaPlayer1.Play;
form4.Show;             
end;

procedure TForm3.BitBtn2Click(Sender: TObject);
begin
   ListFileDir('avi\', ListBox1.Items);
 end;


Действие в следующем....Ищем в avi/ все файлы *.avi
Весь список, отображаем в ListBox. 
DblClick на определенном пункте должен открывать другую форму с TMediaPlayer и воспроизводить этот файл.

Вот собственно код. Долго парился, но пока толком не получается. Что я не так делаю?
Помогите, пожалуйста...

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


Опытный
**


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

Репутация: 5
Всего: 19



Путь для FindFirst должен быть полным.
PM MAIL   Вверх
lukas
Дата 11.5.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 15



kind_programmer, 


а потому что FileList - это параметр функции должен быть переменной!!!

Код

procedure ListFileDir(const Path: string; var FileList: TStrings);
 var
   SR: TSearchRec;
 begin
   if FindFirst(Path + '*.avi', faAnyFile, SR) = 0 then
   begin
     repeat
       if (SR.Attr <> faDirectory) then
       begin
         FileList.Add(SR.Name);
       end;
     until FindNext(SR) <> 0;
     FindClose(SR);
   end;
 end;





Это сообщение отредактировал(а) lukas - 11.5.2007, 18:19


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
_hunter
Дата 11.5.2007, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(kind_programmer @  11.5.2007,  17:17 Найти цитируемый пост)
Вот собственно код. Долго парился, но пока толком не получается. Что я не так делаю?

а что не получается то?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
kind_programmer
Дата 12.5.2007, 06:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



_hunter, поиск файлов осуществляет..все они в ListBox появляются, но не удается по DblClick запусть воспроизведение на отдельной форме с   TMediaPlayer'ом. 
PM MAIL   Вверх
kind_programmer
Дата 12.5.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



И да...кое-что еще, у TMediaPlayer, что звук не придусмотрен?
PM MAIL   Вверх
lukas
Дата 12.5.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 15



Посмотри внимательно и найди 10 отличий...  smile 


Код


procedure TForm3.ListBox1DblClick(Sender: TObject);
var
i: integer;
begin
for i:=0 to ListBox1.items.Count - 1 do
if ListBox1.Selected[i] then begin
s:=listbox1.Items[i]
end;    s:='c:\avi\'+s;  edit1.Text:=s;
form4.MediaPlayer1.FileName:=s;
form4.MediaPlayer1.Open;
form4.MediaPlayer1.Play;
form4.Show;             
end;




шутка.... сначала нужно прописывать путь к файлу, а потом уже его открывать... 


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
kind_programmer
Дата 12.5.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



lukas, гениально  smile !!! Выпьем за это!!! Но эффект то же, форма открывается, но файл не проигрывается..
PM MAIL   Вверх
maniaks1
Дата 12.5.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код


Var TempPath : array[0..MAX_PATH] of char;
      FileName:String;
      s:TsearchRec;

//Открываем нужную папку
procedure TForm1.Button1Click(Sender: TObject);
var
TitleName : string;
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
BrowseInfo.hwndOwner := Form1.Handle;
BrowseInfo.pszDisplayName := @DisplayName;
TitleName := 'Please specify a directory';
BrowseInfo.lpszTitle := PChar(TitleName);
BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
GlobalFreePtr(lpItemID);
end;
if TempPath<>'' then
  begin
    ListBox1.Items.Clear;
    FindFirst(TempPath+'\*.mp3',faAnyFile,s);
    if s.Name<>'' then ListBox1.Items.Add(' '+s.Name);
    while FindNext(s)=0 do
    ListBox1.Items.Add(' '+s.Name);
    FindFirst(TempPath+'\*.wav',faAnyFile,s);
    if s.Name<>'' then ListBox1.Items.Add(' '+s.Name);
    while FindNext(s)=0 do
    ListBox1.Items.Add(' '+s.Name);
  end;
end;


//Теперь по клику:
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  MediaPlayer1.Close;
  MediaPlayer1.FileName:=String(TempPath)+'\'+ListBox1.Items.ValueFromIndex[ListBox1.ItemIndex];
  MediaPlayer1.Open;
  MediaPlayer1.Play;
  Play:=true;
  SpeedButton1.Enabled:=false;
  SpeedButton2.Enabled:=true;
  SpeedButton3.Enabled:=true;
end;


Взято из рабочего кода, так что всё лишнее можешь убрать.
P.S. При заполнении ListBox я добавляю пробелы, так как при снятии данных, у меня обрезаеться первый символ, если у тебя такой проблемы нет, то просто убери пробелы.

P.P.S.
Код

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, MPlayer,ShellAPI, ShlObj, Buttons; 

Если чего то не хватает, добавь.
PM MAIL ICQ   Вверх
kind_programmer
Дата 12.5.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем огромное спасибо. На сегодня хватит, иначе я комп с болкона сброшу... smile 
maniaks1, особая благодарность. Заюзаю, посмотрим, что выйдет. При удаче отпишусь.
PM MAIL   Вверх
MetalFan
Дата 13.5.2007, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



maniaks1, Код составления списка файлов содержит недочет, а именно - не происходит закрытие "сеанса" поиска функцией FindClose.
[quote=Delphi Help]Note:    FindFirst allocates resources (memory) which must be released by calling FindClose.[/url]
+ не анализируется вовзращаемое функцией FindFirst...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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