Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378

Работа с файлами .txt

06.12.2014, 20:09. Показов 1602. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем очень много лажу в интернете и особо ничего не нашел.. Есть один более менее рабочий пример но работает не так как нужно
Кликните здесь для просмотра всего текста

Этот пример работает не так ибо он находит ровно половину данных которые находятся после запятой, но это по сути и понятно почему, условие и данная должны идти подряд.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 TStringList *St = new TStringList;
    St->LoadFromFile("ttt.txt");
 
    TStringList *St2 = new TStringList;
 
    AnsiString s;
    TSysCharSet Tws, Delim;
    Delim << ';';
    for(int lines = 0; lines < St->Count; lines++) 
    {
        s = St->Strings[lines];
        St2->Clear(); 
        ExtractStrings(Delim, Tws, s.c_str(), St2);
        for(int i = 1; i < St2->Count; i += 2) 
        {
            ShowMessage(St2->Strings[i]);
        }
    }
 
    delete St2;
    delete St;

А сама задача такова:
Мне нужно сделать что-то типа базы данных. Я хочу создать файл формата .txt и записать в него данные в формате:
кредит/депозит;уровень доверия;имя;размер кредита/депозита;время возвращения
Может еще будут данные, но важно для меня проверить эти данные на их тип(2 разных массива), уровень доверия имеет 2 состояния, состояния 1 и 0, используется для выбора расчета, все остальное просто данные - должны быть занесены в массив так же.
Первое что я не знаю это как сделать бесконечный двухмерный массив с текстом. Например:
1 депозит Бармалей 50 12
0 кредит Печкин 1000 48
1 кредит Гоша 10000 32

Как работать с массивом A[i][j] я разберусь, но тут это все слишком непонятно работает. Я никак не могу понять как создать вообще массив типа string. Например в PHP можно легко создать массив написав A[1] = "text"; И это очень удобно.
В общем нужно сохранять и доставать данные из одного файла после чего иметь возможность их использовать и изменять. Так же я бы очень был благодарен если вы объясните как работают вообще массивы типа string в Borland Builder 6 C++. Кажется ничего не забыл...
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2014, 20:09
Ответы с готовыми решениями:

Работа с файлами *.txt
Помогите решить проблему.Необходимо записать данные в файл из StringGrid'a в файл.При записи выводятся иероглифы.С чем это связано и как...

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

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

9
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,353
Записей в блоге: 3
07.12.2014, 09:02
Цитата Сообщение от Master_Yi Посмотреть сообщение
Мне нужно сделать что-то типа базы данных
Дык может и использовать наиболее подходящий инструмент, а именно БД?
Цитата Сообщение от Master_Yi Посмотреть сообщение
как работают вообще массивы типа string
Точно так же, как и массивы любых других типов:
C++
1
2
3
4
5
const int n = 5;
String A[n] = {"AAA","BBB","CCC","DDD","EEE"};
String s = A[4];
A[0] = "FFF";
ShowMessage(s + "\n" + A[0]);
Цитата Сообщение от Master_Yi Посмотреть сообщение
как сделать бесконечный двухмерный массив с текстом
Если уж требуется текстовый файл, то зачем вообще массив, тем более двумерный?
1. Объявить структуру, описывающую одну строку текстового файла.
2. Грузить файл в StringList, свойство Strings которого, это, по сути, и есть массив строк.
3. Для визуализации операций использовать StringGrid.
4. И еще раз подумать об использовании любой БД.
1
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
07.12.2014, 12:35  [ТС]
D1973, Ура. Кто-то откликнулся!
Задание сделать именно с теми знаниями которые мы получили уже. Я студент и таковы методы нашего преподавателя, увы.. Так что обязательно нужно сделать с помощью текстового файла.

Воу воу воу.
Цитата Сообщение от D1973 Посмотреть сообщение
Точно так же, как и массивы любых других типов:
C++
1
2
3
4
5
const int n = 5;
String A[n] = {"AAA","BBB","CCC","DDD","EEE"};
String s = A[4];
A[0] = "FFF";
ShowMessage(s + "\n" + A[0]);
А почему раньше оно ругалось на "String"? В общем раньше пропускать тип String оно не хотело.

Ну и последнее:
вы не могли бы показать хороший пример StringList'а? Это действительно намного лучше и я даже находил нечто похожее в интернете, но все было непонятно. Такое разъяснение для тормозов нужно...
0
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,353
Записей в блоге: 3
07.12.2014, 12:52
Цитата Сообщение от Master_Yi Посмотреть сообщение
А почему раньше оно ругалось на "String"?
Наверное потому, что ты пробовал объявлять как string (с маленькой буквы, а регистр важен), нет?
Цитата Сообщение от Master_Yi Посмотреть сообщение
вы не могли бы показать хороший пример StringList'а?
Не знаю, насколько "хороший", но покажу, как до Билдера доберусь... Кстати, какой Билдер у тебя?
1
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
07.12.2014, 13:12  [ТС]
D1973,
Цитата Сообщение от D1973 Посмотреть сообщение
Наверное потому, что ты пробовал объявлять как string (с маленькой буквы, а регистр важен), нет?
Мне тоже так кажется. Уже думал об этом, но точно не вспомню.

Цитата Сообщение от D1973 Посмотреть сообщение
Кстати, какой Билдер у тебя?
C++ Builder 6
0
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,353
Записей в блоге: 3
07.12.2014, 18:21
Вот посмотри пример.
Что не понятно - спрашивай, не стесняйся

Не по теме:

Блин, приложение с тем же функционалом, но на основе БД делается за 10 минут...

Вложения
Тип файла: rar Работа с файлами txt.rar (67.4 Кб, 26 просмотров)
1
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
07.12.2014, 19:07  [ТС]
D1973,
Боги, это для меня? =) Спасибо!, но вопросы есть:
C++
1
2
3
//Определяем, какая кнопка нажата: Добавить или изменить
  bbTag = ((TBitBtn *)Sender)->Tag;
  switch(bbTag)
Зачем делать такие проверки когда можно создать 2 события onclick?
Да и как работает эта строчка?

C++
1
2
3
      
Index = SG->Selection.Top;
if(SG->Cells[0][Index] == "депозит")  cbType->ItemIndex = 1; else cbType->ItemIndex = 0;
Что за Selection.Top? И почему именно так это реализовано? Я думал что файл сам будет массивом и мы напрямую будем использовать его для редактирования, а не копирование данных в таблицу в программе и уже работа над ними в ней.
Уже дальше нашел что-то наподобие printf, именно ним я и думал искать, почему бы и нет?

Тонны методов, это не мой способ пока что. Мой способ захламлять одним и тем же программу до такой степени пока она не начнет весить 10МБ =) Но отличный пример, буду приучать себя.

Пока это все вопросы. Но 200% в процессе переноса кода будут возникать еще проблемы. Надеюсь вы поможете.
0
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,353
Записей в блоге: 3
07.12.2014, 19:30
Цитата Сообщение от Master_Yi Посмотреть сообщение
Зачем делать такие проверки когда можно создать 2 события onclick?
А зачем дублировать код, если обе эти кнопки делают практически одно и то же, за мелким исключением, которое и оговаривается вот этой проверкой.
Цитата Сообщение от Master_Yi Посмотреть сообщение
Что за Selection.Top?
Свойство Selection указывает границы текущего выбора. Свойство Top будет указывать на первую строку выбранного диапазона. Т.к. у нас выбрана всего одна строка, то неважно, какое свойство мы будем использовать:
Selection.Top или Selection.Bottom. И вообще можно было просто написать
C++
1
Index = SG->Row;
Цитата Сообщение от Master_Yi Посмотреть сообщение
Я думал что файл сам будет массивом
По сути практически так оно и есть: файл структурирован, мы его распарсили и разнесли по ячейкам СтрингГрида, получив тем самым строковую матрицу.
Цитата Сообщение от Master_Yi Посмотреть сообщение
мы напрямую будем использовать его для редактирования, а не копирование данных в таблицу в программе и уже работа над ними в ней
На мой взгляд работа с таблицей все же наглядней и проще, чем ковыряние непосредственно в файле
1
13 / 10 / 3
Регистрация: 22.12.2013
Сообщений: 378
07.12.2014, 19:56  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Свойство Selection указывает границы текущего выбора. Свойство Top будет указывать на первую строку выбранного диапазона. Т.к. у нас выбрана всего одна строка, то неважно, какое свойство мы будем использовать:
Selection.Top или Selection.Bottom. И вообще можно было просто написать
Я так и не понял. Он вернет нам номер выделенной строки? Тогда по сути понятно. Cells тогда массив где первое значение это столбцы.
0
Модератор
 Аватар для D1973
9907 / 6444 / 2455
Регистрация: 21.01.2014
Сообщений: 27,353
Записей в блоге: 3
07.12.2014, 20:55
Совершенно верно. Cells - ячейка СтрингГрид, первый индекс - номер столбца, второй - номер строки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2014, 20:55
Помогаю со студенческими работами здесь

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

Работа с .txt файлами
Программа работает, только почему-то когда я перезаписываю строчку какую либо(приходиться весь файл перезаписывать:( ) то перезаписываеться...

Работа с txt файлами
Еще одна тема с тхт файлами, суть такая: есть два файла формата тхт, файл 1 и файл 2 нужно при нажатии на кнопку: Из файла 1...

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

Работа с .txt файлами
Приветствую! Есть задание взять из файла данные (файл in.txt) и сравнить, где 4 столбец больше 3 в максимальное кол-во раз. Сделал это в...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru