Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.035 c
6-1081949232
Yurko
2004-04-14 17:27
2004.05.30
ProgressBar для закачки файла с HTTP


14-1083997700
Bond
2004-05-08 10:28
2004.05.30
Задачи по Паскалю


14-1084386179
lak
2004-05-12 22:22
2004.05.30
задача


9-1075019291
ZedeS
2004-01-25 11:28
2004.05.30
Игра Удав, движение


9-1075218805
Night Flame
2004-01-27 18:53
2004.05.30
Игра "Пять крестов"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский