![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
заполнение массива...
вероника148 © (2007-03-15 21:46:00)у меня есть прграмма которая создает типизированный файл.
type
TWeather = record
city: string[20]; // город
date: string[10]; // дата в формате "дд.мм.гггг"
timecode: char; // код времени измерения: '1' - 2:00; '2' - 8:00;
// '3' - 14:00; '4' - 20:00
temper: double; // температура
end;
файл состоит из структур типа TWeather
файл заполняется правильно
но при чтении в массив другой программой возникают проблемы
if not opendialog1.Execute then exit;
filename := Opendialog1.FileName;
f := TFileStream.Create(filename,fmOpenRead);
count := round(f.Seek(0,soFromEnd)/sizeof(ws)); //кол-во записей в файле
setlength(MasWeather,count);
setlength(averagetemper,count);
// showmessage(inttostr(count));
for i := 1 to count do
begin //заношу данные из файла в массив
f.Read(MasWeather[i],sizeof(ws)); //не заполняется массив,,,???
// showmessage(MasWeather[i].city)
end;
f.Free;
end;
вот так я читаю... но массив TWeather нен заполняется... ???
@!!ex (2007-03-15 23:57:00) [1]> [5] Германн © (15.03.07 23:51)
>
> > И sizeof(TWeather), а не sizeof(ws)
>
> Это одно и тоже.
LOL. А то я не в курсе. :)
Просто ИМХО TWeather нагляднее чем ws. А результат один и тот же.
Германн (2007-03-15 23:51:00) [2]
> И sizeof(TWeather), а не sizeof(ws)
Это одно и тоже.
@!!ex (2007-03-15 23:37:00) [3]Перед чтением сделай f.Seek(0,soFromBegin);
Тогдав должно все заработать.
Когда узнаеш размер, то перемещаеш указатель на конец стрима.
Кстати, Анатолий верно заметил. Тут нет реботы с типизированным файлом.(Хотя можно было бы).
по поводу Round. Лучше div. И sizeof(TWeather), а не sizeof(ws), все таки ИМХО
P.S.
Ниче нового не сказал, просто попытался уточнить то что сказали до меня. Вдруг не понятно. ;)
DrawGrid (2007-03-15 23:16:00) [4]Не нужен тут Seek вообще. У стрима есть свойство Size/
Вообще кривоватый код, прямо скажем...
Anatoly Podgoretsky (2007-03-15 23:09:00) [5]Где же типизированый, когда TFileStream?
Почему Round?
Johnmen (2007-03-15 22:50:00) [6]Естесственно. Указатель стоИт в конце стрима.
Читать внимательно Seek+F1, Read+F1