Главная страница
    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.45 MB
Время: 0.023 c
1-1084819395
white_rabbit
2004-05-17 22:43
2004.05.30
XML и Делфи


7-1082626574
Alex_s
2004-04-22 13:36
2004.05.30
Работа с контроллером


3-1083056156
Fishka
2004-04-27 12:55
2004.05.30
DBMemo и копирование текста из него


3-1083365155
TankMan
2004-05-01 02:45
2004.05.30
An error occurred while attempting initialize the BDE....


9-1075751438
mx
2004-02-02 22:50
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский