![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Массив в файл [D5, WinXP]
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.
это массив, в котором хранятся координаты компонентов, как их сохранять и читать по указанному вами методу?
Спасибо