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

Считать из файла в несколько stringgrid

03.04.2011, 17:18. Показов 1432. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. помогите кодом))
Есть файл с несколькими таблицами которые нужно переписать каждую в стой stringgrid. в файле между таблицами разный разделитель. после переноса нужно для каждого грида ссумировать вторую колонку
Пример файла.
--\\TAB1\\--
Тип действующего лица
простое
среднее
сложное
Весовой коэффициент
1
2
3
--\\TAB2\\--Весовые коэффициенты вариантов использования
Тип варианта использования
Простой
Средний
Средний
Весовой коэффициент
5
10
15
Описание
3 или менее транзакций
От 4 до 7 транзакций
Более 7 транзакций
--\\TAB3\\--
....

Файл можно структурировать по другому, главное что-бы было удобно просматривать. или вобще в эксель сунуть. но это для меня сложно я не пробовал даже.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2011, 17:18
Ответы с готовыми решениями:

Не удается считать из файла в StringGrid
Добрых суток всем. Пытаюсь в таблицу StringGrid(здесь Data) записать данные из файла, но файл просто игнорируется Добавил строчку...

Считать из открытого файла Excel в StringGrid
Здравствуйте! Как считать информацию из открытого файла Excel? Пробовала вот так: void __fastcall TForm1::FormCreate(TObject...

Считать информацию из файла и поместить ее в StringGrid
В общем дело такое. Я пишу курсовой суть начисление студентам стипендии, нужно учесть успеваемость. В успеваемости множество дисциплин мне...

7
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2011, 02:01
На форме 3 Memo и 1 файл.

Для себя решаете - что у вас будет разделителем в файле, например строка "*1*" и т.д.
Когда надо записать из 3 Memo в файл, пишем, вставляя эти разделители.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Save 3 Memo in 1 file
void __fastcall TForm1::Button3Click(TObject *Sender)
{
   TStringList* nf = new TStringList();
 
   nf->Add("*1*");
   nf->AddStrings(Memo1->Lines);
   nf->Add("*2*");
   nf->AddStrings(Memo2->Lines);
   nf->Add("*3*");
   nf->AddStrings(Memo3->Lines);
   nf->Add("*end*");
 
   nf->SaveToFile("myFile.txt");
   delete nf;
}
Далее читаем из текстового файла и раскидываем в 3 Memo
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
void __fastcall TForm1::Button4Click(TObject *Sender)
{
    TStringList* nf = new TStringList();
    nf->LoadFromFile("myFile.txt");
    Memo1->Lines->Clear(); Memo2->Lines->Clear(); Memo3->Lines->Clear();
 
    int flag = 0;  int ns;
    for(int i=0; i<nf->Count; i++){
       if(flag == 0 && nf->Strings[i] == "*1*") flag = 1;
       if(flag == 1 && nf->Strings[i] == "*2*") {
          for(int j=1; j<i; j++) Memo1->Lines->Add(nf->Strings[j]);
          flag = 2;   ns = i+1;
          }
       if(flag == 2 && nf->Strings[i] == "*3*"){
          for(int j=ns; j<i; j++) Memo2->Lines->Add(nf->Strings[j]);
          flag = 3;   ns = i+1;
          }
       if(flag == 3 && nf->Strings[i] == "*end*"){
          for(int j=ns; j<i; j++) Memo3->Lines->Add(nf->Strings[j]);
          }
       }
 
    delete nf;
}
Наверное можно все это записать и проще.
1
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 4
04.04.2011, 13:25  [ТС]
прошу прощение если я неправельно выразился, задача записать из файла в StringGrid1 после разделителя в StringGrid2 потом StringGrid3 после считывания нужно ссумировать значения второй колонки
должна получится таблица
-\\T1\\--
Тип варианта использования | Весовой коэффициент | Описание
Простой | 5 | 3 или менее транзакций
Средний | 10 | От 4 до 7 транзакций
Сложный | 15 | Более 7 транзакций
-\\T2\\--
бла бла бла
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2011, 14:21
ну так переделайте для StringGrid, или мне делать ?
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 4
04.04.2011, 15:33  [ТС]
уровень моего знания не позволяет сунуть это все разные StringGrid я сюда поэтому и обратился
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2011, 15:43
если в один - позволяет, то все дальнейшее не есть проблема - вместо Memo ставите засовывание в StringGrid, все остальное - загрузку по разделителям делает код.
0
0 / 0 / 0
Регистрация: 03.04.2011
Сообщений: 4
05.04.2011, 18:37  [ТС]
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
//---------------------------------------------------------------------------
void __fastcall TMet_RR::N2Click(TObject *Sender)
{
if (OpenDialog2->Execute())
 {
  //îòêðûòü ôàéë òåñòà
//std::auto_ptr<TStrings> LoadStrings, TmpStrings( new TStringList());
  //   LoadStrings -> LoadFromFile(OpenDialog2->FileName);
 
     TStringList* nf = new TStringList();
    nf->LoadFromFile(OpenDialog2->FileName);
 
    for(int i = 0; i < StringGrid1->ColCount; i++)
   { for(int j = 0; j < StringGrid1->RowCount; j++)
    StringGrid1->Cells[i][j] = "";
   }
 
    int flag = 0;  int ns;  int a;  int j; int i;
    for(int i=0; i<nf->Count; i++){
       if(flag == 0 && nf->Strings[i] == "*1*") flag = 1;
       if(flag == 1 && nf->Strings[i] == "*2*")
        {
          for(int j=1; j<i; j++ )
       {  StringGrid1->RowCount = floor( (float) j/ 3.0 );
          StringGrid1->Cells[ j % 3 ][ floor( (float)j / 3.0 ) ] = nf->Strings[j];
          flag = 2;   ns = i+1; }
          }
       if(flag == 2 && nf->Strings[i] == "*3*"){
          for(int j=ns; j<i; j++)
       {  StringGrid2->RowCount = floor( (float)j / 3.0 );
          StringGrid2->Cells[ j % 3 ][ floor( (float)j / 3.0 ) ] = nf->Strings[j];}
          flag = 3;   ns = i+1;
          }
       if(flag == 3 && nf->Strings[i] == "*4*"){
       a=j-i;
          for(int j=ns; j<i; j++)
        {  StringGrid3->RowCount = floor( (float)j / 3.0 );
           StringGrid3->Cells[ j % 3 ][ floor( (float)j / 3.0 ) ] = nf->Strings[j];}
          flag = 4;   ns = i+1;
          }
       if(flag == 4 && nf->Strings[i] == "*5*"){
          for(int j=ns; j<i; j++)
        {  StringGrid4->RowCount = floor( (float)j / 3.0 );
           StringGrid4->Cells[ j % 3 ][ floor( (float)j / 3.0 ) ] = nf->Strings[j];}
          }
       }
 
    delete nf; }
Label2->Caption=OpenDialog2->FileName;
}
 
//---------------------------------------------------------------------------
все заполняется но во втором stringgrid заполнение с той строчки где кончился первый в третьем с той сторочки где кончился второй как сдельть чтобы заполнялось с первой строки везьде

Добавлено через 2 часа 18 минут
Уже разобрался, Спасибо за помощи.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 23:40
может
C++
1
for(int j=0; j<i; j++ )
Добавлено через 48 секунд
Уже разобрался,...
что было ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2011, 23:40
Помогаю со студенческими работами здесь

Считать данные разделённые пробелами из текстового файла в StringGrid
Здравствуйте! Помогите заполнить StringGrid из текстового файла. Заранее количество строк и столбцов неизвестно, данные тоже разного типа....

Как считать масив с файла и записать его в StringGrid?
:-/:fie:

BinaryReader считать несколько строк из файла
Здравствуйте, есть проблема при чтении битового файла. В битовом файле находится n количество строк, есть следующий код: ...

Считать с файла несколько массивов чисел
Привет))) мне нужно считать с тхт файла несколько массивов чисел, вот только не пойму как если запись массивов в тхт примерно такая : ...

Как считать несколько переменных из файла
Часто, по условию задачи, входной файл имеет следующий тип: 1-е число (integer), которое указывает сколько будет введено переменных. ...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru