Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Массив в файл [D5, WinXP]


Страницы:   1 2

Justas ©   (2004-10-08 01:17:00) 

Привет всем!
Есть массив a:array [1..31,1..12] of string. Как его сохранить в файл, а потом прочитать из файла?
Кажется, сохранять можно так

with TFileStream.Create('MyArray.dat', fmCreate or fmOpenWrite) do begin
WriteBuffer(a, SizeOf(a));
Free;

Но, я не знаю, как его потом из файла прочитать
Заранее спасибо


Zeon   (2004-10-17 00:54:00) [1]

> Justas
Интересно, чем тут неудобно читать?
Про команду Seek сышал?

А кроме того еще и дебажить крайне удобно, так как такой файл всегда можно просмотрель любым текстовам редактором.


GuAV   (2004-10-09 01:17:00) [2]


> Массив статический.

Статический, да ещё из Integer.
Тогда совсем просто
запись
WriteBuffer(a, SizeOf(a));
чтение
ReadBuffer(a, SizeOf(a));


Justas   (2004-10-09 01:09:00) [3]


> Zeon

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


> GuAV

Массив статический.


> Defunct

Большое спасибо за код. Пользоваться прогой стало намного удобнее :)


GuAV   (2004-10-08 12:59:00) [4]

Так. Определяемся:
с типом элемента массива.
с размерностью.
статический или динамический.

от этого зависит ответ. возможно его можно будет читать-записывать за одну или две ReadBuffer-WriteBuffer.


Amoeba   (2004-10-08 11:08:00) [5]


> Zeon   (08.10.04 03:12) [21]

Ну, это уже называется делать через одно известное место. Использвание двоичного файла для данной задачи проще и эффективнее.


Zeon   (2004-10-08 03:12:00) [6]

А можно просто создать обычный текстовый файл и загонять туда все строчки из массива поочерёдно. Просто и надёжно. А если кретичен размер получившегося файла, то тут уже нужно применять различные алгоритмы сжатия данных, благо текст сжимается хорошо. Но это уже отдельная тема...


Justas   (2004-10-08 03:11:00) [7]

для ини-файла написал в смысле


Defunct   (2004-10-08 02:57:00) [8]

ic


Justas   (2004-10-08 02:55:00) [9]


> Defunct

Тут просто координаты элементов управления. Так что вряд ли их понадобится редактировать вручную. Хотя маленький редактов я написал - но отдельный


Defunct   (2004-10-08 02:53:00) [10]

> что сохранять чиста в виде string тупо

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


Justas   (2004-10-08 02:48:00) [11]


> ReadBuffer(A[i,j][1], Byte(A[i,j]));  

В этом месте выдавал ошибку Invalid typecast
Надо было написать ReadBuffer(A[i,j][1], Byte(A[i,j][0]));   и заработало
спасибо


Defunct   (2004-10-08 02:46:00) [12]

> при чтении получаю ошибку Invalid typecast

Где именно? Приведите код чтения с указанием места ошибки.


Justas   (2004-10-08 02:46:00) [13]

Все работает!
Премного благодарен за помощь!


Justas   (2004-10-08 02:39:00) [14]


> Германн

ну вообще-то зря ты так..я ж не извращенец сетевой :(
просто раньше у меня данные в прогу грузились из ИНИ-файла..я решил переделать. Когда задавал первый вопрос - думал сделать так, но потом увидел. что сохранять чиста в сиде string тупо, и задал другой вопрос..
извиняюсь, если обидел кого-то


Justas   (2004-10-08 02:37:00) [15]


> Defunct

при чтении получаю ошибку Invalid typecast
как бороться?


Германн   (2004-10-08 02:34:00) [16]

2 Justas   (08.10.04 02:15) [9]
Ну ты гад! Взял два кирпича. Одним ударил по GuAV, другим по Defunct. (И сделал вид, что это они друг друга!).

А они лезли вон из кожи, что бы помочь с проблемой сохранения/чтения строк в файл и из файла!

А какие проблемы волнуют тебя? Может объяснишь наконец!


Defunct   (2004-10-08 02:29:00) [17]

Можно аналогично, достаточно одной строчки при записи:

WriteBuffer(A[i], 4);

при чтении:

ReadBuffer(A[i], 4);


Justas   (2004-10-08 02:15:00) [18]


> Defunct

А как поступать для integer?


Justas   (2004-10-08 02:14:00) [19]

Спасибо народ!!!
Извиняюсь за прошлый пост! Это у меня эксплорер висел долго открытый с написанным сообщением, пока я пытался что-то сделать. А когда не получилось - отослал, но уже куча ответов появилась :)
Спасибо за помощь!


Justas   (2004-10-08 02:12:00) [20]

Извиняюсь, это я сглупил. Должен быть array of integer.
это массив, в котором хранятся координаты компонентов, как их сохранять и читать по указанному вами методу?
Спасибо


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо