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

Вставить данные из файла в StringGrid

05.05.2009, 14:39. Показов 4208. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите новичку, пожалуйста.
Есть структурированный файл в котором записаны номер поезда, маршрут следования, дата отправки, дата прибытия поезда.
Пример файла:
<<=>>820<<=====>>Москва<<=====>>Одесса<< =====>>8:20<<=====>>8:00<<=>>

Нужно вставить данные из файла и вывести их на экран в виде таблицы. Я так понимаю, лучше всего это сделать через StringGrid. Напишите код как вставить данные из файла в StringGrid. Или если есть способ по другому както это сделать, то подскажите как
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2009, 14:39
Ответы с готовыми решениями:

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность вручную писать данные в ячейки StringGrid...

Прочитать числа из файла и вставить в StringGrid
Как прочесть с файла числа и вставить их в StringGrid?

Данные из файла отобразить в StringGrid'e
Здравствуйте, необходимо текстовые данные из файла (5 строчек по 5 слов) занести в соответствующие ячейки квадратной матрицы (массив ) и...

10
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.05.2009, 14:55
ну структура вашего файла, мягко говоря, неидеальна, разве простых точки с запятой не хватит, чтобы структурировать файл?
потом объявляете объект TStringList, у него есть метод LoadFromFile, грузите данные из файла, потом бьете строку из StringList, бьете ее по разделителям и пишите в StringGrid. Все достаточно просто
0
1 / 1 / 0
Регистрация: 05.05.2009
Сообщений: 15
05.05.2009, 15:34  [ТС]
Цитата Сообщение от WooDooMan Посмотреть сообщение
потом объявляете объект TStringList, у него есть метод LoadFromFile, грузите данные из файла, потом бьете строку из StringList, бьете ее по разделителям и пишите в StringGrid. Все достаточно просто
если можна код напишите, а то все мои попытки это сделать приводят пока либо к нечегонеделанью программой или к ее зависанию
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.05.2009, 15:42
Andreas95, покажи код, подскажу...
0
1 / 1 / 0
Регистрация: 05.05.2009
Сообщений: 15
05.05.2009, 16:10  [ТС]
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
void __fastcall TForm6::Button1Click(TObject *Sender)
{
int f;
if (FileExists("train.txt"))
                {
                 f=FileOpen("train.txt",fmOpenWrite);
                }
else f=FileCreate("train.txt");
 
if (f!=-1)
            {
            for(int i=1;i<StringGrid1->RowCount;i++)
                       {
                       AnsiString st=StringGrid1->
                                 Rows[i]->DelimitedText+"\r\n";
                       FileWrite(f,st.c_str();st.Length());
                       }
            FileClose(f);
            }
else ShowMessage("Ошибка доступа к файлу!!!");
 
int GetLine(int f,AnsiString *st);
}
//---------------------------------------------------------------------------
void __fastcall TForm6::FormCreate(TObject *Sender)
{
int f;
AnsiString st;
bool fl=true;
if ((f=FileOpen("train.txt",fmOpenRead))==-1)
              {
              return;
              }
 
while (GetLine(f,&st)!=0)
              {
              if (fl)
              {
              StringGrid1->Rows[StringGrid1->Row]->
                                DelimitedText=st;
                fl=false;
              }
else
         {
          StringGrid1->RowCount++;
          StringGrid1->Row=StringGrid1->RowCount-1;
          StringGrid1->Rows[StringGrid1->Row]->
                              DelimitedText=st;
         }
         }
   FileClose(f);
   }
 int GetLine(int f,AnsiString *st)
          {
           unsigned char buf[256];
           unsigned char *p=buf;
           int n;
           int len=0;
           n=FileRead(f,p,1)
               while (n!=0)
                  {
                   if (*p=='<<=====>>')
                    {
                     n=FileRead(f,p,1);
                     break;
                    }
             len++;
             p++;
             n=FileRead(f,p,1);
                  }
           if (len!=0)
              {
               st=printf("%s",buf);
              }
            return len;
 
          }
неудачная попытка чтения

C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm6::Button1Click(TObject *Sender)
{
   TStringList *StringList = new TStringList();
   StringList->LoadFromFile("train.txt");
 
   for(int i = 0; i < StringList->Count; i++)
   {
      AnsiString AStr = (*StringList)[i];
  
 
   }
}
пытался еще таким способ считать, но здесь тоже чтото неполучается, здесь я немогу дописать код верно скорее всего
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
05.05.2009, 16:27
я не знаю, у тебя этот код вообще компилируется? странное построение, такого давно не видел, вот мой вариант:
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  // список из файла
  TStringList* list = new TStringList();
  // для записи в грид
  TStringList* tmp = new TStringList();
  list->LoadFromFile("1.txt");
  // задаем размер строк в гриде
  Grid->RowCount = list->Count + 1;
  for(int i = 0; i < list->Count; i++){
    tmp->Clear();
    AnalizeAnswer(list->Strings[i], tmp, ';');
    for(int j = 0; j < tmp->Count; j++)
      Grid->Cells[j][i + 1] = tmp->Strings[j];
  }
  delete list;
  delete tmp;
}
//---------------------------------------------------------------------------
// Конвертация запроса (Text) c разделителем (Delimiter) в блочный формат (Block)
void TForm1::AnalizeAnswer(AnsiString Text, TStringList* Block, char Delimiter)
{
  AnsiString Str = Text, tmp = "";
  while(!Str.IsEmpty()){
    if(!Str.Pos(AnsiString(Delimiter))) break;
    tmp = ((Str.SubString(1, Str.Pos(AnsiString(Delimiter)) - 1)).TrimLeft()).TrimRight();
    Block->Add(tmp);
    Str.Delete(1, Str.Pos(AnsiString(Delimiter)));
  }
  if(!Str.IsEmpty()){
    tmp = ((Str).TrimLeft()).TrimRight();
    Block->Add(tmp);
  }
}
//---------------------------------------------------------------------------
заголовочный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
        TStringGrid *Grid;
private: // User declarations
public:  // User declarations
        __fastcall TForm1(TComponent* Owner);
        void AnalizeAnswer(AnsiString Text, TStringList* Block, char Delimiter);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Миниатюры
Вставить данные из файла в StringGrid  
1
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
05.05.2009, 18:56
Andreas95, а вы этот файл сами создаёте?
0
1 / 1 / 0
Регистрация: 05.05.2009
Сообщений: 15
06.05.2009, 10:33  [ТС]
Цитата Сообщение от YAUHEN Посмотреть сообщение
Andreas95, а вы этот файл сами создаёте?
файл создается программой как рассписание
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
06.05.2009, 14:35
Andreas95, не работает что ли? файл входной - поля, разделенные точкой запятой
0
1 / 1 / 0
Регистрация: 05.05.2009
Сообщений: 15
06.05.2009, 14:44  [ТС]
Цитата Сообщение от WooDooMan Посмотреть сообщение
Andreas95, не работает что ли? файл входной - поля, разделенные точкой запятой
Работает, спасибо большое!!!
0
146 / 129 / 6
Регистрация: 29.07.2008
Сообщений: 506
07.05.2009, 09:17
в принципе можно было зписывать данные в файл как структуру через fwrite с размером блока = размеру структуры, а потом так же считывать через fread
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2009, 09:17
Помогаю со студенческими работами здесь

Скопировать данные из файла Excel в StringGrid
Здравствуйте) Я понимаю, что тема уже заезжанная. Я раньше использовала технологию OLE для загрузки данных. Все работало. Но сейчас...

Загрузить данные из файла Excel в StringGrid через OpenDialog
Доброго времени суток! Нужно загрузить данные из Excel файла в StringGrid через OpenDialog. Из StringGrid в Excel получилось...

Как записать данные в StringGrid через OpenDialog из файла?
Доброго времени суток! Как записать данные в StringGrid через OpenDialog из файла? Есть кнопка сохранения с кодом: Перековыривал на...

Вывести данные из StringGrid-ов на двух формах в StringGrid на третьей форме
Помогите,не разбираюсь,только учусь:(:wall:...Вообщем,имеется программа с 3 формами. На первой из них находится вводный StringGrid с...

Есть 2 StringGrid в С++ Builder, и нужно взять оттуда данные и заполнить ими 3 StringGrid, как бы сложить 2 та
Код C++ void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j; float p,p1; for (i = 0; i &lt; 48; i++) { ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Семь 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. На борту пять. . .
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru