Форум Программирование Вопрос по коду |
|
PokazResult: TListBox; ZnacheniePriznaka: TListBox; Chastota: TListBox; var Form1: TForm1; k,i,a,count:Integer; x,y:Extended; k:=0; a:=0; count:=PokazResult.Items.Count; While k <> count Do Begin i:=1; x:=strtofloat(PokazResult.Items[k]); y:=strtofloat(PokazResult.Items[k+1]); While x=y Do Begin Inc(i); Inc(k); y:=strtofloat(PokazResult.Items[k+1]); End; ZnacheniePriznaka.Items[a]:=floattostr(x); Chastota.Items[a]:=inttostr(i); Inc(a); Inc(k); End; Суть кода: создать таблицу частот из отсортированного списка, который находиться в PokazResult листбоксе. В цикле While пишет ошибку, как эту ошибку ликвидировать? Заранее спасибо! | ||||||
|
конкретно ошибка в строке y:=strtofloat(PokazResult.Items[k+1]); | ||||||
|
Текст ошибки какой? | ||||||
|
может нужно count:=PokazResult.Items.Count-1; | ||||||
|
Ерёмин А.А.: [Warning] Unit2.pas(85): For loop control variable must be simple local variable puporev: нет, ошибка не в этом | ||||||
|
PokazResult: TListBox; ZnacheniePriznaka: TListBox; Chastota: TListBox; var Form1: TForm1; k, i, a, count: Integer; x, y: Extended; // а где "begin"? k:= 0; a:= 0; count:= PokazResult.Items.Count; While k <> count Do // из-за отсутствия "Continue" значение k // может перескочить через "Count" (надо k < Count) Begin i:= 1; x:= strtofloat(PokazResult.Items[k]); y:= strtofloat(PokazResult.Items[k + 1]); While x = y Do Begin Inc(i); Inc(k); // k++ !!! y:= strtofloat(PokazResult.Items[k + 1]); End; ZnacheniePriznaka.Items[a]:= floattostr(x); Chastota.Items[a]:= inttostr(i); Inc(a); Inc(k); // k++ !!! End; // Транслит - ацтой! Пора уже выучить немного english! Ненавижу транслит!!! // Неформатированный код - ацтой! Полез только от нефиг делать. // И не надо писать идентификаторы в нижнем регистре, ибо // StrToFloat читается лучше, чем strtofloat! // А также, имена переменных должны быть информативными! // a, b, c, x, y, й, z - ФТОПКУ! // Да! Комментарии в коде - это наше ВСЁ! Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
|
прошу прощения, было со всеми отступлениями, но при создании темы уравнилось...правильно создавать не научился, на Вашем сайте новичок над переменными и английским задумаюсь, спасибо)) что Вы имели в виду под // k++ !!! ? увеличить k не на один, а на два? | ||||||
|
Цитата (Frolov Dima): на Вашем сайте новичок Бывает. Цитата (Frolov Dima): над переменными и английским задумаюсь, спасибо)) Прогресс очевиден! Цитата (Frolov Dima): что Вы имели в виду под // k++ !!! ? увеличить k не на один, а на два? Нет. Операторы "++" и "--" - увеличение и уменьшение переменной на 1 соответственно в Си-подобных языках. Я думал, это все знают. Этими комментариями я просто хотел показать, что внутри цикла While k <> count Do переменная k за одну итерацию может увеличиться больше чем на 1, и, тем самым, условие k = count может не наступить (перескочить), образуется бесконечный цикл. Я это и написал в комментарии. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
|
Суть ясна. То есть ошибка в строке y:= strtofloat(PokazResult.Items[k + 1]); происходит именно из-за этого? | ||||||
|
Да не знаю я. Указал на то, что резало глаз. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! | ||||||
Перейти в раздел:
© 2004 - 2025, Delphi.int.ru |
Версия форума: 1.10 (19.01.2010) |
Выполнено за 0.02 сек. |