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

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

06.07.2009, 11:50. Показов 5271. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru