Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 12:50   #1
Agrahil
 
Регистрация: 10.12.2011
Сообщений: 4
По умолчанию Сохранение многомерного массива в файл

Можно ли сохранить/прочитать многомерный массив из файла (например mas[i,j,k]). C двумерными проблем не возникает. А как быть с 3-х, 4-х.. -мерными?

Как вариант, можно трехмерный можно сохранить как множество двумерных, только я не знаю, как это сделать в один файл. Есть ли такая возможность?

Последний раз редактировалось Agrahil; 10.12.2011 в 13:52. Причина: Описка
Agrahil вне форума Ответить с цитированием
Старый 10.12.2011, 13:01   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Если с двумерными проблем нет, то непонятно почему с многомерными проблема.

Многомерность в головах, а не в натуральном выражении - при сохранении/чтении в файл (который, кстати, может хранить элементы любого массива только в линейном виде) увеличивается лишь количество циклов пропорционально измерениям массива.
Прик вне форума Ответить с цитированием
Старый 10.12.2011, 13:16   #3
Agrahil
 
Регистрация: 10.12.2011
Сообщений: 4
По умолчанию

Похоше вы правы, где-то подтормаживаю..
А можно ли сохранить в один файл больше одного массива?
Agrahil вне форума Ответить с цитированием
Старый 10.12.2011, 13:17   #4
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
А можно ли сохранить в один файл больше одного массива?
Agrahil Можно
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 10.12.2011, 13:25   #5
Agrahil
 
Регистрация: 10.12.2011
Сообщений: 4
По умолчанию

Если это не секрет, то подскажите как?
Agrahil вне форума Ответить с цитированием
Старый 10.12.2011, 13:41   #6
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,551
По умолчанию

Цитата:
Сообщение от Agrahil Посмотреть сообщение
Можно ли сохранить/прочитать многомерный в архив из файла (например mas[i,j,k]). C двумерными проблем не возникает. А как быть с 3-х, 4-х.. -мерными?
Какой еще архив?

Набросал примерчик сохранения и загрузки 3-х мерного массива, разбирайтесь:

Код:
const n = 4;

type TMultiArray = array[1..n,1..n,1..n] of Integer;

var Arr1, Arr2: TMultiArray;

procedure MultiFilling (var Arr: TMultiArray);
var i, j, k: Integer;
begin
  for i := 1 to n do
    for j := 1 to n do
      for k := 1 to n do
        Arr[i,j,k] := Random (1000);
end; {proc MultiFilling}

procedure MultiPrint (const Arr: TMultiArray);
var i, j, k: Integer;
begin
  for i := 1 to n do
  begin
    for j := 1 to n do
    begin
      for k := 1 to n do
        Write (Arr[i,j,k]:4);
      Write (' | ');
    end; {for}
    WriteLn;
  end; {for}
end; {proc MultiPrint}

function MultiSave (const FileName: string; const Arr: TMultiArray): Boolean;
var H, S: Integer;
begin
  S := 0;
  H := FileCreate (FileName);
  if H > -1 then
  begin
    S := FileWrite (H, Arr, SizeOf (Arr));
    FileClose (H);
  end;
  Result := S = SizeOf (Arr);
end; {func MultiSave}

function MultiLoad (const FileName: string; var Arr: TMultiArray): Boolean;
var H, S: Integer;
begin
  S := 0;
  H := FileOpen (FileName, fmOpenRead or fmShareDenyWrite);
  if H > -1 then
  begin
    S := FileRead (H, Arr, SizeOf (Arr));
    FileClose (H);
  end;
  Result := S = SizeOf (Arr);
end; {func MultiSave}

begin
  Randomize;
  MultiFilling (Arr1);
  MultiPrint (Arr1);
  if MultiSave ('multi.dat', Arr1) then
  begin
    if MultiLoad ('multi.dat', Arr2) then
    begin
      WriteLn;
      MultiPrint (Arr2);
    end else WriteLn ('Load error!');
  end else WriteLn ('Save error!');
  ReadLn;
end.
Arigato на форуме Ответить с цитированием
Старый 10.12.2011, 13:42   #7
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

Цитата:
Если это не секрет, то подскажите как?
так же как один массив!
только отделяйте их друг от друга чем-нибудь)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 10.12.2011, 13:55   #8
Agrahil
 
Регистрация: 10.12.2011
Сообщений: 4
По умолчанию

Цитата:
Можно ли сохранить/прочитать многомерный в архив из файла
Описался. Должно быть: массив.

Arigato, спасибо помог.
Agrahil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сохранение массива float в файл alvahtin Общие вопросы C/C++ 1 11.10.2011 12:55
Сохранение массива байтов в файл niki2012 Общие вопросы Delphi 4 09.01.2011 03:45
Сохранение массива в файл Дмитрий Стариков Общие вопросы Delphi 7 26.09.2010 19:51
Выведение многомерного массива в текстовый файл Lisёноk Помощь студентам 0 02.05.2010 19:46
Сохранение массива в файл Artem Общие вопросы Delphi 10 11.12.2007 20:00