![]() |
Модераторы: Poseidon |
![]() ![]() ![]() |
|
kyky15 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.10.2011 Репутация: нет Всего: нет |
Помогите пожайлуста. Найти в чем ошибка!
Надо создать txt фаил с рекордами(3 строчки) и вывести в меммо. В эдите я ввожу имя оно записывается в txt фаил и на др форме показывается в меммо. При выводе на экран в меммо выводит 3 строчки, первую ту которую занисли а 2 цифры непонятные Это сообщение отредактировал(а) kyky15 - 26.12.2011, 13:02 |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
А какая ошибка-то?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
kyky15 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.10.2011 Репутация: нет Всего: нет |
цифры в первой строчке выводятся...не знаю откуда.
|
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Какие цифры, и вообще зачем ты код удалил?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Какие цифры, и вообще зачем ты код удалил?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
kyky15 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 21.10.2011 Репутация: нет Всего: нет |
procedure records(rop:Integer);
type rec=record name:string; n:Integer; end; var str:string; a,i,j,k:Integer; r:rec; d:array [1..4] of rec; fa:Text; begin Assign(fa,'ðåêîðäû.txt'); Reset(fa); i:=1; while not Eof(fa) do begin readln(fa,str); if str<>'' then begin i:=1; i:=i+1; end; a:=Pos(' ',str); d[i].name:=Copy(str,0,a-1); d[i].n:=StrToInt(Copy(str,a+1,Length(str))); i:=i+1; end; d[i].name:=Form9.edt1.Text; d[i].n:=rop; k:=1; //ñîðòèðîâêà ìàññèâà d[i].n if i=4 then begin for k:=i downto 2 do for j:=1 to k-1 do if d[j].n>d[j+1].n then begin r:=d[j]; d[j]:=d[j+1]; d[j+1]:=r end; Rewrite(fa); repeat writeln(fa,d[k].name,' ',d[k].n); k:=k+1; until k>3; end else begin k:=1; Rewrite(fa); repeat writeln(fa,d[k].name,' ',d[k].n); k:=k+1; until k>i; end; Close(fa); end; Вот он код,дело в том что когда пользователь выйгрывает ему предлагается ввести своё имя для таблицы рекордов. Когда он вводин в фаил записывается это имя и записывается его результат. <ИМЯ> через пробел <ЧИСЛО с РЕЗУЛЬТАТОМ>. В др форме вывожу в меммо. Кода открываем табл рикордов в первой строчке идут тупо какие то цифры 4567345 а потом только 2 оставшиеся строчки те имена которые заносятся и то не отсортированные(просто добаленная новая строчка в конец). |
|||
|
||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Вообще говоря ошибок тьма.
Например if str<>'' then begin i:=1; i:=i+1; end; этот фрагмент сбрасывает нумерацию прочитанных записей в 2 после каждой НЕ пустой строки. Посему даже если у Вас 100 записей вы их все прочитаете во вторую. Нигде нет контроля того, что вы прочитали не более 4 записей, так что за милую душу получите RangeCheckError Сортировка производится только если на выходе из цикла чтения i=4, что возможно только при наличии в кнце файла 2-х пустых строк. Символы строк в Паскале нумеруются с 1, а не с 0. Фрагмент a:=Pos(' ',str); d[i].name:=Copy(str,0,a-1); d[i].n:=StrToInt(Copy(str,a+1,Length(str))); выполняется и для пустых строк. Должны возникать RunTimeError. Если не возникали, то вы читали всего один элемент массива - второй. Следующий фрагмент k:=1; //ñîðòèðîâêà ìàññèâà d[i].n if i=4 then begin for k:=i downto 2 do for j:=1 to k-1 do if d[j].n>d[j+1].n then begin r:=d[j]; d[j]:=d[j+1]; d[j+1]:=r end; Rewrite(fa); repeat writeln(fa,d[k].name,' ',d[k].n); k:=k+1; until k>3; В любой приличной версии Паскаля (PascalABC не предлагать) после цикла по k значение этой переменной считается неопределенным - произвольный мусор. И уж точно не 1. Думаю, что если убрать тот мусор, о котором я уже написал И тот, кторого я, возможно, не заметил, то результаты работы программы станут более предсказуемыми. -------------------- Mirkes |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Центр помощи" | |
|
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |