Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/76: Рейтинг темы: голосов - 76, средняя оценка - 4.54
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641

OpenDialog

24.09.2013, 10:22. Показов 16363. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
При открытии файла в C++Builder XE

C++
1
2
3
4
5
{if (OpenDialog1->Execute())
 
     Memo1->Lines->LoadFromFile(OpenDialog1->FileName);
 
    }
Задаем загрузку содержимое скажем текстового файла в поле мемо1.

Имеется еще едит1 и комбобокс.

Можно ли указать возможность такого открытия чтобы первая строка файла грузилась в мемо, вторая в едит, а третья в комбобокс?
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.09.2013, 10:22
Ответы с готовыми решениями:

OpenDialog
Возникла проблема. в Edit записываю путь к файлу, открытый в OpenDialog в формате "C:\1\text.txt" но в программе такое задание...

OpenDialog
Вот такой код кнопки, открывающей файл, с помощью OpenDialog: void __fastcall TForm1::Button5Click(TObject *Sender) { ...

OpenDialog
при определении пути к файлу в строку str попадают лишние символы \\. То есть, например C:\\qwer\\fddf\\ghhg\\1.cpp Помогите пожалуйста...

40
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
24.09.2013, 14:53  [ТС]
Студворк — интернет-сервис помощи студентам
ок. спасибо!

буду посмотреть! поищу решение на просторах сети и в литературе как в один файл это запихать
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
24.09.2013, 15:24
Цитата Сообщение от Rapsod Посмотреть сообщение
Нет, проблем не вижу. Все очень элементарно.
Найду 15 мин, напишу код. А Вы пока сами подумайте как это реализовать, а потом посмотрите что из этого получиться)
Ну вот собрал проект. Разбирайтесь.
Вложения
Тип файла: rar Test.rar (390.3 Кб, 15 просмотров)
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
24.09.2013, 15:43  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Ну вот собрал проект. Разбирайтесь.
компилируется но файл дата тхт с введенными данными не создает почему-то

Добавлено через 7 минут
Цитата Сообщение от Rapsod Посмотреть сообщение
Ну вот собрал проект. Разбирайтесь.
пардон все работает. я не в той папке смотрел. я смотрел в папке релиз, а надо было в дебаге смотреть!

это просто супер! огромное спасибо!

не знаю чтобы и делал без вас!

аааааааааааааа! дасист фантастишь! верри гут!
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
24.09.2013, 15:43
Цитата Сообщение от coder8763 Посмотреть сообщение
компилируется но файл дата тхт с введенными данными не создает почему-то
Скорее всего что программа запущена не с правами администратора...
P.S. у меня все создается.

Не за что! Учитесь!
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
24.09.2013, 15:59  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Скорее всего что программа запущена не с правами администратора...
P.S. у меня все создается.

Не за что! Учитесь!
все круто, но еще один момент интересует, а через savedialog можно организовать сохранение? я прописал чтобы через savedialog сохранялось, оно сначала выдает ошибку пишет что типа ошибка пути и все такое но потом все равно все сохраняет. в чем заголулина не могу понять
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
24.09.2013, 16:22
Цитата Сообщение от coder8763 Посмотреть сообщение
все круто, но еще один момент интересует, а через savedialog можно организовать сохранение? я прописал чтобы через savedialog сохранялось, оно сначала выдает ошибку пишет что типа ошибка пути и все такое но потом все равно все сохраняет. в чем заголулина не могу понять
Вместо
C++
1
Temp->SaveToFile("Data.txt");
Напишите
C++
1
2
3
4
    if(SaveDialog1->Execute())
    {
        Temp->SaveToFile(SaveDialog1->FileName);
    }
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
24.09.2013, 16:41  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Вместо
C++
1
Temp->SaveToFile("Data.txt");
Напишите
C++
1
2
3
4
    if(SaveDialog1->Execute())
    {
        Temp->SaveToFile(SaveDialog1->FileName);
    }
прикольно. я почти так же написал, но только без if и выдавал ошибку, а теперь с if и все нормально работает!

спасибо вам! грамотных специалистов которые могут толково объяснить новичку что и как так мало!

очень помогли! благодарю!
0
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
26.10.2013, 19:34  [ТС]
Добавлено через 49 секунд
Цитата Сообщение от Rapsod Посмотреть сообщение
Ну вот собрал проект. Разбирайтесь.
как будут выглядеть обработчики нажатия кнопок "сохранить" и "открыть" в вашем тестовом примере если заменить поле мемо на поле tedit?

проблема, не получается это сделать. пишет что ошибка.

могли бы подсказать как это сделать?
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
26.10.2013, 23:52
Цитата Сообщение от coder8763 Посмотреть сообщение
Добавлено через 49 секунд


как будут выглядеть обработчики нажатия кнопок "сохранить" и "открыть" в вашем тестовом примере если заменить поле мемо на поле tedit?

проблема, не получается это сделать. пишет что ошибка.

могли бы подсказать как это сделать?
Добрый вечер!
Не могу понять в чем проблема заменить две строчки)
Вот переделал. Что не нужно, закомментировал. Думаю разберетесь
Вложения
Тип файла: 7z Test.7z (362.4 Кб, 5 просмотров)
2
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
27.10.2013, 00:11  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Добрый вечер!
Не могу понять в чем проблема заменить две строчки)
Вот переделал. Что не нужно, закомментировал. Думаю разберетесь
спасибо. в откомпилированном релизе там два tedit а в исходниках по прежнему поле мемо и старый вариант программы.
если не сложно с полями tedit выложите пожалуйста исходник, а то я уже себе весь мосх сломал пока думал как отделить в вашем прежнем примере в условии if мемо от комбобокс и впихнуть tedit
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
27.10.2013, 00:11
Цитата Сообщение от coder8763 Посмотреть сообщение
спасибо. в откомпилированном релизе там два tedit а в исходниках по прежнему поле мемо и старый вариант программы
Ой, извините! Забыл сохранить сам проект.
Вот обновил.
Вложения
Тип файла: zip Test.zip (486.7 Кб, 6 просмотров)
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
27.10.2013, 17:16  [ТС]
Добавлено через 16 часов 56 минут
Цитата Сообщение от Rapsod Посмотреть сообщение
Ой, извините! Забыл сохранить сам проект.
Вот обновил.
все нормалек работает. клево. спасибо.

но вот только если добавляю еще одно поле tedit последним по очереди, сохраняется все нормально, а при открытии файла в последнее поле открывается значение которое я сохранил в предпоследнем поле tedit, вместо того что было в последнем.

в чем проблема? нужно еще что-то указывать? непонятка какая-то
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
27.10.2013, 17:56
Цитата Сообщение от coder8763 Посмотреть сообщение
Добавлено через 16 часов 56 минут


все нормалек работает. клево. спасибо.

но вот только если добавляю еще одно поле tedit последним по очереди, сохраняется все нормально, а при открытии файла в последнее поле открывается значение которое я сохранил в предпоследнем поле tedit, вместо того что было в последнем.

в чем проблема? нужно еще что-то указывать? непонятка какая-то
Давайте я вам объясню как это всё работает, а дальше вы уже будете добавлять сколько угодно разных компонентов.
Научитесь сохранять их в файл и обратно загружать данные в компоненты.

Суть очень простая, вы просто по очереди записываете данные с каждого компонента в StringList. Но после каждой записи из конкретного компонента, еще вставляете так званый сепаратор (это любой текст служащий как разделитель). После этого сохраняете StringList в файл.
Загружаются данные по тому же принципу как и записывали в StringList, только теперь данные вставляете в компоненты, учитывая ваши разделители. То-есть загружаете файл в StringList, и построчно проходя по StringListу, вставляете данные в компоненты, учитывая разделители.
Думаю ясно разжевал))
Если не ясно, попробуйте дебагером пройтись и посмотреть как именно оно работает
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
27.10.2013, 18:24  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Давайте я вам объясню как это всё работает, а дальше вы уже будете добавлять сколько угодно разных компонентов.
Научитесь сохранять их в файл и обратно загружать данные в компоненты.

Суть очень простая, вы просто по очереди записываете данные с каждого компонента в StringList. Но после каждой записи из конкретного компонента, еще вставляете так званый сепаратор (это любой текст служащий как разделитель). После этого сохраняете StringList в файл.
Загружаются данные по тому же принципу как и записывали в StringList, только теперь данные вставляете в компоненты, учитывая ваши разделители. То-есть загружаете файл в StringList, и построчно проходя по StringListу, вставляете данные в компоненты, учитывая разделители.
Думаю ясно разжевал))
Если не ясно, попробуйте дебагером пройтись и посмотреть как именно оно работает
спасибо. это я уже понял.

в файле сохранения две последние строки:

Edit_separator
2
Edit_separator
3

вот исходный код открытия для этих строк:

/Parsing StringList (Edit)
obj1->Text = Temp->Strings[LineIndex];

//Parsing StringList (Edit)
obj2->Text = Temp->Strings[LineIndex];


в откомпилированной программе при открытии то что было в поле obj1 открывается как в поле obj1 так и в поле obj2, а то что было в поле obj2 не отображается нигде.

может я чего не правильно прописал? может в исходник команды открытия где-то нужно написать что в файле открытия есть сепаратор? если да то где и как?
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
27.10.2013, 18:31
Цитата Сообщение от coder8763 Посмотреть сообщение
в файл сохранения две последние строки:

Edit_separator
2
Edit_separator
3

вот исходный код открытия для этих строк:

/Parsing StringList (Edit)
obj1->Text = Temp->Strings[LineIndex];

//Parsing StringList (Edit)
obj2->Text = Temp->Strings[LineIndex];


в откомпилированной программе при открытии то что было в поле obj1 открывается как в поле obj1 так и в поле obj2, а то что было в поле obj2 не отображается нигде.

может я чего не правильно прописал?
Потому что индексы LineIndex одинаковые!

C++
1
2
3
4
5
//Parsing StringList (Edit)
 obj1->Text = Temp->Strings[LineIndex];
 
 //Parsing StringList (Edit)
 obj2->Text = Temp->Strings[LineIndex];
Измените индекс. Установите тот что соответствует данным в StringList.

Например:

C++
1
2
3
4
5
6
7
        //Parsing StringList (Edit)
    obj1->Text = Temp->Strings[LineIndex];
 
    LineIndex++; //Индекс, который перекинет так званую каретку на другую строку.
 
    //Parsing StringList (Edit)
    obj2->Text = Temp->Strings[LineIndex];
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
28.10.2013, 09:29  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Потому что индексы LineIndex одинаковые!

C++
1
2
3
4
5
//Parsing StringList (Edit)
 obj1->Text = Temp->Strings[LineIndex];
 
 //Parsing StringList (Edit)
 obj2->Text = Temp->Strings[LineIndex];
Измените индекс. Установите тот что соответствует данным в StringList.

Например:

C++
1
2
3
4
5
6
7
        //Parsing StringList (Edit)
    obj1->Text = Temp->Strings[LineIndex];
 
    LineIndex++; //Индекс, который перекинет так званую каретку на другую строку.
 
    //Parsing StringList (Edit)
    obj2->Text = Temp->Strings[LineIndex];


добавил две таких строки

LineIndex++; //Индекс, который перекинет так званую каретку на другую строку

и теперь все работает как следует!

-----------------------------------

не получается добавить второй комбобокс после последнего tedit.
не могли бы показать как это сделать?
так же сразу хочу спросить если я добавлю после второго комбобокс tedit и после него добавлю третий комбобокс то третий добавить будет аналогично второму или там снова будут отличия?

это пожалуй последний вопрос который необходимо прояснить и более не буду приставать к вам вы и так мне сильно помогли, за что очень вам благодарен.

Добавлено через 34 минуты
проблема добавления следующего комбобокс заключается в том что в алгоритме его открытия он связан условиями if с tedit, поэтому без изменений его просто так не получается клонировать просто изменив порядковый номер комбобокс.

с сохранением проблем нет. все сохраняется совершенно нормально когда добавляю второй комбобокс
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
28.10.2013, 17:56
Цитата Сообщение от coder8763 Посмотреть сообщение
добавил две таких строки

LineIndex++; //Индекс, который перекинет так званую каретку на другую строку

и теперь все работает как следует!

-----------------------------------

не получается добавить второй комбобокс после последнего tedit.
не могли бы показать как это сделать?
так же сразу хочу спросить если я добавлю после второго комбобокс tedit и после него добавлю третий комбобокс то третий добавить будет аналогично второму или там снова будут отличия?

это пожалуй последний вопрос который необходимо прояснить и более не буду приставать к вам вы и так мне сильно помогли, за что очень вам благодарен.

Добавлено через 34 минуты
проблема добавления следующего комбобокс заключается в том что в алгоритме его открытия он связан условиями if с tedit, поэтому без изменений его просто так не получается клонировать просто изменив порядковый номер комбобокс.

с сохранением проблем нет. все сохраняется совершенно нормально когда добавляю второй комбобокс
Не вижу никаких сложностей.
Вот набросал новый проект
Вложения
Тип файла: zip Test.zip (486.8 Кб, 3 просмотров)
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
28.10.2013, 20:57  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Не вижу никаких сложностей.
Вот набросал новый проект
ок. разобрался. все получилось. спасибо.

пытаюсь понять принцип добавления в алгоритм открытия комбобокс.

добавил третий комбобокс, прописал

LineIndex = 6; (у меня три текстовых поля вначале)

//Parsing StringList (ComboBox3)
for (int i = LineIndex; i < Temp->Count; i++)
{
ComboBox3->Items->Add(Temp->Strings[i]);
}
//------------------------------------------

ComboBox3->ItemIndex = StrToInt(Temp->Strings[5]);

в результате открывает снова не правильно.

что я снова не так делаю? нужно снова в открытие комбобокс2 прописать что-то типа того что было в комбобокс1?
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
29.10.2013, 11:22
Цитата Сообщение от coder8763 Посмотреть сообщение
ок. разобрался. все получилось. спасибо.

пытаюсь понять принцип добавления в алгоритм открытия комбобокс.

добавил третий комбобокс, прописал

LineIndex = 6; (у меня три текстовых поля вначале)

//Parsing StringList (ComboBox3)
for (int i = LineIndex; i < Temp->Count; i++)
{
ComboBox3->Items->Add(Temp->Strings[i]);
}
//------------------------------------------

ComboBox3->ItemIndex = StrToInt(Temp->Strings[5]);

в результате открывает снова не правильно.

что я снова не так делаю? нужно снова в открытие комбобокс2 прописать что-то типа того что было в комбобокс1?
Да. Делайте все так как с ComboBox1.
Вложения
Тип файла: zip Test.zip (487.4 Кб, 3 просмотров)
1
 Аватар для coder8763
273 / 12 / 1
Регистрация: 18.09.2013
Сообщений: 641
29.10.2013, 11:49  [ТС]
Цитата Сообщение от Rapsod Посмотреть сообщение
Да. Делайте все так как с ComboBox1.
ура! теперь я разобрался как это функционирует и могу теперь сам добавлять или убирать эти элементы для сохранения или открытия! супер!

огромное вам спасибо!

хотел бы я когда-нибудь дорасти до такого уровня знания c++Builder как вы! надеюсь что со временем это произойдет!
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.10.2013, 11:49

Opendialog
Столкнулся с одним подводным камнем(с своими слабыми знаниями) есть opendialog выбирает файл (1.doc) скажем отсылает его по сети... как...

OpenDialog
чет не пойму совсем я...(( вообщем сохраняется все хорошо, а потом этот файл открыть не могу. Код: void __fastcall...

OpenDialog
подскажите как сделать чтобы OpenDialog открывался как-бы в корневой директории диска С:\

OpenDialog
Если я не выбираю файл в опен диалоге или нажимаю отмену выбивает ошибка программы, как сделать проверку??

Компонент OpenDialog
Подскажите пожалуйста можно ли с помощью этого компонента выводить данные в грид с какой либо таблицы access? т.е. выбираю определенную...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru