Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

I/O error 998   Найти похожие ветки 

 
Чайник ©   (2010-01-27 23:09) [0]

I/O error 998

Как прочитать данные из файла в динамический массив?

Пытаюсь прочитать из файла массив данных:

type  
 TmfTriangle = record
   P1, P2, P3 : Integer;
   S : Extended;
 end;  
TmfArrayTriangles = array of  TmfTriangle;

const
 FILE_NAME = "E:\Программы\Tmp\tmp.dat";
 COUNT_TRI = 16;

var
 ANew : TmfArrayTriangles;

…………………………………………………………..
procedure TForm1.Button2Click(Sender: TObject);
var  SourceFile: file;
      DataSize: Integer;
begin

  DataSize := COUNT_TRI*SizeOf(TmfTriangle);
  try
      AssignFile(SourceFile, FILE_NAME);
      Reset(SourceFile);
      SetLength(ANew, COUNT_TRI);
      FillMemory(ANew, DataSize, 0);
      Seek(SourceFile, 0);
      BlockRead(SourceFile, ANew, DataSize);
  finally
    CloseFile(SourceFile);

  end;


Выдает :  “I/O error 998”
В windows.pas нашел:
{ Invalid access to memory location. }
 ERROR_NOACCESS = 998;

И как мне этого инвалида обойти?


 
Чайник ©   (2010-01-27 23:17) [1]

Пардон:

var  SourceFile: file of byte;


 
Игорь Шевченко ©   (2010-01-27 23:18) [2]


>    BlockRead(SourceFile, ANew, DataSize);


BlockRead(SourceFile, ANew^, DataSize);

?


 
Игорь Шевченко ©   (2010-01-27 23:19) [3]

или
BlockRead(SourceFile, ANew[0], DataSize);


 
Anatoly Podgoretsky ©   (2010-01-27 23:32) [4]

А почему не file of TmfTriangle


 
Чайник ©   (2010-01-27 23:43) [5]


> Anatoly Podgoretsky ©   (27.01.10 23:32) [4]
> А почему не file of TmfTriangle


в файле кроме массива TmfTriangle могут быть и другие данные, других типов, поэтому я и объявил его как байтовый.


> Игорь Шевченко ©   (27.01.10 23:18) [2]
>BlockRead(SourceFile,  ANew^, DataSize);


[Pascal Error] TexPassTypesConst.pas(303): E2017 Pointer type required


> Игорь Шевченко ©   (27.01.10 23:19) [3]
> или BlockRead(SourceFile, ANew[0], DataSize);


А разве при объявлении ANew : TmfArrayTriangles;
ANew - не есть УКАЗАТЕЛЬ на дин.массив?


 
Anatoly Podgoretsky ©   (2010-01-27 23:48) [6]


> в файле кроме массива TmfTriangle могут быть и другие данные,
>  других типов, поэтому я и объявил его как байтовый.

Это не важно, приведена законченая процедура, где данные читаются с нулевым смещением.


 
Чайник ©   (2010-01-27 23:53) [7]


> Это не важно, приведена законченая процедура, где данные
> читаются с нулевым смещением.


ну, это скорее заготовка процедуры, просто я споткнулся на первом же шаге...


> Игорь Шевченко ©   (27.01.10 23:19) [3]
> или BlockRead(SourceFile, ANew[0], DataSize);


Спасибо, заработало!


 
Игорь Шевченко ©   (2010-01-27 23:59) [8]


> А разве при объявлении ANew : TmfArrayTriangles;
> ANew - не есть УКАЗАТЕЛЬ на дин.массив?


Объявление BlockRead посмотри в справке


 
Германн ©   (2010-01-28 01:10) [9]


> А разве при объявлении ANew : TmfArrayTriangles;
> ANew - не есть УКАЗАТЕЛЬ на дин.массив?
>

Есть. Но для функций подобных BlockRead нужен адрес буфера "приема/передачи", а не "указатель на что-то".



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

Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.004 c
15-1262873481
anton773
2010-01-07 17:11
2010.03.28
Пожиратель траффика!!!


2-1264427732
webpauk
2010-01-25 16:55
2010.03.28
Отображение элементов


2-1264744917
oleg1963lora
2010-01-29 09:01
2010.03.28
Возможен ли обработчик в другом модуле?


15-1262714844
Зима
2010-01-05 21:07
2010.03.28
Откуда пошло и для чего указывать авторство?


4-1231749046
kalexi
2009-01-12 11:30
2010.03.28
Какие флаги нужны для создания формы без кнопки на панели задач?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский