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

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

Чтение двоичного файла. [D6]


Raiv ©   (2002-07-10 14:16:00) 

Как прочесть двоичный файл в динамический массив array of Char и использовать j-тый элемент этого массива.


Raiv   (2002-07-10 15:17:00) [1]

БОЛЬШОЕ БОЛЬШОЕ СПАСИБО! Все заработало - только Инет глючит. Провайдера пора на рее повесить.


McSimm   (2002-07-10 15:17:00) [2]

var Buf: array of Char;
F: File of Char;
FSize: Integer;
begin
AssignFile(F, "....");
Reset(F);
try
FSize := FileSize(F);
SetLength(Buf, FSize);
BlockRead(F, Buf[0], FSize)
finally
CloseFile(F)
end


Skier   (2002-07-10 14:50:00) [3]

>Raiv
Приведи, пожалуйста, полностью код чтения из файла.


Eugene Lachinov   (2002-07-10 14:47:00) [4]

BlockRead(FromF, Pointer(Buf)^, FSize, NumRead);


Raiv   (2002-07-10 14:47:00) [5]

Суть дела в том, что если я опишу так:
Buf: array [1..400000]of Char;
то нет никаких проблем:
a:=Buf[10] или наоборот Buf[15]:="C"
а вот если описать
Buf: array of Char;
.....
FSize:=FileSize(FromF);
SetLength(Buf,FSize);
......
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);

то черта лысого из этого массивы что вытащишь.


Raiv   (2002-07-10 14:46:00) [6]

Суть дела в том, что если я опишу так:
Buf: array [1..400000]of Char;
то нет никаких проблем:
a:=Buf[10] или наоборот Buf[15]:="C"
а вот если описать
Buf: array of Char;
.....
FSize:=FileSize(FromF);
SetLength(Buf,FSize);
......
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);

то черта лысого из этого массивы что вытащишь.


Skier   (2002-07-10 14:41:00) [7]

>Raiv


> Как прочитать из Buf[i] какое либо значение?
> Просто Buf[10]:="a" - нельзя.


Не понял ! Говоришь "прочитать", а сам делаешь присваивание...
Логика где ты ? :)


Raiv   (2002-07-10 14:34:00) [8]

Пример части кода
FSize:=FileSize(FromF);
SetLength(Buf,FSize);
.......
BlockRead(FromF, Buf, SizeOf(Buf), NumRead);

Как прочитать из Buf[i] какое либо значение?
Просто Buf[10]:="a" - нельзя.


Skier   (2002-07-10 14:29:00) [9]

>Raiv
А зачем динамический массив, есть же TFileStream ?


Наверх

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