Форум: "Потрепаться";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизЭто не про дельфи 2005, а про дельфи 6. Найти похожие ветки
← →
Суслик © (2005-03-09 23:07) [0]Добрый день. Когда я поставил дельфи 2005, то обнаружил, что есть некоторые синтаксические конструкции, которые не компилируются. Например такая
const
a = 10;
var
aa: array [a+1..a+2] of integer;
Ошибка бывает на первом "a" после "[". Сообщение "indent a redeclared".
Перед покупкой дельфи 2005 есно решил его поизучать. Изучаю триал. Там эта ошибка в точности повторяется, как и в "паленой" версии, которую я исследовал раньше.
Естесно возник вопрос: в чем дело? С точки зрения синтаксиса тут все верно. Полез в gramar (есть в штатном хелпе дельфи 6). Т.к. в 2005 его не нашел, то взял из дельфи 6.
И с удивлением обранружил, что такая конструкцияconst
a = 10;
var
aa: array [(a)..(a)] of integer;
в дельфи 6 дает ошибку на "a" ровно с тем же сообщением. При этомconst
a = 10;
var
aa: array [a..(a)] of integer;
компилиться нормально
Понятно в чем дело - несмотря на то, что "(a)" есть корректное константное выражение компилятор путает его с "enumeration type", который также допустим в массиве. Т.е. писатьvar
aa: array [(a)] of integer;
абсолютно корректно.
Поэтому вопрос про дельфи 6: не является ли тот факт, что кодconst
a = 10;
var
aa: array [(a)..(a)] of integer;
не компилиться ошибкой компилятора?
Или я неверно понимаю gramar?
ЗЫ. Вопрос все же косвенно связан с дельфи 2005. Дело в том, что возможно я пойму, что я неверно понимаю gramar как таковой и мои претензии к компилятору дельфи 2005 необоснованны.
ЗЗЫ. Проверялось и на дельфи 6 и на дельфи 6+сп 2
← →
Ломброзо © (2005-03-09 23:38) [1]Насколько я помню, что-то подобное тут приводил MBo и они в четыре челюсти с DiamondShark`ом этот вопрос успешно разжевали. Но прелесть ситуации в том, что для того, чтобы добиться такой ошибки, светлейшие гойловы мастаков пыхтели над попыткой её сэмулировать в течение эдак постов двадцати. Т.е. ошибка из серии "Нарочно не придумаешь". А у Вас - хоп! "Шол-шол и вот случайно нашол".
И причём не в первый раз.
← →
суслик © (2005-03-10 00:02) [2]Я в ms sql сервере 2 ошибки нашел. Вроде наш сервермен их репортовал.
Не программистом мне надо было быть :)
← →
суслик © (2005-03-10 00:03) [3]Думаю, что все дело, что в паскале не совсем контексносвободная грамматика. :(
Я не проводил исследование т.к. не видел полной грамматики (может кто видел? :)) Но такое ощущение у меня есть.
← →
Димон (2005-03-10 10:43) [4]Попробуйте кто-нить в дельфи 6 или 7 такой код
const
a = 10;
var
aa: array [(a)..(a)] of integer;
выдает ошибку компиляции на первом после "[" идентификаторе "а" со с мотивировкой - "identifier receclared"?
← →
_silver © (2005-03-10 10:46) [5]Димон (10.03.05 10:43) [4]
Delphi7 - да.
← →
Димон (2005-03-10 10:47) [6]
> [5] _silver © (10.03.05 10:46)
Т.е. выдает ошибку?
И что ты про это думаешь? Чья ошибка? Я неверно грамматику понимаю? Или как?
← →
Закулиса Мировая (2005-03-10 10:53) [7]Да. Ничего. ДНК. Да. Риторический вопрос.
← →
_silver © (2005-03-10 10:53) [8]Димон (10.03.05 10:47) [6]
Да, выдаёт.
Build
[Error] Unit1.pas(23): Identifier redeclared: "a"
[Error] Unit1.pas(23): "," or ":" expected but ";" found
[Error] Unit1.pas(26): Type expected but "IMPLEMENTATION" found
[Fatal Error] Project1.dpr(5): Could not compile used unit "Unit1.pas"
Думаю delphi понимает (a) как перечислимый тип, а константа a уже объявлена.
Вот это выдаёт ту же ошибку.
const
a = 10;
var
aa : (a,b);
← →
Димон (2005-03-10 10:58) [9]
> [8] _silver © (10.03.05 10:53)
Как я уже говорил, я тоже думаю, что дельфи путает это с перечислимым типом. :(
Вопрос связан с 2005, т.к. там в области задания границ массивов другие глюки: в частности нельзя задавать нижние и верхние границы в виде контантных выражений. Т.е. так array: [a+1..a+22] of integer;
При том, что в каких то случая (в основном когда кода мало) это компилируется. В большом проекте нет. Смотрел и на кривой версии и на триале.
Собтсвенно вопрос риторический - забить на это и покупать 2005, или факт некорректной работы может послужить препятствием для покупки - мало ли еще сколько там глюков :(((
> [7] Закулиса Мировая (10.03.05 10:53)
хотел сказать, но не буду :) потрут еще ...
← →
_silver © (2005-03-10 11:03) [10]Димон (10.03.05 10:58) [9]
Про глюки delphi2005 не раз писали.
Одним больше, одним меньше...
Я бы покупать не стал.
Поставил пиратскую версию, поигрался, снёс.
Буду ждать более стабильной версии.
← →
Закулиса Мировая (2005-03-10 11:06) [11]Я просто действительно хочу узнать... или нет... я хочу, чтобы Вы привели пример кода, где использование массива, индексируемого не с нуля, размеры которого должны высчитываться на этапе компиляции от константы, причём заменить константу обычным числом прямо в коде, я#ляется жизненной необходимостью.
Что Вы сразу ложкой стучите? Я же Вам не предлагаю сбегать за верёвкой с мылом?
← →
Димон (2005-03-10 11:06) [12]
> [10] _silver © (10.03.05 11:03)
и поставил, и поигрался, и снес уже :(((
Общее ощущение сырости присутствует. Сам понимаешь, что такая фигня, о которой я пишу, не особо критична, т.к. всегда можно выпутаться - преписать код иначе.
Но это наводит на мысль, а что если там еще много чего, причем такого, что не вылавливается на этапе компиляции :((
При том, что скомпилированный на 2005 проект в результате недельного тестирования глюков не выявил. Но все равно боязно.
Интересно было бы знать чей-нибудь опыт тестирования проектов, собранных на 2005. Нормально, работают?
← →
Димон (2005-03-10 11:08) [13]
> [11] Закулиса Мировая (10.03.05 11:06)
Ув.
Дело в том, что любой язык, представив свою грамматику, обязан ее выполнять. Все. К конкретным примерам это не имеет никоего отношения.
← →
_silver © (2005-03-10 11:13) [14]Димон (10.03.05 11:06) [12]
Я компилировал 2 проекта на d2005, по 100тыс строк каждый. Оба откомпилировались успешно, но один запустился нормально, второй посыпал AV.
Почему так разбираться не стал, может у меня конечности кривые.
В d7 оба работают хорошо.
← →
Димон (2005-03-10 11:17) [15]
> [14] _silver © (10.03.05 11:13)
попробуй скомпилиться в $R-
Я заметил, что дельфи 2005 более строг к range checking.
У тебя может где-то что-то случилось (например, в конструкторе), а где-то (например, в деструкторе) некорректно обработана ошибка.
← →
Закулиса Мировая (2005-03-10 11:18) [16]
>, обязан ее выполнять. Все. К
^^^^^^^^^^
А вот в русском языке букву "ё" тоже пока никто не отменял. Почему же Вы ею брезгуете?
← →
Димон (2005-03-10 11:20) [17]а у меня такая на клавиатуре разве есть? Где? :)
Ув., вы первые начали неприятоности говорить:) Если вас раздражает мой тон не терпяший возражений, то рядом полно топиков.
Если есть, что по сути - рад услышать :)
← →
_silver © (2005-03-10 11:26) [18]Димон (10.03.05 11:17) [15]
Вполне возможно, но к d2005 я теперь, наверное, не скоро вернусь.
← →
REA (2005-03-10 13:21) [19]В D7 тоже бывает, что глотает не совсем корректные конструкции.
(Например SomeFunction(Arg1,); - у этой функции один аргумент и запятая просто игнорируется). Еще что-то попадалось, но не помню что.
← →
Игорь Шевченко © (2005-03-10 13:43) [20]
> Дело в том, что любой язык, представив свою грамматику,
> обязан ее выполнять
А ты ее читал, грамматику-то ? И в QC, кистате, писал, или только здесь жалобы на Борланд катишь ?
← →
Димон (2005-03-10 13:51) [21]
> [20] Игорь Шевченко © (10.03.05 13:43)
Игорь. Буду крайне благодарен, если ты мне поможешь разобраться с qc. Как там искать заявлена ли ошибка или нет?
Грамматику я не читал, кроме того обрезка, который представлен в хелпе.
Я ты видел ее полностью? Рад был бы посмотреть:)
> [19] REA (10.03.05 13:21)
>Еще что-то попадалось, но не помню что.
Бывает без запятой между параметрами компилиться. 2005, кстати, все эти места радостно нашел.
← →
Игорь Шевченко © (2005-03-10 14:43) [22]Димон (10.03.05 13:51) [21]
Просто опиши свою ситуацию. Искать наверное в категории Compiler, с указанием версии Delphi. Мне сейчас не удобно запускать QC, у меня он из среды запускался, а триал у нее кончился.
← →
vuk © (2005-03-10 15:29) [23]to Игорь Шевченко © (10.03.05 14:43) [22]:
>у меня он из среды запускался, а триал у нее кончился
Клиент QC - отдельная софтина, триал на нее не распространяется. У меня стоит в папке C:\Program Files\Borland\BDS\3.0\QualityCentral\
К тому же можно и через qc.borland.com работать.
← →
имя (2005-03-10 17:34) [24]Удалено модератором
← →
имя (2005-03-10 17:48) [25]Удалено модератором
Примечание: Дальше будет РО
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.053 c