Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как лучше сохранить 3-х мерний массив на Диске


Автор: Mersik 20.10.2007, 14:27
Как лучше сохранить 3-х мерний массив[ на Диске чтоби со  временем можно било загрузитй его снова?
Код

var
Big_array:array[1..640000,1..30,1..9] of double;
begin
blockwrite(fff,Big_array,3200000);
end;

Автор: Letov 20.10.2007, 15:03
Если файловая система NTFS, можно сохранить девять потоков с массивом [1..640000, 1..30],  например, array.dat:1, array.dat:2 и т.д.

Автор: Mersik 20.10.2007, 15:51
 smile 

Автор: EvilsInterrupt 20.10.2007, 19:25
Mersik, Чего-то какой-то маразм. В чем сложности сохранить кусок памяти? Дал указатель Windows.ReadFile и дал размер этой памяти и все, айда проверять записалось или нет! Чего сложного? Покажи код, где именно не получается и что выплевывает или как программа себя ведет?

Автор: aktuba 20.10.2007, 19:54
Цитата(Letov @  20.10.2007,  16:03 Найти цитируемый пост)
Если файловая система NTFS, можно сохранить девять потоков с массивом [1..640000, 1..30],  например, array.dat:1, array.dat:2 и т.д. 


Это-то зачем??? Фиксированный массив - сохраняй через TFileStream, File и т.д... Зачем что-то вообще разбивать?

Автор: Mersik 22.10.2007, 15:07
Код

Function Save_Network_Structure (save_file_name:string):string;
var
    ii,jj,dd:integer;

    fff1:string;
    fff:file;
begin
K:=1;
     for  ii:=1 to input_neiro_q do
  begin
      for jj:=1 to neiro_q do
      begin
      temp_input_weight[ii,jj]:=input_weight[ii,jj,k];
      end;
  end;

for  ii:=1 to neiro_q do
  begin
    for jj:=1 to neiro_q do
      begin
        for dd:=1 to layer_q do
          begin
          temp_weight_hidden_layer[ii,jj,dd]:=weight_hidden_layer[ii,jj,dd,k];
          end;
      end;
  end;

for  ii:=1 to neiro_q do
  begin
  temp_autput_weight[ii]:=output_weight[ii,k];
  end;
                               //SIRAJA.neiro
  fff1:=save_path + datetoStr(now) +  '__'  + IntToStr(k)+ save_file_name;
assignfile(fff,fff1);
rewrite(fff,5129251);
blockwrite (fff,layer_q,1);
blockwrite (fff,neiro_q,1);
blockwrite (fff,input_neiro_q,1);
blockwrite(fff,temp_input_weight,5120000);
blockwrite(fff,temp_weight_hidden_layer,9216);
blockwrite(fff,temp_autput_weight,32);
closefile(fff);


result := 'SAVED in ' + fff1;
end;


Vidaet owibku EInOutError I/O error 998

Добавлено через 34 секунды
 smile 

Автор: aktuba 22.10.2007, 15:27
Жуть... Чем тебе TFileStream не угодил???

Автор: MetalFan 22.10.2007, 15:28
Код

type
  T3dArray = array [0..maxX,0..maxY,0..maxZ] of TType;
var
  l3dArray: T3darray;
  lFileStream: TFileStream;
begin
...
  lFileStream.Write( l3dArray, SizeOf( T3dArray ));
...
  lFileStream.Read( l3dArray, SizeOf( T3dArray ));

Автор: Mersik 26.11.2007, 15:47
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)