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

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

03.04.2016, 20:48. Показов 3777. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru