Консультация № 177166
09.03.2010, 12:16
0.00 руб.
0 5 1
здравствуйте, уважаемые эксперты !

помогите написать программку:

пусть существует текстовый документ imya.txt, в котором в столбик записаны числа
например :
1111111
222222222
33333333
4444444444
итд

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

(например,
нажатие кнопки - создается 1111111.txt с текстом*
я вас любил,
любовь еще быть может
нажатие кнопки - создается 222222222.txt с текстом*
в душе моей
угасла не совсем.
нажатие кнопки - создается 33333333.txt с текстом*
так пусть она вас больше не тревожит-
я не хочу печалить вас ничем )

* текст набирается пользователем в окошке программы

среда программирования: C++ Builder 6.0
извините, за сумбурное описание проблемы )
помогите, пожалуйста, уважаемые товарищи эксперты !

Обсуждение

давно
Академик
320937
2216
09.03.2010, 13:41
общий
Людмила Хисматулина:
Добрый день! А может ли быть так?
Код:
1111111
33333333
222222222
4444444444

или так:
Код:
1
111
2222
1111
22
4444444444

или так:
Код:
1
123
32045
111157623857236

Что делать, если нажатий кнопки больше, чем строк в файле imya.txt?
Неизвестный
09.03.2010, 14:54
общий
здравствуйте, lamed

имя текстового файла может содержать от 5 до 10 цифр
то есть из представленных Вами примеров скорее возможен вот такой вариант

1111111
33333333
222222222
4444444444

Что делать, если нажатий кнопки больше, чем строк в файле imya.txt?
-----------------------------------------------------------------------------------
следует известить пользователя об этом и выйти из программы


давно
Академик
320937
2216
09.03.2010, 18:00
общий
Людмила Хисматулина:
Очевидно, мы друг друга не поняли. В Вашем примере в каждой строке одинаковые цифры, причем по возрастанию. Это случайно или в этом какой-то смысл, и его следует "обыграть"?
Неизвестный
09.03.2010, 20:23
общий
lamed

нет, ни в коем случае
прошу прощения, что ввела Вас в заблуждение
числа вполне абстрактные
да хоть :

1213897
3784785
873437583
давно
Академик
320937
2216
15.03.2010, 13:03
общий
это ответ
Здравствуйте, Людмила Хисматулина.
Полный проект здесь177166.ZIP (546.9 кб)
Файл imya.txt должен располагаться в каталоге исполняемого файла программы. Модуль Unit1.cpp в приложении. Поскольку ничего не говорится о проверке чисел в файле imya.txt, она и не производится.

Приложение:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <iostream>
#include <fstream>
#include <string>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
using namespace std;

ifstream in; // исходный файл с данными

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::btStartClick(TObject *Sender)
{
static bool finished = false; // просмотрены все строки исходного файла?
const char* FileName = "imya.txt";
string s; // считываем строку исходного файла
AnsiString msg; // сообщение

if (finished)
{
ShowMessage("Все строки просмотрены");
return;
}

if (!in.is_open()) // если исходный файл еще не открыт, откроем его
{
in.open(FileName);
if (!in)
{
msg = "Не удалось открыть файл " + AnsiString(FileName);
ShowMessage(msg);
return;
}
}

if (!in.eof())
{
in >> s; // прочитали строку исходного файла
s+=".txt"; // имя вновь создаваемого файла
ofstream out(s.c_str(),ios::in);
if (!out) // если файл еще не существует
{
msg = "Создан файл "+AnsiString(s.c_str());
out.clear();
out.open(s.c_str(), ios::out);
ShowMessage(msg);
out << Edit1->Text.c_str() << endl;
out.close();
}
else
{
ShowMessage("Файл не создан!");
out.close();
}
if (in.eof())
{
finished = true;
in.close();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
if (in.is_open()) // закроем исходный файл
{
in.close();
}
}
//---------------------------------------------------------------------------
Форма ответа