![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
D6 не хочет компилировать следущий код:
Alx2 © (2005-08-08 13:05:00)
procedure TForm1.Button1Click(Sender: TObject);
type TIndexSet = set of byte;
var Combines: array of TIndexSet;
procedure Combine(n, p: Integer);
procedure MakeCombine(Start, p: Integer; Res: TIndexSet);
var k: Integer;
begin
if p > 0 then
for k := Start to n do
MakeCombine(k + 1, p - 1, Res + [k])
else
begin
SetLength(Combines, Length(Combines) + 1);
Combines[Length(Combines) - 1] := Res;
end;
end;
begin
MakeCombine(1, p, []);
end;
begin
SetLength(Combines, 0);
Combine(5, 4);
end;
---------
Боже, куда катится это мир! :)
Думкин (2005-08-09 09:05:00) [1]Дельфи 6 мастдай, дельфи 7 форева. :)
Ну глючит Д6. Бывает. Напиши в подводные камни.
Lamer@fools.ua (2005-08-09 08:39:00) [2]Спасает ситуацию замена:
TIndexSet = set of 0 .. 255;
Lamer@fools.ua (2005-08-09 08:33:00) [3]>> Alx2 © (08.08.05 13:05)
>> Alx2 © (08.08.05 13:27) [3]
Подтверждаю. Не хочет.
Delphi 6.240 (Update Pack 2).
timon84 (2005-08-09 00:24:00) [4]Вот только что проверил в Delphi 7 всё нормально компилиться
pasha_golub (2005-08-08 16:11:00) [5]А может у тебя byte где-то переопределен?
Alx2 (2005-08-08 14:29:00) [6]>evvcom © (08.08.05 13:51) [7]
>У меня-то мозги запудрились от такой никчемной вложенности
>процедур.
Я выцепил фрагмент и оформил, чтобы кому-нибудь проверить можно было. А мозговая пудра - это плохо. Сочувствую.
И никчемность, она, знаешь, тоже относительна.
>Хорошо бы такой код подробным комментарием снабдить, чтобы хоть
>какой-то смысл появился
Цель - получить список всех сочетаний из n по p. (Биномиальные коэфициенты). Зачем я его получаю в явном виде - проверить одну идею (неважно какую, просто времянка).
procedure TForm1.Button1Click(Sender: TObject);
type TIndexSet = set of byte;
var Combines: array of TIndexSet;
procedure Combine(n, p: Integer); // генерируем все сочетания из n по p
procedure MakeCombine(Start, p: Integer; Res: TIndexSet); // Внутренняя процедура, в которую вводится параметр Start для внесения упорядоченности в список сочетаний.
var k: Integer;
begin
if p > 0 then
for k := Start to n do
MakeCombine(k + 1, p - 1, Res + [k])
else
begin
SetLength(Combines, Length(Combines) + 1);
Combines[Length(Combines) - 1] := Res;
end;
end;
begin
MakeCombine(1, p, []);
end;
begin
SetLength(Combines, 0);
Combine(5, 4); // Просто для примера - список всех сочетаний из 5 по 4
end;
Только зачем эти комментариитебе нужны? Вопрос ведь в другом - грамматически верный фрагмент не компилируется!
Но он нормально откомпилируется и заработает, если указать
type TIndexSet = set of 0..255;
>Anatoly Podgoretsky © (08.08.05 13:49) [6]
Виноват. Но весь вопрос был в "D6 не хочет компилировать следущий код". Наверное, стоило его задать как "D6 не хочет компилировать следущий, грамматически верный, код"
evvcom (2005-08-08 13:51:00) [7]
> Alx2 © (08.08.05 13:33) [5]
У меня-то мозги запудрились от такой никчемной вложенности процедур. Что уж говорить про компилятор?
Хорошо бы такой код подробным комментарием снабдить, чтобы хоть какой-то смысл появился.
Anatoly Podgoretsky (2005-08-08 13:49:00) [8]Нет, не удастся тебе стрелки перевести на меня. Бросил кусок кода, и вот теперь догадайтесь о чем это я.
Ты не сомневайся, здесь большие мастера по демагогии.
Alx2 (2005-08-08 13:33:00) [9]>Anatoly Podgoretsky © (08.08.05 13:29) [4]
>А три говорит, что запудрил ты мозги компилятору
Разве то, что я написал - неверно с точки зрения грамматики языка?
В D5, например, мозги этим не пудрятся.
PS
Трепологии сами не даете умереть. В [4] - она самая :)
Anatoly Podgoretsky (2005-08-08 13:29:00) [10]Вот до номера 3, была просто трепология, и зря выбросили из потрепаться, там ей место. А три говорит, что запудрил ты мозги компилятору. Довел его до ручки.
Alx2 (2005-08-08 13:27:00) [11]Вдогонку посту [0]:
Результат компиляции в D6: "Internal error L1030"
Alx2 (2005-08-08 13:21:00) [12]>Anatoly Podgoretsky © (08.08.05 13:19) [1]
Вопроса нет. Есть факт глючности компилятора, коим делюсь.
А пост я отсылал в "Потрепаться". Зачем его перенесли сюда - непонятно.
Anatoly Podgoretsky (2005-08-08 13:19:00) [13]Ваша жалоба принята во внимание, а вопрос есть?