помогите с чтением из файла.

 

здравствуйте!

помогите пожалуйста:

int grad [] [];
int handle;
   handle=FileOpen("gradatie.txt", FILE_BIN|FILE_READ);
  if(handle>0)
    {
     FileReadArray(handle, grad, 0, 10);
     Print(GetLastError());
     Print("handle=",handle);
     
   
   FileClose(handle);
    }

масив двухмерный. постоянно выдает 4099-конец файла. пример файла который я хочу считать находится в приложении

Файлы:
gradatie.txt  1 kb
 

Файл прочитан?

int grad[2][10];
int handle = FileOpen("gradatie.txt", FILE_BIN|FILE_READ);
if (handle == -1)
 {
  Print(GetLastError());
  Print("handle = ", handle);
 }
else
 {
  FileReadArray(handle, grad, 0, 10);
  FileClose(handle);
 }
 
Прикольно! А у меня при выполнении исходного кода - критическая ошибка терминала...
 
Zhunko:

Файл прочитан?


ошибка исчезла, но данных в масиве так и не появилось. ниже код как я это проверяю:

int grad[2][10];
int handle = FileOpen("gradatie.txt", FILE_BIN|FILE_READ);
if (handle == -1)
 {
  Print(GetLastError());
  Print("error=", GetLastError());
 }
else
 {
  Print("handle=", handle);
  FileReadArray(handle, grad, 0, 10);
  FileClose(handle);
 }
   
   
   for (int i=0;i<=2;i++)
    for (int j=0;j<=10;j++)
     Print("gradatie=  ",gradatie[i][j]);

 при просмотре журнала имею значение handle=1,  а все gradatie= 0. Учитывая что в файле есть данные, это означает, что данные просто напросто не записываются в масив. Может быть у меня терминал глючит?

 

Вам стоит обратить внимание на FILE_BIN.
Файл-то должен быть бинарный- а у вас текстовый. 

 
jartmailru:

Вам стоит обратить внимание на FILE_BIN.
Файл-то должен быть бинарный- а у вас текстовый. 



И как это исправить? в ручную я не знаю, как создать бинарный файл. на что нужно заменить FILE_BIN, чтобы оно без проблем читало текстовый? или может быть перейти на CSV?
 
shibzik:
  или может быть перейти на CSV? 

попробуйте. только вначале посмотрите что МТ подразумевает под форматом CSV.
я думаю, важен будет разделитель (запятая или точка-с-запятой - нужно смотреть конкретику) 

 
int grad[2][10];
int handle = FileOpen("gradatie.csv", FILE_CSV|FILE_READ,';');
if (handle == -1)
 {
  Print(GetLastError());
  Print("error=", GetLastError());
 }
else
 {
  Print("handle=", handle);
  FileReadArray(handle, grad, 0, 10);
  FileClose(handle);
 }
   
   
   for (int i=0;i<=2;i++)
    for (int j=0;j<=10;j++)
     Print("gradatie=  ",gradatie[i][j]);

без изменений.  сделал вот так. файл gradatie.csv прикрелен. 

но в журнале появилась еще и такая запись: attempt to read binary data from a CSV file


 

1) массив вы можете зачитать только из бинарного файла.

2) бинарник вы ручками не создадите, или предварительно создаете в мокле цифровой массив и пишете его в бинарный файл а потом читаете, или хекс редактором .

3) из текстового (.csv) файла вы можете прочитать или последовательно по 1 элементу, передвигая при этом указатель, или всю строку до разделителя.

решение :

1) пишете ручками . или в экселе текстовый файл с разделителями между элементами

2) открываете файл с неправильным разделителем, и читаете файл в строчный массив построчно ( в таком случае строка будет прочитана до конца (перевода каретки) )

3) открываете строчный массив и парсите его поэлементно в бинарный массив.

 

Ребята, расширение это просто часть имени файла! Там может лежать, что угодно.

Расширение нужно только для автоматической ассоциаций файлов.

Пусть shibzik скажет, что там у него.

 

расширение здесь не при чем, чел хочет зачитать текстовый файл в массив одним махом и потом работать с массивом цифровым (десятичным хекс ) ну не знаю, та вот хрен это ему удастся...

Причина обращения: