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

Загрузка данных из файла, парсирование полученных строк, вывод каждого элемента строки в отдельное поле Memo

13.02.2017, 17:10. Показов 691. Ответов 0

Студворк — интернет-сервис помощи студентам
Добрый день, уважаемые форумчане!

Я - радиоинженер. Серьёзным программированием я не занимался, но на работе была поставлена глобальная задача, для выполнения которой я решил воспользоваться C++ Builder. Кое- какие навыки имеются, но понимаю, что знаний не достаточно.
Я глобальную задачу разбил на несколько локальных.

1. Имеем текстовый файл, данные из которого мне нужны строки с 18 по 19617.
Данные из этих представлены в виде чисел, разделенных пробелами.
Пример:
Code
1
2
3
4
16.2        20.4        -2.9096490   0         -21.570751  0
16.4        20.4        -7.0444910   0         -22.913940   0
16.6        20.4        -11.642429  0         -24.382340   0
16.8        20.4        -10.577831  0         -23.916622  0
2. Нужно каждый элемент строки вывести в отдельное поле. Для наглядности, мы видим на примере, что каждый столбец должен быть отображен в своём поле вывода (Memo или Edit). В моём случае -это Memo (Memo1...Memo6).

3. После того, как я разбил строки на элементы (в качестве разделителя выступал пробел) и ввел каждый столбец в своё поле Memo (получилось шесть столбцов), нужно стало из каждого поля Memo сделать массивы для последующего построения графиков. Т.е. должны получить шесть массивов.

4. Из получившихся шести массивов нужно построить графики. Первый график - массив1 и массив2; второй график - массив3 и массив 5.

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

Листинг программы

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//---------------------------------------------------------------------------
#include <vcl.h>
#include <iostream>
#include <fstream>
#include <string>
#pragma hdrstop
#include "SortDataBase3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
      ListBox1->Items->Clear();
      ListBox1->Items->LoadFromFile("C:/am44/ST1_RX_H_10950.mat");
}
    void ParseString (TStringList *List, AnsiString Src, char Delimiter)
{
    List->Clear();
    while (1)
        {
        Src = Src.Trim();
        if(!Src.Length()) break;
        int Index = Src.AnsiPos(Delimiter);
        if(!Index) {List->Add(Src); break; }
        List->Add(Src.SubString(1,Index - 1).Trim());
        Src.Delete(1,Index);
        }
    };
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
     ListBox1->Items->Clear();
     ListBox1->Items->LoadFromFile("C:/am44/ST1_RX_H_10950.mat");
 
     int Index=ListBox1->ItemIndex;
 
    for (Index = 18; Index < 19617; Index++) {
 
 
     //if (Index>=17)
     //{
     TStringList *List=new TStringList();
     ParseString(List, ListBox1->Items->Strings[Index], ' ');
     Memo1->Text=(List->Count>0)?Memo1->Text+" "+List->Strings[0] : (String)"";  //  если элемент существует, кладём в первый Эдит
     Memo2->Text=(List->Count>0)?Memo2->Text+" "+List->Strings[1] : (String)"";  //  если элемент существует, кладём во второй Эдит
     Memo3->Text=(List->Count>0)?Memo3->Text+" "+List->Strings[2] : (String)"";  //  если элемент существует, кладём в третий Эдит
     Memo4->Text=(List->Count>0)?Memo4->Text+" "+List->Strings[3] : (String)"";  //  если элемент существует, кладём в четвертый Эдит
     Memo5->Text=(List->Count>0)?Memo5->Text+" "+List->Strings[4] : (String)"";  //  если элемент существует, кладём в пятый Эдит
     Memo6->Text=(List->Count>0)?Memo6->Text+" "+List->Strings[5] : (String)"";  //  если элемент существует, кладём в шестой Эдит
 
 
      delete List;
     }
 
}
//---------------------------------------------------------------------------
К сожалению, я не смог вставить свою форму, но, вкратце опишу: Поле ListBox, в которое выводится файл; шесть полей Memo, в которые выводятся элементы строк (столбцы); кнопка исполнения программы.

Дорогие форумчане! Я ЗАРАНЕЕ БЛАГОДАРЕН ВСЕМ, кто захочет помочь разобраться мне в этой проблеме и, если вам будет не трудно, то укажите на мои ошибки в программе и сделайте подробный комментарий. Очень буду рад помощи в выполнении пунктов 3 и 4 с подробнейшим разбором кода. Это важно, прежде всего, для меня, потому что очень важно освоить такой интересный язык программирования, как Билдер.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2017, 17:10
Ответы с готовыми решениями:

Вывод из файла и запись полученных строк
Всем привет! Учусь работать с файлами. Возник такой вопрос, на который я не смог найти ответ на бескрайних просторах интернета. ...

Загрузка строк файла в Memo
var f:TextFile; Begin AssignFile(f,'file1.txt'); Reset(f); while not Eof(f) do begin read(f,Stroka); Memo1.Lines.Add(Stroka);...

Загрузка в ComboBox частей строк из файла. Вывод другой части строки в зависимости от выбора
Доброе время суток! Прошу помощи. Сам не в состоянии справиться. Есть текстовый файл с информацией типа: ХХХ1: YYY1; ZZZ = 123;...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2017, 17:10
Помогаю со студенческими работами здесь

Поиск слова в файле и вывод строки в поле Memo
Помогите написать код для кнопки после нажатия она должна считать даные с компонента Edit, проверить даные в файле и вивести рядок с...

Вывод нужных строк из текстового файла в Memo
Помогите реализовать выбор из текстового файла нужных данных. Мне нужно, чтобы при нажатии на Button1 из этого файла можно было в Memo1...

Вывод большого текста в отдельное поле при клике
Есть Поле1 с текстом который не помещается в данное поле. Редактирование неудобное. Как вы вести при клике на Поле1 текст в Поле2...

Список: В поле данных каждого элемента списка записываются данные о товаре
В поле данных каждого элемента списка записываются данные о товаре: название, страна изготовитель, стоимость. Выведите на экран весь список...

Вывод соответствующих данных для каждого элемента списка
Здравствуйте. Проблема заключается в следующем. Имеется список выводимый запросом из базы данных. $list = $connect-&gt;query(' ...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru