Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/33: Рейтинг темы: голосов - 33, средняя оценка - 4.85
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
1

Считывание чисел из файла

10.10.2009, 14:43. Просмотров 5991. Ответов 14
Метки нет (Все метки)

Кто знает, помогите, пожалуйста. Вопрос такой:

У меня есть текстовый файл с числами внутри (создаю простенькую игру). Числа должны считываться в массив, чтобы потом по ним строить карту. Они записаны с пробелами. Как сделать так, чтобы в один элемент массива (переменную) считывалась только первая цифра (до раздлителя - пробела), в другой - вторая и т.д.?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2009, 14:43
Ответы с готовыми решениями:

Считывание массива чисел из файла и запись их в Memo
Помогите пожалуйста Есть файл, в нем в 1 столбик идет массив чисел X,кол-во...

Считывание чисел из файла в массив, без пробелов
Добрый день. Нужно реализовать считывание чисел из файла, выбираемого в...

Считывание с файла
Здравствуйте. подскажите пожалуйста, есть dat-файл 11 22 00 22 00 00 00 44...

Считывание из файла
Имею файл с такой структурой type rec=record images:array of Tobject; end;...

считывание файла
Добрый день. Есть вопрос может кто сталкивался. Мне нужно считать побайтно из...

14
Puporev
Модератор
54584 / 42090 / 29061
Регистрация: 18.05.2008
Сообщений: 99,281
10.10.2009, 15:10 2
Покажите пример строки и кажется Вы путаете число и цифру, будьте аккуратнее с этими понятиями, первая цифра числа и первое число, это разные вещи.
0
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
10.10.2009, 15:22  [ТС] 3
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2
1 1 1 2 2 2 1 1 2 2 1 1 1 2 2 1 1
1 2 1 2 1 1 2 1 1 2 2 1 2 1 2 1 2

Вот содержимое файла, да, там цифры.
0
Puporev
Модератор
54584 / 42090 / 29061
Регистрация: 18.05.2008
Сообщений: 99,281
10.10.2009, 15:28 4
Т.е. нужно создать двумерный массив из двух строк, в первой строке нечетные по порядку цифры, во второй строке четные по порядку? Причем все подряд от первой до последней?
0
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
10.10.2009, 15:37  [ТС] 5
Нужно создать двумерный массив: [0..16], [0..16], чтобы элементу под номером [0, 0] соответствовала первая цифра первой строки, элементу [2, 0] - первая цифра 3 строки и т.д. Пробелы записываться не должны, потому что массив типа Integer.
0
Puporev
Модератор
54584 / 42090 / 29061
Регистрация: 18.05.2008
Сообщений: 99,281
10.10.2009, 16:04 6
Количество строк тогда должно быть четным, а у Вас их 17.
0
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
10.10.2009, 16:05  [ТС] 7
Почему четным? От 0 счет идет.
0
Puporev
Модератор
54584 / 42090 / 29061
Регистрация: 18.05.2008
Сообщений: 99,281
10.10.2009, 16:27 8
если строки собирать парами, их должно быть четное количество. Количество чисел в строке неважно, лишь бы везде одинаковое.

Добавлено через 3 минуты
И еще, нельзя в начале файла, в первой строке указать количество цифр в строке и количество строк? Типа
17 16
1 2 1 2 .........

Добавлено через 7 минут
Слушай, кажется понял, тебе просто матрицу из файла прочитать?

Добавлено через 10 минут
Если в файле точно известное количество строк и столбцов, то просто так.
Delphi
1
2
3
4
5
6
7
8
9
10
var a:array[0..16,0..16] of byte;
    f:textfile;
    i,j:integer;
begin
assignfile(f,'file1.txt');//файл в папке с программой, иначе поный путь указать
reset(f);
for i:=0 to 16 do
for j:=0 to 16 do
read(f,a[i,j]);
end;
0
conn
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
10.10.2009, 16:41 9
будет читать с пробелами, наверно нужно добавить if a[i,j]<>' ' или что-то типа того..
0
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
10.10.2009, 16:54  [ТС] 10
Он, почему-то, всю строку записывает в переменную, вместе с пробелами. Я сначала записываю это в текстовую переменную, а затем - StrToInt() - в массив. Почему записывается вся строка?
0
conn
115 / 114 / 22
Регистрация: 29.08.2009
Сообщений: 174
10.10.2009, 16:59 11
может readln вместо read написал?
0
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
10.10.2009, 17:10  [ТС] 12
В том-то и дело, что писал Read. Вот код:

Delphi
1
2
3
4
5
6
for i := 0 to 16 do begin
    for j := 0 to 16 do begin
      Read(fFile, vFileBuf);
      aPole[j, i].Number := StrToInt(vFileBuf);
    end;
  end;
И ошибка, что возникает (как я думаю, при выполнении StrToInt():

0
Миниатюры
Считывание чисел из файла  
Puporev
Модератор
54584 / 42090 / 29061
Регистрация: 18.05.2008
Сообщений: 99,281
10.10.2009, 18:26 13
Я сначала записываю это в текстовую переменную, а затем - StrToInt() - в массив.
Зачем это делаете? Вы же числа читаете. Оператор read читает из текстового файла числа, пропуская прочие символы, в том числе пробелы. Я же Вам все написал, ума нет, зачем творчеством заниматься?
Пишите
Delphi
1
2
3
for i := 0 to 16 do
for j := 0 to 16 do 
Read(fFile, aPole[i,j].Number );//не j,i
0
BiLLoO
0 / 0 / 0
Регистрация: 16.06.2009
Сообщений: 58
10.10.2009, 19:20  [ТС] 14
Цитата Сообщение от Puporev Посмотреть сообщение
Зачем это делаете? Вы же числа читаете. Оператор read читает из текстового файла числа, пропуская прочие символы, в том числе пробелы.
Этого я не знал. Теперь узнал, спасибо.

Цитата Сообщение от Puporev Посмотреть сообщение
зачем творчеством заниматься?
По незнанию творчеством и занимаюсь. Всего сразу не узнаешь.

Цитата Сообщение от Puporev Посмотреть сообщение
//не j,i
Вот тут, как раз, я был прав. [j, i], а не [i, j], потому что j - это x, а i - это y (координаты).
0
mjsd
0 / 0 / 0
Регистрация: 19.04.2013
Сообщений: 9
26.05.2013, 11:44 15
с однозначными понятно а с много значными там цикл m:=m*10+strtoint(s[i]);
0
26.05.2013, 11:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2013, 11:44

считывание из файла
прошу помочь написать программу считывающую текстовый файл и выводящую вторую...

Считывание файла
Добрый день! Подскажите, как сделать программу, которая бы считывала из...

Считывание матрицы из файла
Задание следующее: Дана целочисленная матрица размером nxm. Определите...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru