Read handshake record ошибка

 
pkm
 
(2006-10-18 15:27)
[0]

Доброе время суток. Мне програ выдает такую ошибку при чтении информации из файла в переменную: Read beyond end of file. Спасибо за внимание.


 
Сергей М. ©
 
(2006-10-18 15:29)
[1]


> Read beyond end of file

Попытка прочитать данные за пределами файла.


 
Elen ©
 
(2006-10-18 15:30)
[2]


> pkm

Read beyond end of file — Чтение после конца файла. Хотелось бы код увидеть


 
pkm
 
(2006-10-18 16:06)
[3]

Код я могу только завтра показать. а на словах если то я из типизированного файла хочу прочитать текущую запись.
read(tip_file,str1,str2,arr)
где:
str1,str2:string;
arr: array [1..20,1..255] of char;
Вот.


 
Сергей М. ©
 
(2006-10-18 16:07)
[4]


> pkm   (18.10.06 16:06) [3]

Вот завтра и приходи) .. С кодом)


 
Elen ©
 
(2006-10-18 16:11)
[5]


> pkm

Возможно ты не используеш Eof для определения конца файла.
а вот для этого str1,str2:string; стоило-б границы задать типа string[100], например. И вообще какого типа файл, ато по read(tip_file,str1,str2,arr) смутно тип представляется


 
palva ©
 
(2006-10-18 16:15)
[6]

> я из типизированного файла хочу прочитать текущую запись
Читать можно только в переменные того типа, который фигурирует в типе файла. А у вас переменные разных типов, да еще и строки. Как можно из файла прочитать длинную строку? Что вы имели ввиду?


 
Плохиш ©
 
(2006-10-18 16:20)
[7]


> pkm   (18.10.06 16:06) [3]
> Код я могу только завтра показать. а на словах если то я
> из типизированного файла хочу прочитать текущую запись.

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


 
Barloggg
 
(2006-10-18 16:44)
[8]

да, сложность в том как именно строка записана.

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

почему-то мне поточная структура кажется привлекательней… не знаю почему. но уже несколько лет только так и храню все в файлах…


 
pkm
 
(2006-10-18 17:34)
[9]

Книгу я открыл, но там только на пол странички и не одного примера. Вот теперь и тыкаюсь.


 
Shirson ©
 
(2006-10-18 18:39)
[10]

Полностью согласен с Barloggg по поводу потоков.


 
pkm
 
(2006-10-19 07:27)
[11]

Всем привет.
Вот кодик принес на рассмотрение.

type
DB_qwest = packed record
var1: string[255];
var2: string[255];
var3: string[255];
ans:  string[1];
st: array [1..20,1..73] of char;
end;

var
 glav: Tglav;
 qwest: file of db_qwest;
 result,dbopen: boolean;
 qwestcount:word;
 fname: string;
 rec: db_qwest;  

//добавляю новую запись
 Seek(qwest,  qwestcount);
 rec.var1:=edit_a.Text;
 rec.var2:=edit_b.Text;
 rec.var3:=edit_v.Text;
 rec.ans:=Edit_ot.text;
 //из мемо переносим в массив
 for I := 0 to m_q.Lines.Count do
   begin
   st1:=m_q.Lines.Strings[i];
   for j := 1 to length(m_q.Lines.Strings[i]) do
    rec.st[i+1,j]:=st1[j];
   end;
 Write(qwest, Rec);             //добавляю запись
 qwestCount := FileSize(qwest);     // новое кол. записей
 Seek(qwest,qwestCount);
//до этого момента работает все отлично

// затем то, что я внес хочу отобразить на экране
 read(qwest,rec); // вот на этой строчке он мне выдает ошибку
 edit_a.Text:=rec.var1;
 edit_b.Text:=rec.var2;
 edit_V.Text:=rec.var3;


> Полностью согласен с Barloggg по поводу потоков.

А может кто даст сылку на потоки?

спасибо за внимание.


 
palva ©
 
(2006-10-19 07:34)
[12]

Перед тем, как читать, надо сделать seek на начало или на ту запись, которая должна быть прочитана.


 
MBo ©
 
(2006-10-19 07:43)
[13]

http://www.delphikingdom.ru/lyceum/seminar.asp?ID=2


 
pkm
 
(2006-10-19 07:47)
[14]


> Перед тем, как читать, надо сделать seek на начало или на
> ту запись, которая должна быть прочитана.

У меня есть этот пункт.

> Seek(qwest,qwestCount);
> //до этого момента работает все отлично
> …

просто вместо кода где я
button.visible:=false // и так несколько раз
я поставил

Вот.


 
ЮЮ ©
 
(2006-10-19 08:02)
[15]


> for I := 0 to m_q.Lines.Count — 1 do


> Seek(qwest,qwestCount — 1);


 
Elen ©
 
(2006-10-19 08:22)
[16]


pkm *
>  qwestCount := FileSize(qwest);     // новое кол. записей
>  Seek(qwest,qwestCount);

Если не ошибаюсь это получается переход в конец файла. Попробуй seek(qwest,1)- это поставит тебя в начало;


 
pkm
 
(2006-10-19 08:37)
[17]


> Если не ошибаюсь это получается переход в конец файла. Попробуй
> seek(qwest,1)- это поставит тебя в начало;

Я добавляю запись в конец файла и сразу хочу встать на эту запись.


> for I := 0 to m_q.Lines.Count — 1 do
>
>
> > Seek(qwest,qwestCount — 1);

после такого изменения у меня перестала выскакивать ошибка. Большущее спасибо.
Только у меня возникла другая проблема. Я не могу из массива перекинуть данные в мемо. Говорит, что я читаю адресс «00000000»

а код вот:
for I := 1 to 20 do
 begin
  for j := 1 to 73 do
   st1[j]:=rec.st[i,j];
  m_q.Lines.Add(trim(st1));
  st1:=»»;
 end;


 
Ketmar ©
 
(2006-10-19 08:41)
[18]

что и логично. AnsiString, F1.


 
pkm
 
(2006-10-19 08:42)
[19]


> что и логично. AnsiString, F1.

Переведи пожалуйста.


 
Elen ©
 
(2006-10-19 08:43)
[20]


> pkm st1[j]:=rec.st[i,j];

Может лучше будет st1:=st1+rec.st[i,j];


 
Ketmar ©
 
(2006-10-19 08:44)
[21]

>[19] pkm 19-Oct-2006, 08:42
>Переведи пожалуйста.
что неясно? где AnsiString набирать? в IDE. где F1 находится? слева и сверху, на клаве. плучишь раздел справки об анси-строках. читай. там всё написано.


 
ЮЮ ©
 
(2006-10-19 08:47)
[22]

SetLength(st1, 73);
for j := 1 to 73 do
 st1[j]:=rec.st[i,j];


 
pkm
 
(2006-10-19 08:49)
[23]


> Может лучше будет st1:=st1+rec.st[i,j];

Работает. Благодарю всех за помощь.
Правда, чует мое сердце, что я еще вернусь на форум.


Подскажите пожалуйста что значит ошибка "read beyond end of file" и как ее исправить? — вопрос №2397267

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

I’m trying to read some data from a file, and the endfile record detection is important to stop reading. However, depending of the array dimensions of the array used to read data, I cannot detect properly the endfile record and my Fortran program stops.

The program is below:

!integer, dimension(3) :: x                      ! line 1.1
!integer, dimension(3,10) :: x                   ! line 1.2
integer, dimension(10,3) ::                      ! line 1.3
integer :: status,i=1
character(len=100) :: error

open( 30, file='data.dat', status='old' )
do
  print *,i
  !read( 30, *, iostat=status, iomsg=error ) x          ! line 2.1
  !read( 30, *, iostat=status, iomsg=error ) x(:,i)     ! line 2.2
  read( 30, *, iostat=status, iomsg=error ) x(i,:)      ! line 2.3

  if ( status < 0 ) then        print *,'EOF'
    print *,'total of ',i-1,' lines read.'
    exit
  else if ( status > 0 ) then
    print *,'error cod: ',status
    print *,'error message: ', error
    stop
  else if ( status == 0 ) then
    print *,'reading ok.'
    i = i + 1
  end if
end do

With ‘data.dat’ file been:

10 20 30
30 40 50

When lines 1.3 and 2.3 are uncommented the mentioned error appears:

error cod: 5008

error message: Read past ENDFILE record

However, using lines 1.1 and 2.1, or 1.2 and 2.2, the program works, detecting endfile record.

So, I would like some help on understanding why I cannot use lines 1.3 and 2.3 to read properly this file, since I’m giving the correct number of array elements for read command.

I’m using gfortran compiler, version 6.3.0.

EDIT: simpler example

the following produces a 5008 «Read past ENDFILE record» error:

implicit none
integer x(2,2),s
open(20,file='noexist')
read(20,*,iostat=s)x
write(*,*)s
end

if we make x a scalar or a one-d array ( any size ) we get the expected -1 EOF flag. It doesn’t matter if the file actually doesn’t exist or is empty. If the file contains some, but not enough, data its hard to make sense of which return value you might get.

Shifty41s_beerhatsmilie2.gif so im kinda figuring this out by myself but i am posting it here just in case someone runs into the same problem as i had…come to find monocle.gif out my gta.img file said 0bytes i think this happend when it was trying to rebuild the archive the first time and it just stopped responding on me. I replaced the gta.img 0bytes file with the full backup ver2 one.<wtf? got the no cd crack installed and it works with still a few skin mods installed…NOW…im about to try again to downgrade the game (which would give all my mods back…maybe errors too) but its worth it if i can get the damn thing working again. yawn.gif

OK does your PC can even handle GTA SA properly?

if so…

First of all:

If the program crashed while rebuilding the file then the file is corrupted.(No longer works)

Second of all:

When you downgrade GTA SA to V1 you only downgrade the exe the other files won’t change EVER just the exe which is V2 and doesn’t allow you to mod.

Solution:

-Reinstall the game

-Use the V1 ENGLISH crack from the amazing crack site (I can’t tell you the name sorry) which is the one that works with CLEO.

-Install your mods with Spark for GTA SA (no need for rebuilding) and if the skins show up white or something then rebuild with IMG Tool.

    msm.ru

    Нравится ресурс?

    Помоги проекту!

    Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.


    Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
    1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
    2. Как «свернуть» программу в трей.
    3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
    4. Как прочитать список файлов, поддиректорий в директории?
    5. Как запустить программу/файл?
    … (продолжение следует) …


    Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
    Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


    Внимание
    Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
    Повторная попытка — 60 дней. Последующие попытки бан.
    Мат в разделе — бан на три месяца…

    >
    ошибка чтения файла

    • Подписаться на тему
    • Сообщить другу
    • Скачать/распечатать тему



    Сообщ.
    #1

    ,

      Надо прочитать bin файл с действительными числами. Пишу:

      procedure TForm1.Button1Click(Sender: TObject);
      var
      f: file;
      c: real;

      begin

      Assignfile(f,’file.bin’);
      reset(f);
      while not eof(f) do
      begin
      blockread(f,c,sizeof(c));
      end;
      CloseFile(f);

      end;

      выдается: project1.exe raised exception class EinOutError with message ‘read beyond end of file’. Process stopped.

      Что не так?


      leo



      Сообщ.
      #2

      ,

        reset(f,1);

        Добавлено
        PS: Если не указывать RecSize, то по умолчанию берется 128 байт и при каждом blockread будет читаться не sizeof©, а sizeof©*128 байт

        Сообщение отредактировано: leo


        Umnik1



        Сообщ.
        #3

        ,

          о, вроде заработала))
          я думал сначала писать reset(f,4) но тоже ошибка была. почему 1?

          Сообщение отредактировано: Umnik1


          leo



          Сообщ.
          #4

          ,

            Цитата Umnik1 @

            почему 1?

            Вроде уже объяснил — в blockread\write в общем случае передается не размер в байтах, а Count — число «единиц»=»записей» размером RecSize. При RecSize=1 мы работаем с байтами и размер задаем в байтах. Для чтения последовательности real можно также использовать reset(f,sizeof(real)) + blockread(f,c,1), т.е. читать по одной записи размером sizeof(real)


            RuSA



            Сообщ.
            #5

            ,

              Еще есть такой вариант:

              ExpandedWrap disabled

                procedure TForm1.Button1Click(Sender: TObject);

                var

                   f: file of real;

                   c: real;

                begin

                   Assignfile(f,’file.bin’);

                   reset(f);

                   try // finally

                      while not eof(f) do

                      begin

                         read(f,c);    // (!) очень близко к смыслу :)

                      end; // while

                   finally

                      CloseFile(f);

                   end; // finally

                end;

              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

              0 пользователей:

              • Предыдущая тема
              • Delphi: Общие вопросы
              • Следующая тема

              Рейтинг@Mail.ru

              [ Script execution time: 0,0219 ]   [ 16 queries used ]   [ Generated: 21.09.23, 17:02 GMT ]  

              Понравилась статья? Поделить с друзьями:
            • Realtek audio control microsoft store ошибка
            • Read asic reg error ошибка
            • Reaction электросамокат ошибка е5
            • Realrtcw ошибка при запуске
            • React обработка ошибок axios