Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2011, 04:44   #1
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию Поиск файлов и загрузка из ListBox'a

программа простая загружает из listBox'a файлы и распределяет по кнопкам,
20 кнопок и 20 файлов
вот пример
Код:
fullName1:=ListBox1.Items.Strings[0];
Button1.Caption:=ExtractFileName(fullName1)+' Play';
fullName2:=ListBox1.Items.Strings[1];
Button2.Caption:=ExtractFileName(fullName2)+' Play';
fullName3:=ListBox1.Items.Strings[2];
идет по Items.String[номер строки]
и так прописано 20 раз, знаю что быдлокод
но что делать если файлов не 20 а 15, то пишет ошибку, что в listBox'e не найдена строка например 16,17,18 и т.д. так как загружено только 15 строк
так как сделать поиск по файлам и загружать столько сколько есть
типо for i:=0 to 20 do сколько там файлов есть столько и будет загружать
waka2ebawer вне форума Ответить с цитированием
Старый 09.04.2011, 05:02   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
var
  i: Integer;
  B: TButton;
begin
  for i := 0 to ListBox1.Items.Count - 1 do begin
    //
    B := FindComponent('Button' + IntToStr(i)) as TButton;
    if (nil <> B) then
      B.Caption := ExtractFileName(ListBox1.Items[i]) + ' Play';
  end;
end;
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 09.04.2011, 08:55   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

veniside +1

маленькая помарочка, позволю себе поправить...
кнопки у TC нумеруются от единицы (Button1, Button2 и т.д.)
поэтому, лучше так:
Код:
    B := FindComponent('Button' + IntToStr(i+1)) as TButton;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.04.2011, 13:20   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> поэтому, лучше так:

а, точно, промазал с индексом.

(з.ы. интересно, что заставило создателей Дельфи нумеровать компоненты с 1, а не с 0? Точнее, понятно что, так было в Visual Basic, с которого первая Дельфи взяла основы. Ну а почему в бейсике с 1, это тоже понятно, домохозяйки не осилят нумерацию с 0. От і маємо що маємо.. ошибку на ровном месте ))
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 09.04.2011, 14:09   #5
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию

fullname: array[1..20] of string;

пишет ошибку
может of string = (mp1,mp2,mp3...) глупая идея загружать

а все добавил не в const а в var

Код:
var
  i: Integer;
  B: TButton;
    fullname: array[1..20]  of string;
begin
  for i := 0 to ListBox1.Items.Count - 1 do begin
    //
    B := FindComponent('Button' + IntToStr(i+1)) as TButton;
     if (nil <> B) then
     begin
     fullname[i + 1] := ListBox1.Items[i];
     B.Caption := ExtractFileName(fullname[i+1]) + ' Play';
     end;
    end;
  end;
но все равно выдает ошибку не удается определить устройство по указанному расширению

а зачем fullname[i+1] ведь исчисление от 1 идет , это же не цикл он не перебирает же или как

ну это только одна кнопка а таких 20

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
   if Button1.Tag=0 then
      begin
         Button1.Tag:=1;
         Button1.Caption:=ExtractFileName(fullName1)+' Stop';
         mp1.FileName:=fullName1;
         mp1.Open;
         mp1.Play;
      end
else begin
         Button1.Tag:=0;
         Button1.Caption:=ExtractFileName(fullName1)+' Play';
         mp1.Stop;
      end;
end;
на mp1.play пишет ошибку

Последний раз редактировалось waka2ebawer; 09.04.2011 в 14:43.
waka2ebawer вне форума Ответить с цитированием
Старый 09.04.2011, 14:35   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А что будет, если файлов будет больше двадцати?
ReportCube вне форума Ответить с цитированием
Старый 09.04.2011, 14:35   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
пишет ошибку
Буквами невидимками на прозрачной канве?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.04.2011, 14:48   #8
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Буквами невидимками на прозрачной канве?
не удается определить устройство по указанному расширению
и выделяет mp1.play
waka2ebawer вне форума Ответить с цитированием
Старый 09.04.2011, 14:49   #9
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от ReportCube Посмотреть сообщение
А что будет, если файлов будет больше двадцати?
ну 20 нормально хватает, а если больше то просто игнорироваться будут
waka2ebawer вне форума Ответить с цитированием
Старый 09.04.2011, 15:00   #10
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

Тогда совершенно непонятны эти проблемы. Если ListBox1.Items.Objects[n] будет ссылаться ну нужную кнопку, то не требуется никакого поиска - всегда знаете, что показывать и что с чем связано. Если требуется обратная связь от кнопки к ListBox1.Items[n], храните номер индекса в TButton.Tag
ReportCube вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка файлов на сайт grafgrial Работа с сетью в Delphi 3 16.02.2011 19:04
Загрузка файлов pavelslap PHP 8 14.01.2011 09:05
загрузка файлов Dimarik PHP 3 17.07.2010 23:41
Загрузка файлов + ProgressBar record222 Общие вопросы Delphi 4 18.04.2010 18:27
Загрузка файлов Vladya Помощь студентам 3 01.07.2009 08:34