| 
| 
 | Вопрос # 6 494/ вопрос закрыт / | 
 |  Здравствуйте!Помогите, пожалуйста, разобраться.
 Работа с типизированным файлом.
 
 РЕЗУЛЬТАТ
 
 i=4    V=0 X=0 Y=487 Z=0
 i=5    V=0 X=487 Y=0 Z=96
 i=6    V=487 X=0 Y=96 Z=58
 i=7    V=0 X=96 Y=58 Z=487
 i=8    V=96 X=58 Y=487 Z=0
 i=9    V=58 X=487 Y=0 Z=96
 i=10    V=487 X=0 Y=96 Z=58
 i=11    V=0 X=96 Y=58 Z=101
 
 А куда пропали первые записи?
 Приложение:Переключить в обычный режим  var    Ff31 : file of longint;     i : integer;    x,y,z,v, n : longint; begin AssignFile(Ff31,FileName); Reset(Ff31); n:=FileSize(Ff31);i:=0;Repeat  SeeK(Ff31,i);  Read(Ff31,v,x,y,z);Case i of0,1,2,3:  Memo1.Lines.Append('i='+IntToStr(FilePos(Ff31))+               '    V='+IntToStr(V)+               ' X='+IntToStr(x)+               ' Y='+IntToStr(y)+               ' Z='+InttOStr(z)) else Memo1.Lines.Append('i='+IntToStr(FilePos(Ff31))+               '    V='+IntToStr(V)+               ' X='+IntToStr(x)+               ' Y='+IntToStr(y)+               ' Z='+InttOStr(z));end;end; i:=i+1;Until i=8; CloseFile(Ff31); 
|  |   Вопрос задал: Михаил Григорьевич (статус: Посетитель)Вопрос отправлен: 13 ноября 2013, 14:55
 Состояние вопроса: закрыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 5; последнее сообщение — 13 ноября 2013, 17:08; участников в обсуждении: 2. 
|   | min@y™ (статус: Доктор наук), 13 ноября 2013, 15:10 [#1]:Ну дык всё правильно, никуда ничего не пропало. Всё на месте, все 8 считываний из файла: 
 i:=i+1;
Until i=8;А начинается с 4, т.к. у тебя выдаётся не вывод значения i, а FilePos() файла после чтения: 
 'i='+IntToStr(FilePos(Ff31))...Причём, благодаря Seek() позиция считывания в каждой итерации устанавливается не туда, куда надо. Убери. Хорош тупить. Вообще, какая цель этого куска программы?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | min@y™ (статус: Доктор наук), 13 ноября 2013, 15:16 [#2]:   Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Михаил Григорьевич (статус: Посетитель), 13 ноября 2013, 15:55 [#3]:выведено все 8, но не с 0 позиции, а с 4. Если выводить весь файл (until i=n-1), то Seek выходит за пределы файла, т.е. именно 4-х строк нет.
 А, что Seek(F,i) и FilePos(F) не соответствуют друг другу?
 |  
|   | min@y™ (статус: Доктор наук), 13 ноября 2013, 16:48 [#4]:Слышь, Григорич, мож хватит? Просто скажи, что тебе надо сделать с этим несчастным файлом, и дай файл. А вообще, для таких вещей есть дебаггер, если чо. В нём можно посмотреть значения переменных. Я ж тебе даже картинку нарисовал, которая показывает, как и что происходит, ёмаё.
 
 Цитата (Михаил Григорьевич): то Seek выходит за пределы файла Я ж тебе сказал:
 
 Цитата (min@y™): устанавливается не туда, куда надо. Убери. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Михаил Григорьевич (статус: Посетитель), 13 ноября 2013, 17:08 [#5]:Благодарю всех за внимание. Вопрос снят.
 |  13 ноября 2013, 17:09: Вопрос закрыт (решение принял автор вопроса — Михаил Григорьевич): Вопрос решен Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |