есть такое?
Нет такого в природе, если только через массив
Есть, если правильно понял
Что подразумевается под "через массив"?
Case name of: Вася: ... Петя: ...
case aString of 'red': RedProcedure(); 'green': GreenProcedure(); 'blue': BlueProcedure(); else AnyColor; end; Про это речь?
Да, я вроде так делал Только не aString а sVar
var sVar: string = 'green'; ... case sVar ^1of 'red': ^2RedProcedure(); ^1 (4088) Ordinal or string expression expected ^2 (3055) Constant and CASE types do not match ^2 (4007) Ordinal expression expected ^куда указывает курсор ошибки
https://stackoverflow.com/questions/14515492/using-case-statement-with-string
Ну тут явно пишется, что sVar это не строка. Уверен, что строка? Что-то не складывается. Может какой-то синтаксис не тот? Что стоит? {$mode objfpc}{$H+} или что-то другое?
С case должно тоже работать. У него в чем-то другом причина
разве? там во втором комментарии описывается почему не должно работать
В современных и продвинутых Pascal IDE уже давно работает )
вы правы, у меня был Delphi mode c {$mode objfpc}{$H+} работает а эта деректива на весь файл или можно обернуть только кейс?
😐 честно говоря не задавался таким вопросом. Кажется только на весь файл
Если нужен именно дельфи синтаксис (а зачем?), то можно сделать как выше @eddoceddoc предлагал. Через массив и IndexStr
я так делал, это лучше чем ничего но надо в ручную прописывать комметарии к индексам а если порядок изменился то полностю переписывать комментарии речь о Case IndexStr(..., ...) of 0: //вася 1: //петя 2: //коля 3: //маша если вдруг между 0 и 1 появляется новая запись то ... переписывай
if..then..else ...
директива на модуль, вроде, работает
вдруг только дети рождаются :)
А синтаксис дельфи нужен для чего? Просто если даже Lazarus IDE не используешь, то наверное и в Дельфи не нужно? Или какие причины делать недефолтный для FPC синтаксис?
знаю, знаю, просто ищу еще варианты) из любопытства
да вроде для того чтобы совместимость была с длл или в этом плане все ок будет?
Case StrIndex('SomeName', ['bobby', 'tommy', 'somename']) of 0: ..code.. ;//bobby 1: ..code..;//tommy 2: ..code..;//somename else ShowMessage('error'); end. Такое решение с массивом точно не подойдет?
Совместимость с DLL не от синтаксиса зависит ведь. ИЛи я не понял вопроса
нет, я так и делал до того как написать в чат массив сильно большой становится
Если выбрал дельфи синтаксис из-за DLL это неправильно. Не повлияет
mode в теории генерирует немного разные бинари но не проверял просто сразу включил чтобы наверняка
Обсуждают сегодня