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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2010, 15:54   #1
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
Восклицание Сохранение и загрузка динамического массива.

Добрый день!

Сохранение и загрузка динамического массива. Массив представляет собой пять матриц 24х24. Я делаю так:

Код:
type
  TExDynaMatrix = array of array of array of Integer;

private
    // Load & save
    procedure LoadDynArray(AFileName : WideString; DynArr : TExDynaMatrix); // загрузка
    procedure SaveDynArray(AFileName : WideString; DynArr : TExDynaMatrix); // сохранение

procedure TMainForm.LoadDynArray(AFileName : WideString; DynArr : TExDynaMatrix);
var
  // Counters
  i, j : Integer;
  // Read classes
  RStr : TFileStream;
  Reader : TReader;
  // Metrics
  ARow, ACol : Integer;
begin
  RStr := TFileStream.Create(AFileName+'.dat', fmOpenRead, fmShareExclusive);
  try
    Reader := TReader.Create(RStr, 8096);
    try
      ARow := Reader.ReadInteger;
      SetLength(DynArr, ARow);
      ACol := Reader.ReadInteger;
      for i := 0 to ARow-1 do
      begin
        SetLength(DynArr[i], ACol, ACol);
        for j := 0 to ACol-1 do
          Reader.Read(DynArr[i, j], Length(DynArr[i])*SizeOf(Integer));
      end;
    finally
      FreeAndNil(Reader);
    end;
  finally
    FreeAndNil(RStr);
  end;
  ProcessOutput;
end;

procedure TMainForm.SaveDynArray(AFileName : WideString; DynArr : TExDynaMatrix);
var
  // Counters
  i, j : Integer;
  // Read classes
  WStr : TFileStream;
  Writer : TWriter;
begin
  WStr := TFileStream.Create(AFileName+'.dat', fmCreate, fmShareExclusive);
  try
    Writer := TWriter.Create(WStr, 8096);
    try
      Writer.WriteInteger(Length(DynArr));
      for i := 0 to Length(DynArr)-1 do
      begin
        Writer.WriteInteger(Length(DynArr[i]));
        for j := 0 to Length(DynArr[i])-1 do
          Writer.Write(DynArr[i, j], Length(DynArr[i])*SizeOf(Integer));
      end;
    finally
      FreeAndNil(Writer);
    end;
  finally
    FreeAndNil(WStr);
  end;
end;
Код не работает, подскажите где в процедурах сохранения и загрузки ошибки.

Спасибо
SkAndrew вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сохранение динамического массива в файл пауэрлифтинг Общие вопросы Delphi 1 07.04.2010 00:02
загрузка массива и сохранение результата в файл Ferghost Общие вопросы C/C++ 2 03.06.2009 20:24
Сохранение динамического массива Horus92 Помощь студентам 3 07.05.2009 12:36
Удаление динамического массива Сергей089 Общие вопросы C/C++ 3 08.03.2009 13:13