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

Сохранение и заполнение StringGrid

03.04.2016, 20:48. Показов 3800. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите сделать заполнение StringGrid1 с помощью файла, матрица матрица формируется в ручную(её размеры)
вот код сохранение StringGrid1
C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm3::N3Click(TObject *Sender)
{
if(SaveDialog1->Execute()){TStringList *pStrings = new TStringList;
                for(int i=0; i <= StringGrid1->RowCount; i++)
                {
                pStrings->Add(StringGrid1->Cells[0][i] + " " + StringGrid1->Cells[1][i] + " " + StringGrid1->Cells[2][i]+ " " + StringGrid1->Cells[3][i]+ " " + StringGrid1->Cells[4][i]+ " " + StringGrid1->Cells[5][i]+ " " + StringGrid1->Cells[6][i]+ " " + StringGrid1->Cells[7][i]+ " " + StringGrid1->Cells[8][i]+ " " + StringGrid1->Cells[9][i]+ " " + StringGrid1->Cells[10][i]+ " " + StringGrid1->Cells[11][i]);
               }
        pStrings->SaveToFile(SaveDialog1->FileName);
        delete pStrings;
        }
 
}
А это код заполнения StringGrid1 с помощью файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
if(OpenDialog1->Execute())
{
        TStringList *pStrings = new TStringList;
        pStrings->LoadFromFile(OpenDialog1->FileName);
                for(int i=1; i <= pStrings->Count; i++)
                {
        StringGrid1->RowCount = pStrings->Count;
        StringGrid1->Cells[0][i] = pStrings->Names[i-1];
        StringGrid1->Cells[1][i] = pStrings->Values[pStrings->Names[i-1]];
               }
        delete pStrings;
        }
}
но он не заполняет матрицу а к новому размеру добавляет +1 строку.Заранее спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.04.2016, 20:48
Ответы с готовыми решениями:

Сохранение из StringGrid массива в файл и загрузка из файла в StringGrid
Всем доброго времени суток =) У меня есть загрузка массива из StringGrid на Delphi 2010: //загрузка из файла procedure...

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

Заполнение StringGrid
Здравствуйте. Вот такой вопрос. На форме расположен StringGrid . Есть готовая таблица в Excel . Ну соответственно есть кнопка аля...

6
+1
345 / 178 / 53
Регистрация: 24.08.2010
Сообщений: 1,028
03.04.2016, 21:07
Вот нарыл в старых проектах, посмотри
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
//---------------------------------------------------------------------------
void __fastcall TFormGeneral::SaveStringGridToFile( TStringGrid* StringGrid, AnsiString FileName)
{
const int row_count = StringGrid->RowCount;
if (row_count>1)
    {
    for (int index = 0; index < row_count-1; ++index)
        {
        SaveStrings->AddStrings(StringGrid->Rows[index]);
        }
    SaveStrings->SaveToFile(FileName);
    }
}
//---------------------------------------------------------------------------
void __fastcall TFormGeneral::LoadStringGridFromFile(TStringGrid* StringGrid, AnsiString FileName)
{
std::auto_ptr<TStrings> LoadStrings( new TStringList());
LoadStrings->LoadFromFile(FileName);
int index = 0;
String str;
const int col_count =  StringGrid->ColCount;
for (int row=0;row<7;++row)
    {
    for (int col=0;col<col_count;++col)
        {
        if (index+1 > LoadStrings->Count) return;
        str = LoadStrings->Strings[index++];
        StringGrid->Cells[col][row] = str;
        }
    StringGrid->RowCount++;
    }
}
//---------------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 20.02.2015
Сообщений: 25
03.04.2016, 22:57  [ТС]
Спасибо, сохранение подправил, а вот с загрузкой File.txt в StringGrid не получается
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
03.04.2016, 23:09
Цитата Сообщение от Ponce De Leon Посмотреть сообщение
с загрузкой File.txt в StringGrid не получается
А так:
C++
1
2
3
4
5
6
   std::auto_ptr<TStrings> LoadStrings( new TStringList());
   LoadStrings->LoadFromFile(FileName);
   int rows = LoadStrings->Count;
   StringGrid->RowCount = rows;
   for (int row=0;row<rows;++row)
     StringGrid->Rows[row]->CommaText = LoadStrings->Strings[row];
0
0 / 0 / 0
Регистрация: 20.02.2015
Сообщений: 25
03.04.2016, 23:26  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void __fastcall TForm3::N2Click(TObject *Sender)
{
if ( OpenDialog1->Execute() )
    {
TStringList * SL = new TStringList;
SL->LoadFromFile(OpenDialog1->FileName);
for(int i=0;i<SL->Count;i++)
 {
  StringGrid1->Rows[i]->Delimiter=L' ';
  StringGrid1->Rows[i+1]->DelimitedText= SL->Strings[i];
}
}
}
Помоги пожалуйста переписать этот код, косяк тут в том что он заполняет StringGrid со второй строки
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
03.04.2016, 23:31
Вот это
Цитата Сообщение от Ponce De Leon Посмотреть сообщение
for(int i=0;i<SL->Count;i++)
{
StringGrid1->Rows[i]->Delimiter=L' ';
StringGrid1->Rows[i+1]->DelimitedText= SL->Strings[i];
}
замени на
C++
1
2
   for(int i=0;i<SL->Count;i++)
     StringGrid1->Rows[i]->CommaText = SL->Strings[i];
Пробел в CommaText воспринимается как разделитель ("запятая"). Должно сработать.
0
0 / 0 / 0
Регистрация: 20.02.2015
Сообщений: 25
03.04.2016, 23:35  [ТС]
Спасибо большое, то что нужно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.04.2016, 23:35
Помогаю со студенческими работами здесь

Заполнение stringgrid
Не знаю как точно выразиться , но попробую. мне нужно чтобы при нажатии на кнопку заполнялась одна строка таблицы, потом при нажатии на эту...

Заполнение StringGrid
Приветствую, ребята, что-то обессилил совсем :). Требуется заполнить строку таблицы определенным образом. Смысл какой. Есть строка, ее...

Сохранение StringGrid
Вот сделал сохранение - всё работает хорошо Но, стоит ли создавать 2 TStringList или можно как то обойтись одним? #define SS...

Заполнение StringGrid из массива
Доброго времени суток нуждающиеся и их спасители. Есть таблица StringGrid 5 столбцов и 17 строк, 1я стока и 1й столбец фиксированные,...

Заполнение StringGrid из массива
void __fastcall TForm1::Button3Click(TObject *Sender) { int n=2,i,j; float a; for(i=0;i&lt;n;i++) for(j=0;j&lt;n;j++) ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru