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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2007, 17:54   #1
Kocapb
Пользователь
 
Регистрация: 28.10.2007
Сообщений: 61
По умолчанию ListBox - передача в список файлов.

Здраствуйте, необходимо в ListBox, или Memo или другой компонент передать название всех графических файлов в выбранном каталоге. Делаю навигатор для просмотра графичиских файлов. Необходимо сделать компонент где бы отображались
все графические файлы из выбранного каталога, как я считаю ListBox для этого подходит, но как в него залить файлы из выбранного каталога не знаю =\.

я использую для выбора каталога стандартную функцию SelectDirectory
вот код клавишы для открытия:
if(SelectDirectory("Выберете каталог где хранятся картинки: ","",
aPath) != 0)
{
aPath = aPath + "\\"; \\AnsiString aPath текущий каталог из которого запущена программа
FirstPicture(); \\ показать 1ую картинку в выбранном каталоге
}

помогите начинающиму освоить этот прием

Последний раз редактировалось Kocapb; 29.11.2007 в 18:10.
Kocapb вне форума Ответить с цитированием
Старый 30.11.2007, 20:31   #2
merax
Форумчанин
 
Регистрация: 27.12.2006
Сообщений: 955
По умолчанию

Мне вот интересно Вы книжки читаете?
Я не стал морочиться накатал на С++ Builder т.к. больше ничего под рукой нет.

Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSearchRec Rec;
AnsiString Path = "C:\Program Files\Borland\CBuilder6";
if (FindFirst(Path + "\*.*", faAnyFile, Rec));
while (FindNext(Rec) == 0)
{
 ListBox1->Items->Add(Rec.Name);
 Memo1->Lines->Add(Rec.Name);
}
FindClose(Rec);
}
Ето она исчет все файлы в указанном каталоге и загоняет их в ЛистБокс, если Path поменяешь на "*.*" то искать будет в текущем каталоге.

А смотри как красиво это все на C# делается, никакого гемора я обожаю Sharp

Код:
private void button1_Click(object sender, EventArgs e)
        {
            string Path = @"c:\windows";
            string SearchPattern = "*.*";

            DirectoryInfo di = new DirectoryInfo(Path);
            DirectoryInfo[] directories =
                di.GetDirectories(SearchPattern, SearchOption.TopDirectoryOnly);
            foreach (DirectoryInfo dir in directories)
            {
                //ListBox l = new ListBox();
                listBox1.Items.Add(dir.FullName + dir.LastWriteTime);
            }

Последний раз редактировалось merax; 30.11.2007 в 21:37.
merax вне форума Ответить с цитированием
Старый 01.12.2007, 18:59   #3
Kocapb
Пользователь
 
Регистрация: 28.10.2007
Сообщений: 61
По умолчанию

спасибо читаю, но очень мало хорошой лит-ры по практике.
Kocapb вне форума Ответить с цитированием
Старый 13.05.2010, 23:01   #4
rapuhabass
 
Регистрация: 13.05.2010
Сообщений: 9
По умолчанию

похожий вопрос волнуе, только вот чего-то этот кусок не хочет работать, компилю в билдере все хорошо нажимаю на Button1 и ничего не происходит
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSearchRec Rec;
AnsiString Path = "C:\Program Files\Borland\CBuilder6";
if (FindFirst(Path + "\*.*", faAnyFile, Rec));
while (FindNext(Rec) == 0)
{
ListBox1->Items->Add(Rec.Name);
Memo1->Lines->Add(Rec.Name);
}
FindClose(Rec);
}

Вот ещё один вопрос сразу есть, как потом из ListBox выбрать файл и чтоб содержимое файла в memo показалось?
rapuhabass вне форума Ответить с цитированием
Старый 13.05.2010, 23:15   #5
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Скорее всего, проблема в следующем:
Код:
AnsiString Path = "C:\\Program Files\\Borland\\CBuilder6";
Хотя, возможно, билдер со своими паскалевскими замашками одинарные слэши проглотит не поперхнувшись...
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.05.2010, 18:27   #6
rapuhabass
 
Регистрация: 13.05.2010
Сообщений: 9
По умолчанию

Спасибо помогло, но ещё бы текст отображаемого файла в ListBox в Memo запихнуть, попытался так неработает:

if (ListBox1->ItemIndex < 0)
ShowMessage("Вы не сделали свой выбор");
else
Memo1->Clear();
Memo1->Lines->Add(LoadFromFile(IntToStr(ListBo x1->ItemIndex + 1)));
rapuhabass вне форума Ответить с цитированием
Старый 14.05.2010, 18:54   #7
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

ItemIndex - это всего лишь номер выбранной строчки. Вот так можно загрузить в Мемо содержимое файла, имя которого указано в выбранной строчке ЛистБокса:
Код:
Memo1 -> Lines -> LoadFromFile(ListBox1 -> Items -> Strings[ListBox1 -> ItemIndex]);
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 14.05.2010, 19:28   #8
rapuhabass
 
Регистрация: 13.05.2010
Сообщений: 9
По умолчанию

Вроде сейчас все и правильно, но вот только когда компилируешь пишет сообщение Cannot open File
rapuhabass вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Потоки, передача файлов по сети SeЯgey Работа с сетью в Delphi 3 02.04.2011 23:51
Передача файлов на север.. k51102 Работа с сетью в Delphi 1 09.04.2008 16:20
Передача файлов по UDP GAGARIN-NEW Работа с сетью в Delphi 3 15.11.2007 22:45
Передача файлов на WEB-сервер SeregaP Работа с сетью в Delphi 18 09.04.2007 08:41
Передача файлов wolff Работа с сетью в Delphi 3 03.03.2007 15:54