![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Gloomber |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Где: Moscow Репутация: нет Всего: нет |
Подскажите пожалуйста ..... Как записать в файл двумерный массив (или прочитать) ? Текстовый или
типизированный , не столь важно . Заранее СПАСИБО!!! |
|||
|
||||
DimassS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 12.4.2006 Где: Россия, Иркустк Репутация: 1 Всего: 2 |
Вопрос на форуме уже был... не помню где я это нашёл:
Итак, для доступа к текстовым файлам используется переменная типа TextFile. До сих пор не совсем понимаю что это такое физически - что-то типа "внутреннего" паскалевского Handle на файл. Итак чтобы ассоциировать файл на диске с переменной надо проделать следующие опрерации: 1) Определяем файловую переменную: var f:TextFile; 2) Ассоциируем ее: AssignFile(F, 'c:\MyFile.txt'); 3) Теперь надо этот файл открыть, есть 3 варианта: - файла нет или он должен быть перезаписан, открытие для записи: Rewrite(f) - файл есть и его надо открыть для чтения (с первой строки) Reset(f) - файл есть и его надо открыть для дописования строк в конец Append(f) Как видите не хватает очень полезных функций таких как открытия файла для чтения с произвольной строки и для записи в файл произвольной строки. Но надо учесть, что так как длины строк разные, не существует никакого способа узнать физическое место начала например 1000 строки, не прочитав всю тысячу строк. Для записи ситуация еще сложнее - вставить строку означает перезаписать всю информацию после этой строки заново. Таким образом варианты только следующие: - Перезаписать весть файл - Читать с первой строки - Дописать что-то в конец - Читать и писать файл целиком (см. выше работу через TStrings) В конце работы открытый файл нужно закрыть: CloseFile(f); Теперь пусть у нас есть строковая переменная s для чтения строки из файла Чтение предварительно открытого файла: ReadLn(f, s) - будет прочитанна текущая строка и позиция чтения переведена на следующую позицию. А как прочитать весь файл? While not eof(f) do begin ReadLn(f, s); {здесь делаем что-то с прочитанной строкой} end; |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
При помощи типизированных файлов. Для теста - TextFile.
Перебирать все элементы массива и сохранять каждый. |
|||
|
||||
WERITAS |
|
|||
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
Если массив содержит объекты типа, определенного пользователем, то имеет смысл использовать фаловые потоковые классы TFileStream.
-------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
Gloomber |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Где: Moscow Репутация: нет Всего: нет |
Можно чуточку подробнее .
|
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Если массив статический, то запись и чтение из типизированного файла делается очень легко.
|
|||
|
||||
vood |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 271 Регистрация: 23.2.2006 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Может не совсем в тему но об этом же
Код записывает в файл содержание stringgrid Добавлено @ 09:49
-------------------- Вы все еще курите ? Тогда мы идем к вам |
|||
|
||||
Quadr0 |
|
|||
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:04 |
|||
|
||||
Gloomber |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Где: Moscow Репутация: нет Всего: нет |
Хорошо! С типизированными разобрались. А как быть с текстовыми
![]() |
|||
|
||||
DimassS |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 12.4.2006 Где: Россия, Иркустк Репутация: 1 Всего: 2 |
Var
F: TextFile;//текстовая переменная MyCol: TStringList;//Количество строк.. SS:String; begin MyCol:= TStringList.Create; MyCol.Clear; AssignFile(F, 'Путь к файлу'); Reset(F);//открыть для чтения While NOT EOF(F) do //пока не кончится файл begin Readln(F, SS); if SS[1] = 't' then Begin //если конечно известна первая буква записи в строке MyCol.Add(SS) ; end; end; Ну вот маленький пример чтения текстового файла... Удачи! Это сообщение отредактировал(а) DimassS - 29.4.2006, 19:43 |
|||
|
||||
Gloomber |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Где: Moscow Репутация: нет Всего: нет |
DimassS ты меня не понял. Записать или прочитать последовательность символов я знаю как.
А вот матрицу чё то не получается. |
|||
|
||||
WERITAS |
|
|||
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
Gloomber, почему бы тебе потоками не воспользоваться? В поток можно поместить что угодно (т.е. записать и считать в него).
-------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
Gloomber |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 28.4.2006 Где: Moscow Репутация: нет Всего: нет |
это как
![]() |
|||
|
||||
WERITAS |
|
|||
******** ![]() ![]() Профиль Группа: Участник Сообщений: 582 Регистрация: 2.5.2005 Где: Москва Репутация: нет Всего: 5 |
Посмотри пример в дельфишном хелпе. -------------------- Арт-менеджер клуба, разрешивший концерт Алексея Глызина, уволен с формулировкой "Мудак" |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
![]() Добавлено @ 23:29 Если есть хоть какие-нибудь мысли по этому поводу, пожалуйста ответьте в PM, что бы сильно не флудить ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |