Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.30;
Скачать: CL | DM;

Вниз

Запись и считывания масива из файла   Найти похожие ветки 

 
Alek_1   (2004-05-18 19:15) [0]

Есть вот такой масив:

 TSchet_client = packed record
  svob_all: Currency;
  Svobdnaya: Currency;
  Marja: Currency;
  Tek_result: Currency;
  Saldo: Currency;
 end;

 TUsers = packed record
  user_id: word;
  total_usd: TSchet_client;
 end;

users: array of TUsers;

Я хочу сохранить его в файл а затем считать

Сохраняю так:

AssignFile(ToF, ExtractFilePath(Application.ExeName)+"users.dat");
Rewrite(ToF);
try                  
  BlockWrite(ToF, Users, SizeOf(users));
finally
CloseFile(ToF);
end;

Затем считываю вот так:

AssignFile(ToF, ExtractFilePath(Application.ExeName)+"users.dat");
Reset(ToF);
try
if FileSize(ToF) > 0 then begin
 SetLength(Users,kol_users); - в kol_users записана информация о том сколько памяти занимал масив при сохранении

  BlockRead(ToF, Users, SizeOf(users));
end;

finally
CloseFile(ToF);
end;

и Вот при считывании в масив забивается какая-то ерунда. Совершенно не те параметры которые были при сохранении

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


 
Alek_1   (2004-05-18 21:28) [1]

подскажите плиззз, кто что знает


 
GuAV ©   (2004-05-18 22:01) [2]

procedure TForm1.Button2Click(Sender: TObject);
var A:array of Integer;
begin
SetLength(A,200);
ShowMessageFmt("%d %d",[Length(A)*SizeOf(A[0]),SizeOf(A)]);
ShowMessage(BoolToStr(@A=@A[0],True));
Finalize(A);
end;


 
DHDD   (2004-05-19 04:30) [3]

Сохранять так:

Rewrite(ToF,1);

Затем считывать вот так:

Reset(ToF,1);
kol_users:=filesize(ToF) div sizeof(TUsers);
BlockRead(ToF, Users, filesize(ToF));


 
Alek_1   (2004-05-19 13:28) [4]

Всем спасибо!

> DHDD

не получилось у мен так как Вы предложили, он снова забивал масив какимито левыми значениями.

Я решил проблему с использованием типизарованых файлов.
ToF: file of TUsers;

И считываю масивчик попорядочку через Write and Read.

Хотя нужно будет разобраться и с BlockWrite and BlockRead


 
MBo ©   (2004-05-19 13:39) [5]

BlockWrite(ToF, Users[0], SizeOf(Tusers)*Length(Users));



Страницы: 1 вся ветка

Текущий архив: 2004.05.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.055 c
1-1084436594
Inner
2004-05-13 12:23
2004.05.30
Срочно TTreeView подскажите!


14-1083563569
Александр Иванов
2004-05-03 09:52
2004.05.30
Нужны ли русские России?


1-1084857230
SiJack
2004-05-18 09:13
2004.05.30
Как определить что MessageBox уже показано и не показывать


6-1081767324
Сережа550
2004-04-12 14:55
2004.05.30
Текущий URL


4-1082117282
Сергей_И
2004-04-16 16:08
2004.05.30
Запись текста в интернет форму