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

Запись в файл из полей Edit

06.07.2009, 11:50. Показов 5251. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите как мне реализовать запись данных из нескольких полей Edit в файл. Например есть три поля: "Имя,фамилия,отчество". Мне нужно, чтобы при нажатии на кнопку button произошло событие добавления этих данных в файл.

Добавлено через 18 минут 22 секунды
Простите не совсем правильно я написал, событие у меня есть
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString tofile;
        char string1[100];
        int leng;
        tofile = Edit1->Text + "\n" + Edit2->Text + "\n" + Edit3->Text + "\n" + ComboBox1->Text + "\n\n\n";
        strcpy(string1, tofile.c_str());
        leng = strlen(string1);
        TFileStream*f = new TFileStream("test",fmOpenWrite);
        f->Seek (0, 2);
        f->Write(string1,leng);
        delete f;
}
и в принципе устраивает, все работает, но мне нужно чтобы в ДОС кодировке сохранялось..как это реализовать?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.07.2009, 11:50
Ответы с готовыми решениями:

Запись в файл из полей Edit и проверка Edit на пустоту
TForm1 *Form1; int Ext=0; int i; //--------------------------------------------------------------------------- __fastcall...

Запись в файл из полей Edit
Добрый вечер! Есть структура с 4-мя полями. По задания туда надо записать 4 записи, соответственно 4 поля Edit ( char, int, int, int...

Запись в файл из полей Edit
Здравствуйте! Пишу программу она должна при нажатии кнопки выполнить следующие действия: 1) Считать из полей Edit информацию в...

17
17 / 14 / 6
Регистрация: 21.04.2009
Сообщений: 65
06.07.2009, 13:42
Цитата Сообщение от singleplayer Посмотреть сообщение
и в принципе устраивает, все работает, но мне нужно чтобы в ДОС кодировке сохранялось..как это реализовать?
У TEdit есть свойство
C++
1
OEMConvert
, пробовали?
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
06.07.2009, 15:15  [ТС]
Цитата Сообщение от mustss Посмотреть сообщение
У TEdit есть свойство OEMConvert, пробовали?
пробовал..не помогает (( WIN кодировка, а нужна DOS
0
17 / 14 / 6
Регистрация: 21.04.2009
Сообщений: 65
06.07.2009, 15:39
Посмотри по этой ссылке:
http://www.cyberguru.ru/cpp-so... -okne.html

Я решал обратную задачу на VB, использовал апишную функцию:
OemToChar(sourcestring, deststring). В ссылке пример использования обратной функции.
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
06.07.2009, 16:14  [ТС]
ОК, ща буду проверять, и еще мне теперь надо условие (( Помогите написать, а то я на С++ ничего не писал..
Условие такое:

ЕСЛИ в поле EDIT1 стоит значение test ТОГДА все данные сохраняем в файл test, ИНАЧЕ все данные сохраняем в файл test2

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

Добавлено через 20 минут 32 секунды
Цитата Сообщение от mustss Посмотреть сообщение
Я решал обратную задачу на VB, использовал апишную функцию:
OemToChar(sourcestring, deststring). В ссылке пример использования обратной функции.
на примере кода который я написал объясни пожалуйста куда CharToOem тут пихать)
0
17 / 14 / 6
Регистрация: 21.04.2009
Сообщений: 65
06.07.2009, 17:23
Цитата Сообщение от singleplayer Посмотреть сообщение
на примере кода который я написал объясни пожалуйста куда CharToOem тут пихать)
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
void __fastcall TForm2::Button1Click(TObject *Sender)
{
    AnsiString tofile;
    char string1[100];
    char src[100];
    int leng;
    AnsiString nm;
    tofile = Edit1->Text + "\n" + Edit2->Text + "\n" + Edit3->Text + "\n" + ComboBox1->Text + "\n\n\n";
    strcpy(string1, tofile.c_str());
    CharToOem(string1, src);
    leng = strlen(src);
 
    if (Edit1->Text=="test")
    {
        nm="test";
    }
    else
    {
        nm="test2";
    }
        TFileStream*f = new TFileStream(nm,fmOpenWrite);
        f->Seek (0, 2);
        f->Write(src,leng);
        delete f;
 
}
Пришлось чуть-чуть изменить исходный текст, возможно не самым оптимальным способом... Но у меня это работает и сохраняет файл в DOS-кодировке, специально смотрел. Среда разработки BDS2006, ОС - WinXP. Файлы test и test2 надо создать заранее, в той же директории где лежит прога.
1
0 / 0 / 0
Регистрация: 06.07.2009
Сообщений: 42
06.07.2009, 17:35  [ТС]
спасибо,Все работает,ты меня выручил.
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
10.08.2009, 13:53
оооо у мя похожая проблема

Я только начинаю писать на билдере.... использовал ваш код, только вместо с едитов записываю в файл структуру...

в чем собственно проблема - пишет что файл "test" не найден. В чем может быть проблема?

(файл "test" я создал с разшырением дат и тхт, и закинул в папку с проектом)

извините просто ещо никогда в файл даные не скидывал .

Добавлено через 11 минут 21 секунду
оу уже нашол)))) забыл вписать строку:
C++
1
TFileStream *out = new TFileStream("test", fmCreate); //:)
теперь новая проблема:

все пишется в 1 строчке
а как сделать чтоб каждая новая структура писалась в новой строке?

Добавлено через 56 минут 56 секунд
матерится почемуто на
C++
1
tofile = Edit1->Text + "\n" + Edit2->Text + "\n" + Edit3->Text + "\n" + ComboBox1->Text + "\n\n\n";
а иногда норм
выдает ошбку
[C++ Error] Unit1.cpp(44): E2085 Invalid pointer addition
в чем причина?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2009, 14:04
покажи весь код, где ошибка выскакивает
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
10.08.2009, 14:28
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TForm1::Button1Click(TObject *Sender)
{
GetSystemTime(&st);
 
        AnsiString tofile;
        char string1[100];
        int leng;
        tofile = IntToStr(Proba.A) + "\t" + IntToStr(Proba.B) + "\t" + IntToStr(Proba.C) + "\t" + (TDateTime::CurrentDateTime().FormatString("dd.mm.yyyy hh:nn:ss").c_str()) + "\n";
        strcpy(string1, tofile.c_str());
        leng = strlen(string1);
        TFileStream*f = new TFileStream("test",fmOpenWrite);
        f->Seek (0, 2);
        f->Write(string1,leng);
        delete f;
}
так работает нормально
а вот ак только дату ставлю чтоб 1й выводить:
C++
1
  tofile =(TDateTime::CurrentDateTime().FormatString("dd.mm.yyyy hh:nn:ss").c_str()) + "\t" + IntToStr(Proba.A) + "\t" + IntToStr(Proba.B) + "\t" + IntToStr(Proba.C) + "\n";
сразу ету ошыбку выкидывает
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2009, 14:32
ругается на то, что ты пытаешься сделать конкатенацию ansistring и char*...
попробуй так:
C++
1
(TDateTime::CurrentDateTime().FormatString("dd.mm.yyyy hh:nn:ss"))
1
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
10.08.2009, 14:46
ух спасибо!!! работает

а можна както с фаила ети даные прочитать в ListView и построить по них график "даные от времени"?

только да или нет
не хочю просто вас етим напрягать. если - можно, то сам попробую сделать, ато потом мне ето нужно будет.
просто я с ListView никогда раньше не работал...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
10.08.2009, 14:49
вообще, у программиста нет вопроса - можно сделать или нет, один вопрос - когда deadline проекта... почитайте справку, там все методы и свойства всех стандартных компонентов есть
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
10.08.2009, 15:05
ето правда
всэ можно сделать если поднапрячь мозги)))

просто на билдере пишу толко 2 недели, ещо не разобрался с многими компонентами, хотя программа мне уже нравится

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

Спасибо за ответы
0
1 / 1 / 0
Регистрация: 09.04.2009
Сообщений: 7
26.09.2009, 01:17
По теме вопрос возник.
Пишу в файл массив:

C++
1
2
3
4
5
6
String s0[10];
...
for(i=1;i<11;i++)
{
 fputs(s0[i].c_str(),fil);
}
В файл записывается всплошную, а нужно на отдельных строках. Как это сделать?
Разделяю вручную и ... читаю из файла построчно:

C++
1
2
3
4
5
6
char s[150];
for (i=1;i<11;i++)
{
 fgets(s,150,fil);
 s0[i]=s;
}
В итоге строки искажаются, в конце появляется ненужные символы \r и(или) \n.

Из-за этого не работает ShellExecute.
Уже полдня бьюсь.

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

Добавлено через 46 минут
Все вопросы сняты...
Ответ здесь http://sources.ru/builder/faq/029.html
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
26.09.2009, 13:52
ну если места не жалко то можеш просто 2 раза считывать

C++
1
2
fgets(s,149,fil);
fgets(m,1,fil); //мусор вроде ентера :)
но ето последний вариант...

чтото вроде етого сделать
0
 Аватар для Лунёв Виктор
8 / 8 / 1
Регистрация: 22.03.2009
Сообщений: 55
25.10.2009, 00:04
Странно данные в файл пишет все в одну строку
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm1::Button1Click(TObject *Sender)
{
        AnsiString tofile;
        char string1[100];
        int leng;
        tofile = Edit1->Text + "\n" + Edit2->Text + "\n" + Edit3->Text + "\n" + ComboBox1->Text + "\n\n\n";
        strcpy(string1, tofile.c_str());
        leng = strlen(string1);
        TFileStream*f = new TFileStream("test",fmOpenWrite);
        f->Seek (0, 2);
        f->Write(string1,leng);
        delete f;
}
Если меняем на '\t' все работает, расставляет табуляцию...
В чем я не прав?
0
0 / 0 / 0
Регистрация: 03.08.2009
Сообщений: 11
26.10.2009, 10:35
хм... код правильный, должно работать нормально
у меня похожая запись в файл нормально работает...

а как строка выглядит, символы "\n" воспринимает или вместе с ними записывает как текст ?

Добавлено через 8 минут
Цитата Сообщение от Romeo Посмотреть сообщение
По теме вопрос возник.
Пишу в файл массив:

попробуй так, ато сначала вопрос не понял)))

C++
1
2
3
4
5
6
7
String s0[10];
...
for(i=1;i<11;i++)
{
 fputs("\n",fil);
 fputs(s0[i].c_str(),fil);
}
или так:

C++
1
2
3
4
5
6
7
8
String s0[10];
AnsiString tofile;
...
for(i=1;i<11;i++)
{
 tofile = s0[i] + "\n";
 fputs(tofile,fil);
}
должно работать нормально
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.10.2009, 10:35
Помогаю со студенческими работами здесь

Кнопка: сохранить данные с Edit, скопировать файл (картинку) и переименовать новый файл из одного из полей edit
Помогите дописать для кнопки такое: по состоянию компонента CheckBox копировать определеный файл и давать ему название например из поля...

Запись в файл из edit
HELLO! Помогите записать в файл информацию из поля Edit. Примерно пишу вот так, но не хочет: procedure TForm1.Button1Click(Sender:...

Запись edit в файл
Допустим у нас есть 3 edit'a c данными : сумма вклада (VKLAD), месячная процентная ставка (PROZENT) и срок (SROK) в месяцах. Нужно сделать...

Чтение из Edit и запись в файл
стоит задача считать целое число из Edit в переменную d123 и записать в файл данные в виде r2in=d123 те r2in=значению из лейбла код...

Запись данных в типизированный файл из edit
Необходимо взять данные из edit и сохранить в файл: var f:file of integer; i:integer; mas:array of integer; begin if...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru