Главная страница
    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.036 c
14-1084221704
Thor
2004-05-11 00:41
2004.05.30
фильм "Игра".


7-1082428272
VonVan
2004-04-20 06:31
2004.05.30
Перезагрузка, Выключение PC


1-1084813088
Sour
2004-05-17 20:58
2004.05.30
JvInspecor из JCVL


11-1074712103
mike.dld
2004-01-21 22:08
2004.05.30
СиБилдер


1-1084948578
Bizons
2004-05-19 10:36
2004.05.30
Interface+TControl





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