Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Определение имени загружаемой картинки


Автор: prostik 18.6.2007, 22:36
Ребята помогите. В компе есть три картинки людей, как при нажатии на кнопку "загрузить" загружать в Image1 любую из этих картинок? А потом при нажатии на кнопку "определить",в Memo1 писалось название той картинки,которая была загружена. 
(Т.е. каждая картинка сохраненная в компе имеет свое имя(алена, игорь,паша). Выбрал я допустим картинку с именем "алена", и нажал на кнопку определить,чтобы оно писало в мемо результат имя "алена"?)

Автор: hoRUS 18.6.2007, 23:19
Загружаем картинку

Код

Image1->Picture->LoadFromFile("Path")


А уж потом определяем имя файла из пути "Path" типа AnsiString. Если картинки лежат в той же директории, что и исполняемый файл, то достаточно в качестве названия картинки привести её имя. Вот тебе и имя картинки.

Вот например навсеидку код, который загружает картинку BMP с заданным именем, находящуюся в директории исполняемого файла и помещающего заданное имя в Memo1:

Код

 AnsiString PictureName = "Test.bmp";                       //Имя файла
 Image1 -> Picture -> LoadFromFile(PictureName);  
 PictureName.Delete(PictureName.Pos(".bmp"), 4);   //Убираем расширение .bmp
 Memo1 -> Lines -> Add(PictureName);                          

Автор: Klin 18.6.2007, 23:30
prostik, если названия у вас указанны типа: алена, игорь, паша,  то зачем определять названия? Далее, как написал 
hoRUS, путь к изображению можно получить через свойство Path. А о том, как получить названии из файла (вместо "алена.jpg" получить "алена") написано в http://forum.vingrad.ru/index.php?showtopic=148832&view=findpost&p=1117013.

Добавлено через 7 минут и 42 секунды
Стоп, какой Path? Что-то я не сообразил...

И еще на всякий случай напишу как это сделать smile

Код

 Image1->Picture->LoadFromFile(ListBox1->Items->Strings[ListBox1->ItemIndex]); // ListBox у вас, полагаю
 Memo1->Text = ChangeFileExt(ListBox1->Items->Strings[ListBox1->ItemIndex],"" ); // запись в мемо

Автор: prostik 19.6.2007, 00:57
нет, у меня не листбокс. а просто имэдж, две кнопки и поле-мемо.
нажимая на первую должна загружаеться картинка из директории. при нажатии на вторую кнопку, в мемо пишется имя этой картинки.
но спасибо вам огромное

Автор: Klin 19.6.2007, 13:56
prostik, не много не понял, если имя статистическое, то зачем вообще функции писать? smile Просто выводим в Memo заданный текст... Но вряд ли так стоит вопрос smile

Автор: SerK 19.6.2007, 21:55
prostic!
Возможен вариант решения вашей проблемы:
1. Создать три строковых переменных с именами файлов рисунков.
2. При загрузке в LoadFromFile("писать переменную, а не имя");
3. В обработчике нажатия на кнопку создать еще одну строковую
    переменную - она и будет сравнивать и вводить значение в Memo.
4. Расширение  *.bmp  можно убрать функцией переменная.SubString(..,..);
Это упрощенный вариант.

Автор: Klin 19.6.2007, 22:22
SerK, прочитай сообщения поста 2 назад smile

Автор: SerK 19.6.2007, 22:47
Klin!
Вы правы, почти плагиат. Но, честное слово, не умышленно.
Дорвался до интернета, уже четыре часа сиджу, в  глазах
туман. Мое извинение - noRus.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)