![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() При попытке присвоения данных из файла(через FileStream) динамическому массиву, вылетает ошибка. Если массив обычный,то работает все нормально, что сделать что бы и с динамическим было тоже самое?
Текст программы: Код:
var Form1: TForm1; A: Tfilestream; data: array of integer; i: integer; procedure TForm1.Button1Click(Sender: TObject); begin setlength(data,100); if opendialog1.Execute then A:=Tfilestream.Create(opendialog1.FileName, fmOpenRead); A.Read(data,sizeof(data)); for i:=0 to 99 do begin memo1.Lines.Add(inttostr(data[i])); end; end; ![]() |
#2
|
||||
|
||||
![]() Цитата:
Давай зырить, вот смотри: Кусочек из твоего кода Код:
if opendialog1.Execute then A:=Tfilestream.Create(opendialog1.FileName, fmOpenRead); A.Read(data,sizeof(data)); Да и потом, если на то уж пошло, то должно быть чето типа A.ReadBuffer(data[0], Length(data)); Так-то, господин Змий. Олсо, существую спецовые ридеры и врайтеры (TReader, TWriter) для того, чтобы такой говнокод не набирать. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
![]() Вместо:
Код:
A.Read(data,sizeof(data)); Код:
A.Read(data,length(data)); ![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 28.11.2011 в 22:08. |
#4
|
|||
|
|||
![]() Только
Код:
A.Read(data,length(data) * SizeOf(Integer)); |
#5
|
||||
|
||||
![]() Код:
var AFileStream: TFileStream; Data: array of Byte; begin if not OpenDialog1.Execute then Exit; AFileStream:=TFileStream.Create(OpenDialog1.FileName, fmOpenRead); try SetLength(Data, AFileStream.Size); AFileStream.Read(Data[0], Length(Data)); Memo1.Text:=Copy(PChar(@Data[0]), 1, Length(Data)); // это так... finally AFileStream.Free; end; end; Пишу программы за еду. __________________ |
#6
|
|||
|
|||
![]() Спасибо за ответы. Но только не совсем понятно,считывание происходит побайтно как я понял и побайтно записывается в массив (length(data) равено A.size), а как сделать чтобы считалось по 4 байта,то есть как тип integer?
Вот так писал,эту проблему не решает Код:
A.Read(data,length(data) * SizeOf(Integer)); |