Главная страница
    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.037 c
11-1073169165
tbyte
2004-01-04 01:32
2004.05.30
KOL


6-1081853437
Сергей Ю.
2004-04-13 14:50
2004.05.30
IP адрес


4-1082083033
SPeller
2004-04-16 06:37
2004.05.30
Печать RichEdit


7-1082610876
Demi
2004-04-22 09:14
2004.05.30
Температура процессора


3-1083829977
lightix
2004-05-06 11:52
2004.05.30
Вопросы по ADO





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