|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Разделить строку данных на отдельные числа
Народ, подскажите, пожалуйста, как мне реализовать заполнение данных из txt фаила в SrtingGrid.
Фаил заполнен так: 2 3 4 5 6 7 ..... Когда я пытаюсь подгрузить такой фаил, то у меня заполняется первый столбец данными всей строки, а мне надо чтобы каждое число в своей ячейке было. Что нужно поменять? Код:
//DownLoad the file procedure TForm1.Button2Click(Sender: TObject); var i,j,m,n:integer; s:string; input:TextFile; begin if OpenDialog1.Execute then begin AssignFile(input, OpenDialog1.FileName); Reset(input); m:=strtoint(Edit1.Text); n:=strtoint(Edit2.Text); for i := 0 to m - 1 do begin for j := 0 to n - 1 do begin Readln(input, s); StringGrid1.Cells[i,j] := s; end; Readln(input); end; CloseFile(input); end; |
#2
|
||||
|
||||
Цитата:
Я бы это делал по другому Код:
for i := 0 to m - 1 do begin for j := 0 to n - 1 do begin Read(input, s); StringGrid1.Cells[i,j] := s; end; end; |
#3
|
|||
|
|||
В этом случае у меня считывается только первая строка и заполняется только первая верхняя ячейка.
Нужны еще идеи |
#4
|
||||
|
||||
Структура такая:
2 3 4 5 6 7 ..... и не иначе? Тоесть не может быть?: 23 3 4 55 56 7 6 7 3 45 54 65 Просто как вопрос задаш - такой и ответ получишь. |
#5
|
|||
|
|||
Дана матрица m x n, т.е. во всех строках одинаковое количество цифр (m цифр), со стобцами аналогично.
Цифры могут быть как одно-, так и двузначиными, но все положительные!) m и n задаются мною через ГУИ (Edit поля) и именно столько значений я хочу видеть в итоге (а не столько сколько есть в фаиле). Последний раз редактировалось juggle, 05.02.2011 в 23:54. |
#6
|
||||
|
||||
числа от 0 до 9 записываются 0,1,2 или 00,01,02,03 ?
|
#7
|
|||
|
|||
числа записываются вот так: 3 4 23 43 2 (например)
т.е. без нулей в начале и без запятых, разделяются пробелами. |
#8
|
||||
|
||||
Цитата:
Ну тогда придется разбирать каждую строку. Тоесть в "3 4 23 43 2" ищешь 1-й пробел, копируешь число от начала до 1-го пробела, далее между 1-м и 2-м и т.д. до конца строки. Далее переходим на 2-ю, потом 3-ю и т.д. до конца файла. Правда есть более изощренный способ, с оптимизацией, но он явно не для твоего уровня знаний. Последний раз редактировалось Konrad, 06.02.2011 в 00:42. |
#9
|
||||
|
||||
Так попробуйте:
Код:
Var Cells: TStringList; T: TextFile; S: String; C,R: Integer; begin Cells := TStringList.Create; AssignFile(T, 'UserData.txt'); Reset(T); R := 0; while not Eof(T) do begin ReadLn(T, S); Cells.Text := StringReplace(S,#32,#13#10,[rfReplaceAll]); for C := 0 to Cells.Count - 1 do StringGrid1.Cells[R,C] := Cells.Strings[C]; Inc(R); end; CloseFile(T); end. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
Страдалецъ, у меня вылетает ошибка:
Project Project1.exe raised exception class EStringListError with message 'List index out of bounds (6)'. Process stopped. Use Step or Run to continue. на строке for C := 0 to Cells.Count - 1 |
#11
|
||||
|
||||
Не должно вообще-то. Я хоть и перепутал там строки со столбцами при записи в грид (должно быть так):
Код:
StringGrid1.Cells[C,R] := Cells.Strings[C]; Проверил на тестовом файле - все ок. Киньте ваш файлик с данными. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#12
|
|||
|
|||
Вот, пожалуйста.
В файлик добавлен input1.txt, его подгружаю. |
#13
|
||||
|
||||
вот ваш код:
Код:
while not Eof(input) do begin ReadLn(input, S); Cells.Text := StringReplace(S,#32,#13#10,[rfReplaceAll]); for j := 0 to n - 1 do StringGrid1.Cells[j,i] := Cells.Strings[j]; Inc(i); end; Код:
while not Eof(T) do begin ReadLn(T, S); Cells.Text := StringReplace(S,#32,#13#10,[rfReplaceAll]); for C := 0 to Cells.Count - 1 do StringGrid1.Cells[R,C] := Cells.Strings[C]; Inc(R); end; Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#14
|
||||
|
||||
Мда...
http://www.cyberforum.ru/delphi-begi...ead238678.html Заметте с какого кода он начал там пост.. Ведь с кодом помогут охотнее)))) Неважно чей он, и на каком форуме получен)))))) Последний раз редактировалось Konrad, 07.02.2011 в 10:24. |
#15
|
|||
|
|||
Страдалецъ, да нашла ошибку, спасибо за наставничество. Все заработало.
Konrad, код с которого я начала пост был собран из разных мест и написан мной. И да, я сюда пришла потому что сама не могу полностью разобраться в Делфи, а Вы зачем сюда пришли? Показать что самый умный? Жалкое зрелище. И я свой вопрос постила в 3 форума, и что??? Страдалецъ, спасибо еще раз, если бы у меня был человек, который бы объяснил мне основы, я бы не беспокоила Вас. |