Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Delphi] Прочитать из файла


Автор: dikiy 14.11.2006, 11:24
Задача такая: есть файл с определенным количеством строк каждая строка содержит только один символ. Необходимо узнать существует ли этот файл на самом деле, сколько строк в этом файле и прочитать каждую строку, записав их в массив.
Есть какие-нибудь варианты?

Автор: Matematik 14.11.2006, 11:31
Вариантов море.
В чем проблема? Пиши.

Автор: dikiy 14.11.2006, 11:42
основная проблема как узнать, что файл есть и сколько в нем записей

Автор: Matematik 14.11.2006, 11:49
Есть ли файл 
Код

FileExists()

Кол-во строк
Код

var sl:TStringList;
sl:=TStringList.Create;
sl.LoadFromFile('файл');
sl.Count // кол-во строк
sl[0] // первая строка
sl[1] // вторая строка
// итд
sl.Free;

Автор: dikiy 14.11.2006, 11:51
Вот спасибо буду должен smile 

Автор: jaAlex 14.11.2006, 11:53
Цитата(dikiy @  14.11.2006,  11:42 Найти цитируемый пост)
основная проблема как узнать, что файл есть

Функция FileExists - проверяет существование файла.
Цитата(dikiy @  14.11.2006,  11:42 Найти цитируемый пост)
 сколько в нем записей

Далее делаешь так: создаешь счетчик, считываешь из файла строки, и т.к. строка содержит 1 символ, то к счетчику после считывания каждой строки прибавляешь по 1.
И так пока записи в файле не закончатся - функция EOF. Ну и все, потом уже выводишь значение счетчика куда тебе надо, это и будет количеством символов.

Автор: JUmPER 14.11.2006, 12:28
размер файла проще:
получаем размер файла и делим на 3 (с округлением вверх т.к. можнет не быть завершающего \n\r)
Цитата(dikiy @  14.11.2006,  11:24 Найти цитируемый пост)
каждая строка содержит только один символ


PS: только для однобайтовых чарсетов
PPS: для не виндовых файлов не ообязательно на 3 делим (в nix, например, на 2)

Автор: Matematik 14.11.2006, 12:35
Цитата(JUmPER @  14.11.2006,  12:28 Найти цитируемый пост)
размер файла проще:

Это к чему?

Автор: dikiy 14.11.2006, 13:38
Блин, что называется беда нечаяно нагрянет... оказывается каждая строка это элемент матрицы, прочитать то я прочитал, а как опять их представить в виде матрицы?

Автор: Matematik 14.11.2006, 13:43
Читай и пиши в свою матрицу. 
Как?
Зависит от того, какой формат файла.

Автор: TaNK 14.11.2006, 13:43
Цитата(dikiy @ 14.11.2006,  13:38)
Блин, что называется беда нечаяно нагрянет... оказывается каждая строка это элемент матрицы, прочитать то я прочитал, а как опять их представить в виде матрицы?

циклом, for например

Автор: dikiy 14.11.2006, 13:58
Цитата(TaNK @  14.11.2006,  13:43 Найти цитируемый пост)
циклом, for например 

Это как? вот у меня файл
1
2
3
4
5
6
7
8
9
как я узнаю что это матрица 3х3 ведь может быть матрица 2х8 и 4х4 с тем же количеством элементов. Тут надо придумывать что-то другое скорее всего сохранять матрицу в том виде как она есть... Тут тоже куча вопросов буду думать, если появятся идеи пишите smile 

Автор: JUmPER 14.11.2006, 14:07
Цитата(Matematik @ 14.11.2006,  12:35)
Цитата(JUmPER @  14.11.2006,  12:28 Найти цитируемый пост)
размер файла проще:

Это к чему?

к определению кол-ва строк без чтения их из файла

Добавлено @ 14:10 
Цитата(dikiy @  14.11.2006,  13:58 Найти цитируемый пост)
Тут тоже куча вопросов буду думать, если появятся идеи пишите

вариант 1 (тот, что используется чаще):
просто разделяем элементы матрицы например пробелом, а стороки матрицы "\n"

или же помещаем размеры матрицы первыми числами в файл (если есть необходимость сохранить структуру файла)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)