![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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)