Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.08;
Скачать: CL | DM;

Вниз

заполнение массива...   Найти похожие ветки 

 
вероника148   (2007-03-15 21:46) [0]

у меня есть прграмма которая создает типизированный файл.
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 нен заполняется... ???


 
Johnmen ©   (2007-03-15 22:50) [1]

Естесственно. Указатель стоИт в конце стрима.
Читать внимательно Seek+F1, Read+F1


 
Anatoly Podgoretsky ©   (2007-03-15 23:09) [2]

Где же типизированый, когда TFileStream?
Почему Round?


 
DrawGrid   (2007-03-15 23:16) [3]

Не нужен тут Seek вообще. У стрима есть свойство Size/
Вообще кривоватый код, прямо скажем...


 
@!!ex ©   (2007-03-15 23:37) [4]

Перед чтением сделай f.Seek(0,soFromBegin);
Тогдав должно все заработать.
Когда узнаеш размер, то перемещаеш указатель на конец стрима.

Кстати, Анатолий верно заметил. Тут нет реботы с типизированным файлом.(Хотя можно было бы).
по поводу Round. Лучше div. И sizeof(TWeather), а не sizeof(ws), все таки ИМХО

P.S.
Ниче нового не сказал, просто попытался уточнить то что сказали до меня. Вдруг не понятно. ;)


 
Германн ©   (2007-03-15 23:51) [5]


> И sizeof(TWeather), а не sizeof(ws)

Это одно и тоже.


 
@!!ex ©   (2007-03-15 23:57) [6]

> [5] Германн ©   (15.03.07 23:51)
>
> > И sizeof(TWeather), а не sizeof(ws)
>
> Это одно и тоже.

LOL. А то я не в курсе. :)
Просто ИМХО TWeather нагляднее чем ws. А результат один и тот же.



Страницы: 1 вся ветка

Текущий архив: 2007.04.08;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
2-1173782342
novill
2007-03-13 13:39
2007.04.08
Вопрос по созданию/уничтожению форм


2-1173987499
Востоковед
2007-03-15 22:38
2007.04.08
Таблица <-> Delphi - Новичок запутался...


15-1173974684
Megabyte
2007-03-15 19:04
2007.04.08
Что выбрать: VS.NET или Delphi2006.NET?


6-1161591532
Axis_of_Evil
2006-10-23 12:18
2007.04.08
про TWSocket. дубль 2


15-1174117021
Riply
2007-03-17 10:37
2007.04.08
Скорость и местоположение данных.