Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TFileStream - чтение в динамический массив [D7, XP]


White Barsik ©   (2007-03-21 22:14:00) 

есть динамический массив
aaa : array of byte;
выделяем память под него
SetLength(aaa, 500);

Есть экземпляр класса TFileStream

zzz : TFileStream;
...
zzz := TFileStream.create('c:\test.txt');

Попытка прочитать в массив из потока не приводит ни к чему.
zzz.Read(aaa, 500) ;

Про позиционирование и пр. Я знаю и просто для ясности эти моменты опустил. Что характерно, если массив статический, то чтение в него прходит без запинки. При чтении в динамический счетчик прочитанного показывает что все верно - прочитано столько сколько надо  - но при этом ни чего в массив не попадает. В чем я не прав?


Германн   (2007-03-22 02:19:00) [1]


> Ну, «у самого», у... :)
>

Дык ведь "два этажа, вверх, налево" :)


Джо   (2007-03-22 02:07:00) [2]

> [7] Германн ©   (22.03.07 01:58)
>
> > Джо ©   (21.03.07 23:37) [6]
> >
> > Пардон, не «адрес динамического массива», а адрес самой
>
> > переменной, ибо дин. массивы — неявные указатели. С самого
>
> > голова чумная, туманно изъясняюсь, сорри
>
> С самого чего? Серёг, не пугай так пож-ста! :)

Ну, « усамого», у... :)


MikePetrichenko   (2007-03-22 02:00:00) [3]


> zzz.Read(aaa[0], 500)

А вот так прикольнее

zzz.Read(PChar(aaa)^, 500)


Германн   (2007-03-22 01:58:00) [4]


> Джо ©   (21.03.07 23:37) [6]
>
> Пардон, не «адрес динамического массива», а адрес самой
> переменной, ибо дин. массивы — неявные указатели. С самого
> голова чумная, туманно изъясняюсь, сорри

С самого чего? Серёг, не пугай так пож-ста! :)


Джо   (2007-03-21 23:37:00) [5]

Пардон, не «адрес динамического массива», а адрес самой переменной, ибо дин. массивы — неявные указатели. С самого голова чумная, туманно изъясняюсь, сорри


Anatoly Podgoretsky   (2007-03-21 23:33:00) [6]

> White Barsik  (21.03.2007 23:24:02)  [2]

ааа это указатель на сам массив.


White Barsik   (2007-03-21 23:32:00) [7]

Спасибо. Я все понял. Вроде сколько лет работаю, а иногда элементарные вещи забываю


Джо   (2007-03-21 23:29:00) [8]

> [2] White Barsik   (21.03.07 23:24)
> Разъясните подробно, голова устала и уже кипит - почему
> так?

Потому, что писать в переменную, в которой хранится адрес динамического массива — совсем ни к чему. Запись нужно производить начиная с первого (т.е., 0) элемента этого массива.


White Barsik   (2007-03-21 23:24:00) [9]

Разъясните подробно, голова устала и уже кипит - почему так?


begin...end   (2007-03-21 22:15:00) [10]

zzz.Read(aaa [0], 500)


Наверх

Титульная страница Поиск, карта сайта Написать письмо