Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для Alesha55535
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 32

Имя и директория файла

31.10.2018, 13:30. Показов 1746. Ответов 10

Студворк — интернет-сервис помощи студентам
При добавлении имени файла в listbox(nme) пишет ошибку.Думаю это связано с 1 и 2.
Но как тогда получить директ файла и его имя.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __fastcall TForm1::Jnrj1Click(TObject *Sender)
{
 String nme="q",locc;
 int i,i2;
if (OpenTextFileDialog1->Execute()) {
        Memo1->Lines->LoadFromFile(OpenTextFileDialog1->FileName);
        locc=ExtractFileDir(OpenTextFileDialog1->FileName);              //1
       nme=ExtractFileName(OpenTextFileDialog1->FileName);              //2
 
       for (i = 0; i < ListBox1->Count; i++) {
 
 
        if (ListBox1->Items->Strings[i]==nme) {
            i2=i;
        }
       } 
       if (ListBox1->Items->Strings[i2]==nme) {
 
       }else ListBox1->Items->Add(nme);
}
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.10.2018, 13:30
Ответы с готовыми решениями:

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения/
C++

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить с этого рядка имя файла без расширения
На с++

Как узнать полное имя файла зная его краткое имя?
например при запуске программы достаточно написать &quot;Excel&quot; или &quot;Calc&quot; при этом система уже в курсе где этот файл лежит. как программно...

10
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
31.10.2018, 13:51
Лучший ответ Сообщение было отмечено Alesha55535 как решение

Решение

Alesha55535, вы собираетесь работать со строками возможно еще пустого списка...? Предлагаю присмотреться к операции spisok->IndexOf(stroka); это не дает ошибки даже в случае пустого списка.
Вот пример:
C++
1
2
3
4
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     Label1->Caption = ListBox1->Items->IndexOf(Edit1->Text);
}
Миниатюры
Имя и директория файла  
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33400 / 21510 / 8236
Регистрация: 22.10.2011
Сообщений: 36,908
Записей в блоге: 12
31.10.2018, 14:12
nick42, это бесполезно. В прошлой теме я несколько раз пытался донести опасность даже попытки доступа к элементу с индексом, превышающим размер листбокса. Не хотят слышать (и читать). Пока у самих программа не рухнет в самый неподходящий момент - не поверят.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
31.10.2018, 14:20
Вероятно. Хотя это не логично; если в списке ни одного item'а, - любая операция даже с первой строкой (которой нет) бессмысленна. В такой список можно только добавлять. Вот когда строк хотя бы две, то их уже можно переставлять, переименовывать, удалять... .
0
 Аватар для Alesha55535
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 32
31.10.2018, 15:59  [ТС]
nick42, Но как реализовать item -> имя и директория
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
31.10.2018, 16:55
Как реализовать ваш замысел, который вы не озвучили? Не знаю. Вот интересная логика у людей... - опубликуют кусок кода, чаще не работающего, и потом долго и нудно всё сообщество начинает выяснять: что же ему все-таки надо. Вы думаете -фрагмент программы на С++ объяснит лучше слов замысел автора? Не уверен; мне во всяком случае лучше простыми словами.
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
31.10.2018, 17:10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
if (OpenTextFileDialog1->Execute()) {
        Memo1->Lines->LoadFromFile(OpenTextFileDialog1->FileName);
        locc=ExtractFileDir(OpenTextFileDialog1->FileName);              //1
       nme=ExtractFileName(OpenTextFileDialog1->FileName);              //2
//Вот до сюда все было понятно: 
//выбрали в диалоге файл. 
//загрузили его в Мемо, 
//разделили полное имя файла на путь и непосредственно имя
//и занесли их в разные переменные
 
//А вот дальше начинается бред, который Вам необходимо объяснить: 
//что Вы хотели этим добиться? 
       for (i = 0; i < ListBox1->Count; i++) {
 
 
        if (ListBox1->Items->Strings[i]==nme) {
            i2=i;
        }
       } 
       if (ListBox1->Items->Strings[i2]==nme) {
 
       }else ListBox1->Items->Add(nme);
}
0
 Аватар для Alesha55535
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 32
01.11.2018, 11:45  [ТС]
D1973,
Запрещаю добавлять подобные в items
C++
1
2
3
4
5
6
7
8
9
10
for (i = 0; i < ListBox1->Count; i++) {
 
 
        if (ListBox1->Items->Strings[i]==nme) {
            i2=i;
        }
       } 
       if (ListBox1->Items->Strings[i2]==nme) {
 
       }else ListBox1->Items->Add(nme);
0
Модератор
 Аватар для D1973
9926 / 6463 / 2457
Регистрация: 21.01.2014
Сообщений: 27,416
Записей в блоге: 3
01.11.2018, 12:40
Абстрагируемся пока от того факта, что Ваш код уронит программу в случае пустого списка... Предположим, что какие-то записи в нем все же есть... Давайте разберем этот чудо-кот по косточкам (для большей наглядности я его переформатировал...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
for (i = 0; i < ListBox1->Count; i++)
//организовали цикл по айтемам ЛистБокса... ладно (как я уже сказал, пока мы считаем, что записи в нем есть...)  
 {
    if (ListBox1->Items->Strings[i]==nme) 
//Если очередной из айтемов равен имени файла без пути
      {
            i2=i;
//тогда переменная i2 получает значение номера найденного айтема...
      }
 } 
//Оп-па... цикл закончился... И что мы имеем в сухом остатке?
//В лучшем случае, если что-то найдено, в переменной i2 содержится индекс айтема... 
//Если совпадений 2 или более - в i2 - индекс последнего из найденных
//А если нет?
//Если не один айтем не равен переменной nme, то i2 может быть равной либо 0, если была объявлена глобально
//либо может быть равна... А хрен знает - чему... Мусору какому-нибудь...
if (ListBox1->Items->Strings[i2]==nme)
//Опять проверяем, а вправду ли айтем с индексом i2 равен переменной nme
//Спрашивается - нафига? А если в предыдущем цикле ничего не было найдено и в i2 - просто мусор?
//Вот Вам еще один вылет программы! 
 {
//Но, даже если чудо случилось и программа до сих пор не вылетела (исчезающе малый процент вероятности)
//то что должно произойти??? Операторные скобки пусты! 
 }
//И, наконец, если таки ничего не найдено, если программа до сих пор работает, если...
//Тогда мы смело добавляем в ЛистБокс очередной айтем...
else ListBox1->Items->Add(nme);
//Уф-ф-ф!!!

Не по теме:

Недавно видел мельком по телевизору передачу под названием "Где логика?". Так вот, логики и в той передаче и в этом коде - примерно одинаковое количество, но программа хотя бы позиционирует себя, как юмористическая, Вы же, как я понял, на полном серьезе утверждаете, что этим кодом Вы

Цитата Сообщение от Alesha55535 Посмотреть сообщение
Запрещаю добавлять подобные в items
М-да...


Предвижу сакраментальный вопрос: "Что делать?"
Читать про класс TStrings и в частности про метод этого класса IndexOf() и использовать его. Но, собственно, об этом уже говорил nick42 в посте #2, но его, как я понял, Вы не услышали...
0
 Аватар для Alesha55535
0 / 0 / 0
Регистрация: 29.10.2017
Сообщений: 32
01.11.2018, 13:44  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Читать про класс TStrings и в частности про метод этого класса IndexOf() и использовать его.
Это мой старый огрызок кода, уже поменял на indexof()
0
01.11.2018, 15:46

Не по теме:

Цитата Сообщение от Alesha55535 Посмотреть сообщение
Это мой старый огрызок кода
Впредь, когда вопрос задаете, выкладывайте актуальный код, который вызывает ошибку, а не "старый огрызок"...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.11.2018, 15:46
Помогаю со студенческими работами здесь

Имя файла в PlaySound = имя переменной
Всем привет. Осваиваю С++, пока знаю на уровне школьника-троечника. Дорабатываю для своих целей одну опенсорсную прогу, возможно, в...

Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого католога
Помогите пожалуйста!!! Залание: Дано полное имя файла, т.е путь к файлу, имя и расширение. Выделить из строки только имя первого...

Выделять из имени каждого файла имя компьютера и имя учётной записи и записывать их в два файла соответственно
здравствуйте, подскажите... Есть например, 10 файлов (.txt) в названии которых написано имя компьютера и имя учетной записи Так же в...

Дана строка содержащая полное имя файла.Выделить из этой строки только имя файла без расширения
1.Дан символ С.Вывести его код (то есть номер в кодовой таблице) 2. Дан символ С.Вывести два символа, первый из которых предшествует...

Дана строка, содержащая полное имя файла. Выделить из этой строки имя и расширение файла
дана строка, содержащая полное имя файла, т.е. имя диска, список каналов(путь), собственно имя и расширение.выделить 1) из этой строки имя...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru