Size: a a a

2020 October 23

RS

Renat Suleymanov in Delphi & Lazarus
Dmitry Lamdan
Ну, например, парсер для компилятора. Когда много токенов разных и вызывается много раз.
Добавлю еще один пример использования case для строк. Потому что как раз сейчас перед глазами:
procedure TTelegramAction.BotCallbackStorage(ASender: TObject;
 ACallback: TCallbackQueryObj);
var
 aCommand: String;
begin
 aCommand:=ExtractWord(2, ACallback.Data, [' ']);
 case aCommand of
   '',
     dt_list:    StorageList(ACallback.Data);
   dt_save:      StorageSave(ACallback.Message.ReplyToMessage, ACallback.Data);
   dt_delete:    StorageDelete(ACallback.Data);
   dt_directory: StorageDirAdd(ACallback.Message.MessageId, ACallback.Data);
   dt_download:  StorageDownload(ACallback.Data);
 end;
end;    
 Обработка коллбека в сообщениях. Все другие способы проверки были бы не так лаконичны
источник

RS

Renat Suleymanov in Delphi & Lazarus
Roman Yankovsky
Всего-лишь синтаксический сахар для goto !
Используешь goto? )
источник

RY

Roman Yankovsky in Delphi & Lazarus
Нет конечно :)
источник

GB

George Bakhtadze in Delphi & Lazarus
Dmitry Lamdan
Ну, например, парсер для компилятора. Когда много токенов разных и вызывается много раз.
не видел в парсерах кейса для строк ни разу, даже там где он поддерживается :)
источник

RS

Renat Suleymanov in Delphi & Lazarus
Roman Yankovsky
Нет конечно :)
Ну я понял
источник

GB

George Bakhtadze in Delphi & Lazarus
Renat Suleymanov
Ну, справедливости ради, стоило бы добавить пункт не считаю первоочередной важности. Я вот не смог выбрать ни одного пункта и тупо не проголосовал
там же есть пункт про D7 :)
источник

RS

Renat Suleymanov in Delphi & Lazarus
George Bakhtadze
там же есть пункт про D7 :)
Я им не пользуюсь "от слова совсем"
источник

RS

Renat Suleymanov in Delphi & Lazarus
Renat Suleymanov
Я им не пользуюсь "от слова совсем"
БЫли попытки заюзать CE, но пока лень и не было острой необходимости
источник

RS

Renat Suleymanov in Delphi & Lazarus
Renat Suleymanov
Добавлю еще один пример использования case для строк. Потому что как раз сейчас перед глазами:
procedure TTelegramAction.BotCallbackStorage(ASender: TObject;
 ACallback: TCallbackQueryObj);
var
 aCommand: String;
begin
 aCommand:=ExtractWord(2, ACallback.Data, [' ']);
 case aCommand of
   '',
     dt_list:    StorageList(ACallback.Data);
   dt_save:      StorageSave(ACallback.Message.ReplyToMessage, ACallback.Data);
   dt_delete:    StorageDelete(ACallback.Data);
   dt_directory: StorageDirAdd(ACallback.Message.MessageId, ACallback.Data);
   dt_download:  StorageDownload(ACallback.Data);
 end;
end;    
 Обработка коллбека в сообщениях. Все другие способы проверки были бы не так лаконичны
А раньше использовал AnsiIndexStr в комплекте с case, но тут убирается лишнее звено без ущерба читаемости
источник

DL

Dmitry Lamdan in Delphi & Lazarus
George Bakhtadze
не видел в парсерах кейса для строк ни разу, даже там где он поддерживается :)
Я как раз о том, что там case для перечислимых типов с переходом по таблице даст выигрыш в скорости
источник

I

Igor in Delphi & Lazarus
Александр В
Как бы я переработал - во первых возвращение из функции множественных значение, во вторых не хватает чето типа default директивы в case of, убрал бы лесенки из try и в принципе все остальное и так гут😄
> default директивы в case of
???
источник

VA

Viktor Akselrod in Delphi & Lazarus
Igor
> default директивы в case of
???
иногда люди не замечают того, что есть уже много лет
источник

АВ

Александр В... in Delphi & Lazarus
else имеешь ввиду?
источник

RS

Renat Suleymanov in Delphi & Lazarus
Александр В
else имеешь ввиду?
Видимо, да. Я кстати тоже не понял зачем default
источник

AK

Alexey Kulakov in Delphi & Lazarus
это он ещё {$Mode ExtendedPascal} не видел...
источник

АВ

Александр В... in Delphi & Lazarus
Renat Suleymanov
Видимо, да. Я кстати тоже не понял зачем default
ну нагляднее чем:
a:
b:
else
bla bla
источник

AK

Alexey Kulakov in Delphi & Lazarus
в extended pascal режиме вместо else вроде как otherwise слово испльзуется
источник

RS

Renat Suleymanov in Delphi & Lazarus
Александр В
ну нагляднее чем:
a:
b:
else
bla bla
Ну это явно перебор. Не нагляднее и явное дублирование функций без улучшения читаемости
источник

AK

Alexey Kulakov in Delphi & Lazarus
в фпц можно прописать {$define default:=else} если, конечно, слово default  нигде не используется :)
источник

RS

Renat Suleymanov in Delphi & Lazarus
Alexey Kulakov
в фпц можно прописать {$define default:=else} если, конечно, слово default  нигде не используется :)
Ну так используется же )
источник