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

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

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

Author24 — интернет-сервис помощи студентам
Помогите , не получается
открыть .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
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2018, 18:17
Ответы с готовыми решениями:

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

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

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

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

19
случайный прохожий
3030 / 2061 / 626
Регистрация: 20.07.2013
Сообщений: 5,543
04.03.2018, 19:01 2
Лучший ответ Сообщение было отмечено Zmeevik как решение

Решение

Выводи в Memo. Пора бы уже знать стандартные возможности среды.
C++
1
  Memo1->Lines->LoadFromFile(str);
1
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
04.03.2018, 19:48  [ТС] 3
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
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
05.03.2018, 00:27 4
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
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 06:46  [ТС] 5
gunslinger Мне нужно открыть текстовый файл , что бы массив прочитал .txt как содержимое файла , а не как адресную строку
0
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
05.03.2018, 06:59 6
Zmeevik, Чутка бы поконкретнее - что дальше с массивом (строками) нужно делать? Может есть более простые пути решения задачи через свойства и методы компонент?
0
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 07:00  [ТС] 7
Помогите мне нужно открыть текстовый файл , что бы массив прочитал (увидел) .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
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
05.03.2018, 07:04 8
Лучший ответ Сообщение было отмечено Zmeevik как решение

Решение

Zmeevik, Не проще ли использовать класс TStringList - массив строк почти неограниченного объема
1
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 07:33  [ТС] 9
TrollHammer, мне нужно выводит в одну строчку , часть текста пока строка не заполнится, потом она будет пролистываться и лишнее обрезаться , в столбик не устраивает. я пробывал в классе string языка C++ , в классе bassic_string из библиотеки STL , теперь в классе String из библиотеки VSL, проблема осталась . Перейду на TStringList проблема не решится.
0
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
05.03.2018, 07:39 10
Вообще не пойму - что делает этот код?
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
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 07:51  [ТС] 11
TrollHammer, да, ты меня раскусил , но это будет только часть программы. Но пока я уперся головой в то что бы текстовый файл прочитал (увидел) .txt как содержимое файла , а не как адресную строку.
C++
1
Label3->Caption = str.c_str();
TLabel1 отображает c:\\Save\\str.txt
0
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 08:00  [ТС] 12
скриншот
Миниатюры
Открыть txt-файл, прочитать, вывести на экран  
0
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
05.03.2018, 08:02 13
Считываем файл байт за байтом
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
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 09:11  [ТС] 14
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
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
05.03.2018, 09:53 15
Тут уже я в ступоре.
Чего уж проще - открыли файл, прочитали куда надо (Memo, StringList), в конце концов свой выделили, либо той же AnsiString закинули (32000 символов хватит?) И делай с данными что хошь!

Добавлено через 3 минуты
Что в вашем представлении МАССИВ? Каким типом он задан?
0
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
05.03.2018, 09:55  [ТС] 16
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
5 / 5 / 2
Регистрация: 09.03.2016
Сообщений: 66
16.03.2018, 14:50  [ТС] 17
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
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
18.03.2018, 10:08 18
Создание экземпляра STringList лучше делать в конструкторе формы и в событии OnClose прибивать
0
Модератор
9629 / 6233 / 2426
Регистрация: 21.01.2014
Сообщений: 26,590
Записей в блоге: 3
20.03.2018, 06:58 19
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
1214 / 708 / 335
Регистрация: 22.02.2018
Сообщений: 2,091
Записей в блоге: 2
21.03.2018, 13:21 20
D1973, такого способа не знал, спасибо

Добавлено через 1 минуту
обычно delete на закрытие формы. От души!
0
21.03.2018, 13:21
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.03.2018, 13:21
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru