Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 30.07.2018
Сообщений: 33
1
RAD XE3+

Заполнить stringgrid из файла по столбикам

11.08.2018, 14:04. Показов 2128. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Люди, кто подскажет как заполнить stringgrid из файла по столбцам. Сколько раз не пробовал, все в одну колонку лепит.
в файле вот так. Как разъединить эти два столбца?
111 222 333
ййй ццц ууу
ффф ыыы ввв

таблица заполняется так
111 222333
ййй цццууу
ффф ыыыввв

Код кнопки
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure TForm1.Button3Click(Sender: TObject);
var
f:textfile;
j,n:integer;
s:string;
begin
If OpenDialog1.Execute Then
begin
assignfile(f,OpenDialog1.Filename);
reset(f);
Readln(f, n);
stringgrid1.ColCount := n;
Readln(f, n);
stringgrid1.RowCount := n;
for j := 1 to stringgrid1.rowcount - 1 do
begin
Readln(F, s);
Stringgrid1.cells[1,j]:=Copy(s, 1,Pos(' ',s)-1);
StringGrid1.Cells[2,j]:=Copy(s,Pos(' ',s)+1,Length(s));
end;
end;
Closefile(f);
end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.08.2018, 14:04
Ответы с готовыми решениями:

Заполнить StringGrid из типизированного файла
Помогите пожалуйста решить проблему - StringGrid заполняется только первой строкой файла, как это...

Заполнить StringGRid из txt файла
Вот код программы,теперь нужно сделать что бы стрингрид заполнялся из txt. unit Unit1; ...

Как заполнить StringGrid данными из файла
Как заполнить StringGrid данными из файла, если запись в файл была такой: procedure...

Как заполнить StringGrid из файла, проверяя для каждой строки определенное условие?
С пятницой всех! Значит таксь: есть текстовый файл. Из него заполняется StringGrid с кучей столбцов...

6
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.08.2018, 14:36 2
Цитата Сообщение от Ilya_98 Посмотреть сообщение
Как разъединить эти два столбца?
111 222 333
Так это не 2 а 3 столбца.
0
0 / 0 / 0
Регистрация: 30.07.2018
Сообщений: 33
11.08.2018, 14:41  [ТС] 3
Цитата Сообщение от Puporev Посмотреть сообщение
Так это не 2 а 3 столбца.
Так первый пишется как надо. Второй и третий никак
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.08.2018, 14:49 4
Лучший ответ Сообщение было отмечено Ilya_98 как решение

Решение

Ну если по Вашему, то так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
assignfile(f,OpenDialog1.Filename);
reset(f);
read(f, n);
stringgrid1.ColCount := n;
for j:=1 to n do
 begin
  readln(f,s);
  Stringgrid1.cells[1,j]:=copy(s,1,pos(' ',s)-1);
  delete(s,1,pos(' ',s));
  StringGrid1.Cells[2,j]:=Copy(s,Pos(' ',s)-1);
  delete(s,1,pos(' ',s));
  StringGrid1.Cells[3,j]:=s;
 end;
end;
Closefile(f);
Хотя в Делфи давно это делают по другому, используя класс TSringList.
1
0 / 0 / 0
Регистрация: 30.07.2018
Сообщений: 33
11.08.2018, 15:04  [ТС] 5
Цитата Сообщение от Puporev Посмотреть сообщение
Ну если по Вашему, то так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
assignfile(f,OpenDialog1.Filename);
reset(f);
read(f, n);
stringgrid1.ColCount := n;
for j:=1 to n do
 begin
  readln(f,s);
  Stringgrid1.cells[1,j]:=copy(s,1,pos(' ',s)-1);
  delete(s,1,pos(' ',s));
  StringGrid1.Cells[2,j]:=Copy(s,Pos(' ',s)-1);
  delete(s,1,pos(' ',s));
  StringGrid1.Cells[3,j]:=s;
 end;
end;
Closefile(f);
Хотя в Делфи давно это делают по другому, используя класс TSringList.
Огромное спасибо, просто хотел понять этот способ. Пойду что нить про лист почитаю
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
11.08.2018, 15:24 6
Например для таблицы с фиксированными строкой и столбцом можно так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
procedure TForm1.Button1Click(Sender: TObject);
var t:TStringList;
    i:Word;
begin
t:=TStringList.Create; //создадим экземпляр класса
if OpenDialog1.Execute then t.LoadFromFile(OpenDialog1.Filename); //загрузим в него файл
Stringgrid1.RowCount:=t.Count+1; //1 фиксированная строка
StringGrid1.ColCount:=4;
//пусть названия или номера столбцов уже заполнены(0 строка таблицы)
for i:=0 to t.Count-1 do
 begin
  t[i]:=inttostr(i+1)+' '+t[i];//добавим в начало строки ее название, например номер
  with StringGrid1 do
   begin
    //заполним строки и столбцы начиная со второго
    Rows[i+1].Delimiter:=' '; //пусть в строках между словами пробел
    Rows[i+1].DelimitedText:=t[i]; //вставим строку, разбитую на слова
  end;
 end;
end;
Получится так.
Миниатюры
Заполнить stringgrid из файла по столбикам  
1
0 / 0 / 0
Регистрация: 30.07.2018
Сообщений: 33
12.08.2018, 15:59  [ТС] 7
Это и правда удобней. Применю в следующей прогре,спасибо!
0
12.08.2018, 15:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2018, 15:59
Помогаю со студенческими работами здесь

Заполнить StringGrid массивом чисел из файла и инвертировать этот массив, записав его в новый файл
Вот в общем то и суть задачи. Я довольно долго отсутствовал на учебе по причине болезни. И очень...

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

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

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

Заполнить StringGrid...
Доброго времени суток! Ребята, у меня такой вопрос, как корректно заполнить Стринггрид из файла?...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru