Главная страница
    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
4-1231686803
Ort
2009-01-11 18:13
2010.03.28
Как выделить все строку в Listview


15-1263224540
GDI+
2010-01-11 18:42
2010.03.28
Ура!!! В Украине ВД изобредли...


2-1264184513
Alexey
2010-01-22 21:21
2010.03.28
ID3 теги и кодировка


15-1262899825
Юрий
2010-01-08 00:30
2010.03.28
С днем рождения ! 8 января 2010 пятница


15-1262467825
Юрий
2010-01-03 00:30
2010.03.28
С днем рождения ! 3 января 2010 воскресенье





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский