Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/64: Рейтинг темы: голосов - 64, средняя оценка - 4.83
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
Builder 6

Открыть txt-файл, прочитать, вывести на экран

04.03.2018, 18:17. Показов 13994. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите , не получается
открыть .txt, прочитать, вывести на экран
C++
1
2
3
4
5
6
7
8
#include <sysdefs.h>//подключаю класс String библиотеки VCL
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//создание экземпляра str
String str;
str = "c:\\Save\\str.txt";
Label1->Caption = str.c_str();
}
Выводит путь файла , а хотел содержимое файла.
А если так? хоть на правильном пути иду ?
C++
1
2
3
4
5
6
7
8
9
10
11
#include <sysdefs.h>//класс String библиотеки VCL
#include <fstream> // подключаем библиотеку fstream считывание файла
using namespace std; //подключил для  fstream
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//создание экземпляра str
String str;
ifstream arr; // создаем объект класса ifstream
arr.open("c:\\Save\\str.txt"); // открываем файл
//как преобразовать arr в str ?
Label3->Caption = str.c_str();
файл лежит в C:\Save\str.txt
проект лежит в C:\Save\String VCL\project2.cpp
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2018, 18:17
Ответы с готовыми решениями:

Открыть заданный текстовый файл и вывести на экран строку с заданным номером
Задание: Нужно открыть заданный текстовый файл и вывести на экран строку с заданным номером Имя файла и номер строки должны передаваться...

Цель прочитать память и вывести на экран
Народ имеется такой код. Цель прочитать память и вывести на экран(в учебных целях). #include &quot;windows.h&quot; #include...

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

19
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,023
04.03.2018, 19:01
Лучший ответ Сообщение было отмечено Zmeevik как решение

Решение

Выводи в Memo. Пора бы уже знать стандартные возможности среды.
C++
1
  Memo1->Lines->LoadFromFile(str);
1
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
04.03.2018, 19:48  [ТС]
C++
1
2
3
4
5
6
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String str;
str = "c:\\Save\\str.txt";
Memo1->Lines->LoadFromFile(str);
}
Спасибо gunslinger
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
05.03.2018, 00:27
Zmeevik, а можно и произвольный файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   TOpenDialog *od = new TOpenDialog(this);
 
     od->Filter="TXT Files (*.txt)|*.txt";
    
      if(od->Execute())
         if(od->FileName!="")
          Memo1->Lines->LoadFromFile(od->FileName);
 
    delete od;
}
И вместо типа String лучше использовать AnsiString
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 06:46  [ТС]
gunslinger Мне нужно открыть текстовый файл , что бы массив прочитал .txt как содержимое файла , а не как адресную строку
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
05.03.2018, 06:59
Zmeevik, Чутка бы поконкретнее - что дальше с массивом (строками) нужно делать? Может есть более простые пути решения задачи через свойства и методы компонент?
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 07:00  [ТС]
Помогите мне нужно открыть текстовый файл , что бы массив прочитал (увидел) .txt как содержимое файла , а не как адресную строку. TLabel выводит как c:\\Save\\str.txt , TMemo редактирует при выводе ,максимум он может стереть пару символов пр ивыводе , а мне нужно более глубокое редактирование и работа с большими текстовыми массивами.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <sysdefs.h>//класс String библиотеки VCL
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//создание экземпляра str
String str;
String str3;
 
str = "c:\\Save\\str.txt";// str Брать из "массива слов" постоянный_словарь_файл.txt
str3 = "c:\\Save\\str3.txt"; // str3 массив вывода , хранить в временный_Вывод_файл.txt
String str2; // str2 "ПРОМЕЖУТОЧНЫЙ массив"
str2 = "c:\\Save\\str2.txt";
 
str.Delete(1,1);
str2.Delete(2,16);
 
str3 = str3; //значение массива str3
str3 += str2; //присоединяем отрезок от str2
//преобразование str в char и вывод в Label
Label3->Caption = str.c_str();
Label1->Caption = str3.c_str();
}
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
05.03.2018, 07:04
Лучший ответ Сообщение было отмечено Zmeevik как решение

Решение

Zmeevik, Не проще ли использовать класс TStringList - массив строк почти неограниченного объема
1
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 07:33  [ТС]
TrollHammer, мне нужно выводит в одну строчку , часть текста пока строка не заполнится, потом она будет пролистываться и лишнее обрезаться , в столбик не устраивает. я пробывал в классе string языка C++ , в классе bassic_string из библиотеки STL , теперь в классе String из библиотеки VSL, проблема осталась . Перейду на TStringList проблема не решится.
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
05.03.2018, 07:39
Вообще не пойму - что делает этот код?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <sysdefs.h>//класс String библиотеки VCL
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//создание экземпляра str
String str;
String str3;
 
str = "c:\\Save\\str.txt";//здесь строка с адресом
str3 = "c:\\Save\\str3.txt"; // опять строка с адресом
String str2; // str2 "ПРОМЕЖУТОЧНЫЙ массив"
str2 = "c:\\Save\\str2.txt"; //еще одна строка с адресом
 
str.Delete(1,1); //тут получилось ":\\Save\str.txt"
str2.Delete(2,16); //тут получилось "с" удалили же со второго символа 16 штук подряд (не помню в String элементы кажись с 1 начинаются)
 
str3 = str3; //тут не понять кого обнять
str3 += str2; //О! получится  "c:\\Save\\str3.txt"+"с"
//преобразование str в char и вывод в Label
Label3->Caption = str.c_str(); //У Caption свойство то как-раз далеко не char а AnsiString || UnicodeString Зачем в char то?
Label1->Caption = str3.c_str(); //а Label'ы как-то используются для визуального оформления формы. Ничего особо полезного с ними не сделаешь :)
}
Добавлено через 2 минуты
И еще - String это атавизм Delphi. Лучше пользоваться AnsiString или UnicodeString

Добавлено через 1 минуту
Бегущую строку реализовать надо, что-ли?
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 07:51  [ТС]
TrollHammer, да, ты меня раскусил , но это будет только часть программы. Но пока я уперся головой в то что бы текстовый файл прочитал (увидел) .txt как содержимое файла , а не как адресную строку.
C++
1
Label3->Caption = str.c_str();
TLabel1 отображает c:\\Save\\str.txt
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 08:00  [ТС]
скриншот
Миниатюры
Открыть txt-файл, прочитать, вывести на экран  
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
05.03.2018, 08:02
Считываем файл байт за байтом
C++
1
2
3
4
    while (!feof(fin)) {
        char tmp = fgetc(fin);   
                //тут чего-нибудь делаем с переменной
             }
А вот простая реализация бегущей строки для заголовка формы
C++
1
2
3
4
5
6
7
void __fastcall TfMain::Timer1Timer(TObject *Sender)
{
    AnsiString InitialCaption = Caption;
    Caption = Caption.SubString(1, (Caption.Length() - 1));
    if(!Caption.Length())
          Caption = InitialCaption;
}
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 09:11  [ТС]
TrollHammer, Как мне это поможет? Ни чего не понял. Вопрос стоит так: Мне нужно открыть текстовый файл , что бы массив прочитал (увидел) .txt как содержимое файла , а не как адресную строку c:\\Save\\str.txt .
C++
1
2
3
4
    while (!feof(fin)) {
        char tmp = fgetc(fin);   
                //тут чего-нибудь делаем с переменной
             }
"простая реализация бегущей строки" - это вообще не имеет ни какого отношения к поставленному вопросу
C++
1
2
3
4
5
6
7
void __fastcall TfMain::Timer1Timer(TObject *Sender)
{
    AnsiString InitialCaption = Caption;
    Caption = Caption.SubString(1, (Caption.Length() - 1));
    if(!Caption.Length())
          Caption = InitialCaption;
}
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
05.03.2018, 09:53
Тут уже я в ступоре.
Чего уж проще - открыли файл, прочитали куда надо (Memo, StringList), в конце концов свой выделили, либо той же AnsiString закинули (32000 символов хватит?) И делай с данными что хошь!

Добавлено через 3 минуты
Что в вашем представлении МАССИВ? Каким типом он задан?
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 09:55  [ТС]
gunslinger, Спасибо вывожу в Memo1 из Memo1 в Label1 и всё работает.
C++
1
2
3
4
5
#include <sysdefs.h>//класс String библиотеки VCL
String str;
str = "c:\\Save\\str.txt";
Memo1->Lines->LoadFromFile(str);
Label1->Caption = Memo1->Text;
0
 Аватар для Zmeevik
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
16.03.2018, 14:50  [ТС]
TrollHammer, Спасибо, распробывал StringList - вкусняшка
C++
1
2
3
4
TStringList * MyList = new TStringList;
MyList->LoadFromFile("str.txt");
ListBox1->Items->AddStrings(MyList);
Label1->Caption = MyList->Strings[0];
0
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
18.03.2018, 10:08
Создание экземпляра STringList лучше делать в конструкторе формы и в событии OnClose прибивать
0
Модератор
 Аватар для D1973
9929 / 6467 / 2457
Регистрация: 21.01.2014
Сообщений: 27,423
Записей в блоге: 3
20.03.2018, 06:58
Zmeevik, или не забывайте удалять объект StringList, если создаете его при помощи директивы new
C++
1
2
3
TStringList *MyList = new TStringList
...
delete MyList;
или используйте для его создания "умные указатели"
C++
1
2
3
#include <memory>
...
std::auto_ptr<TStringList> MyList (new TStringList);
иначе утечка памяти Вам гарантирована.
1
 Аватар для TrollHammer
1216 / 709 / 336
Регистрация: 22.02.2018
Сообщений: 2,095
Записей в блоге: 2
21.03.2018, 13:21
D1973, такого способа не знал, спасибо

Добавлено через 1 минуту
обычно delete на закрытие формы. От души!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.03.2018, 13:21
Помогаю со студенческими работами здесь

Открыть файл для чтения и прочитать из него 13 символов, которые вывести на экран
Открыть файл для записи, записать в него символьная строка, закрыть файл, открыть его для чтения и прочитать из него 13 символов, которые...

Открыть текстовый файл exampl.txt и вывести на экран первый символ
помогите с командами,нужно открыть текстовый файл exampl.txt и вывести на экран первый символ.Если файл не создан то создать пустой файл. ...

Работа с файлами. Вывести на экран файл Input.txt задом наперед и записать результат в файл Output.txt
1. Работа с файлами Вывести на экран файл Input.txt задом-наперед и записать результат в файл Output.txt 2. Содержимое...

Как просто прочитать файл txt и вывести данные в richTextBox
подскажите пажалуйста, как просто прочитать файл txt и вывести данные в richTextBox..... Но выводить надо не все, только часть файла.... ...

Открыть файл, прочитать его, и вывести содержимое в виде массива
Здравствуйте ! Я начинающий программист. пожалуйста подскажите в чём состоит ошибка. я подозреваю что неверно передаю массив из одного...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru