Embarcadero RAD Studio 13.0 Florence Architect Version 37.0.57242.3601 [2025, MULTILANG]

Страницы :   Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Ответить
 

temp128

Стаж: 16 лет 9 месяцев

Сообщений: 509

temp128 · 07-Янв-26 20:21 (7 дней назад, ред. 07-Янв-26 20:51)

olekot писал(а):
88670490Немного про умный компилятор.
проект x64, все по умолчанию, кроме двух флагов линковки rtl и компонентов с динамики -> на статику.
скрытый текст
Код:
switch(здесь_переменная)
{
    case 0xFF:
           здесь_код
        break;
    case 0xFE:
           здесь_код
        break;
    case 0xFD:
           здесь_код
        break;
    defaul:     <- здесь ошибка, не допечатал "t" и не обратил внимания что не покрасилось в ключевое.
           здесь_код
        break;
}
Результат: умный компилятор компилятор вполне разумно определил что "defaul" никому не известная лексема и безошибочно выбросил весь соответствующий кусок не делая вообще никаких предупреждений.
Таким образом в асме осталось только сравнение с 0xFD, 0xFE, 0xFF и default-ный jmp из всего блока.
Здравствуйте !
Ваш код не является ни синтаксически, ни семантически (по смыслу) не верным !
В языках С/С++ каждый оператор может иметь метку, однако никто не насилует Вас, как программиста, передавать на эту метку управление.
Вот поэтому компилятор и не ругается.
Ваш код, с точки зрения компилятора выглядит так:
скрытый текст
Код:
switch(здесь_переменная)
{
    case 0xFF:
        // здесь_код
        break;
    case 0xFE:
        // здесь_код
        break;
    case 0xFD:
        // здесь_код
        break;
        // В ручную созданный цикл do {} while () ;
        defaul:     // Это метка оператора, следующего за ней. Например такого:
            // здесь_код
            if ( условие ) goto defaul;
        break;
}
Иными словами, ваша метка defaul - принадлежит оператору, по уровню иерархии, ниже меток "case 0x...", поэтому компилятор, и не считает, что это неверная метка оператора switch, а Вы, просто не передали на неё управление !
Компилятор g++ ( в Linux ), тоже на это не ругается !
[Профиль]  [ЛС] 

olekot

Стаж: 13 лет 7 месяцев

Сообщений: 59


olekot · 08-Янв-26 03:30 (спустя 7 часов)

temp128 писал(а):
Компилятор g++ ( в Linux ), тоже на это не ругается !
Таки да. Мои смутные воспоминания оказались ошибочными. Напрасный наезд с моей стороны на ембу.
[Профиль]  [ЛС] 

temp128

Стаж: 16 лет 9 месяцев

Сообщений: 509

temp128 · 08-Янв-26 04:20 (спустя 49 мин., ред. 08-Янв-26 13:54)

olekot писал(а):
88676418...Напрасный наезд с моей стороны на ембу.
Да ладно, у них есть более непонятные моменты - вот сам в RAD Studio 12.2 натолкнулся. Причем большинство компиляторов работает классически, только их bcc64x "по новоому" ! По моему это неправильно. Вот я писал, как у них в bcc64x работает.
Да и новинка - нашел глючёк в RAD Studio 12.3. Стал играться с вашим кодом и нашел.
  1. Написал такой код:
    Код:
    #include <iostream>
    int main(int argc, char *argv[])
    {
        std::cout << "argc = " << argc << std::endl;
        for (int I = 0; I < argc; ++I)
            std::cout << "argv[" << I << "] = " << argv[I] << std::endl;
        return 0;
    }
  2. Да и возьми - положи его в каталог "d:\dir with spaces"
И что-же видим ( при запуске из IDE, с одним параметром - 255 ):
  1. Для платформы Win32:
    Код:
    argc = 2
    argv[0] = D:\dir with spaces\.\Win32\Debug\app.exe
    argv[1] = 255
  2. Для платформы Win64:
    Код:
    argc = 4
    argv[0] = D:\dir with spaces\Win64\Debug\app.exe
    argv[1] = with
    argv[2] = spaces\Win64\Debug\app.exe
    argv[3] = 255
  3. Для платформы Win64 (modern):
    Код:
    argc = 4
    argv[0] = D:\dir
    argv[1] = with
    argv[2] = spaces\Win64x\Debug\app.exe
    argv[3] = 255
Хоть стой, хоть падай . Три варианта и все 3 разные !!!
К счастью, в 13 версии, уже поправаили, но опять, как-то криво - в Win32 в пути присутствует точка, а в Win64, Win64x, пути склеили красиво - без точки ( см. параметр argv[0] ) !
Единообразно сделать, для всех платформ, видно не судьба !
[Профиль]  [ЛС] 

jack_nuclear

Стаж: 15 лет 8 месяцев

Сообщений: 4


jack_nuclear · 09-Янв-26 17:42 (спустя 1 день 13 часов, ред. 09-Янв-26 17:42)

В хостс все блокировки есть, дефендер отключен, виртуалка свежая, sdk поставил - не могу никак поставить. Патч не работает. Какие еще будут советы, кроме тех, что в шапке и кейгене? Я уже все перепробовал... С каждой попыткой чистил все, что указано в шапке
[Профиль]  [ЛС] 

asimon_a

Стаж: 13 лет 4 месяца

Сообщений: 6


asimon_a · 10-Янв-26 18:11 (спустя 1 день)

Как у этого ублюдка выключить подстановку своего говна в код?
[Профиль]  [ЛС] 

temp128

Стаж: 16 лет 9 месяцев

Сообщений: 509

temp128 · 10-Янв-26 20:57 (спустя 2 часа 45 мин., ред. 10-Янв-26 20:58)

asimon_a писал(а):
88687863Как у этого ублюдка выключить подстановку своего говна в код?
Откройте Help, и почитайте в нём:
RAD Studio Topics | IDE Reference and Utilities | RAD Studio Menu Commands and Dialogs | Tools Menu | Tools Options | Editor Options | Source Options
Там всё доступным языком написано - Прибегнете к рецепту конька горбунка - "Царь три раза перекрестился, бух в котел и там сварился. Сварился !"
[Профиль]  [ЛС] 

DetSimen

Стаж: 17 лет 10 месяцев

Сообщений: 6

DetSimen · 12-Янв-26 06:58 (спустя 1 день 10 часов, ред. 12-Янв-26 06:58)

jack_nuclear писал(а):
88683076В хостс все блокировки есть, дефендер отключен, виртуалка свежая, sdk поставил - не могу никак поставить. Патч не работает. Какие еще будут советы, кроме тех, что в шапке и кейгене? Я уже все перепробовал... С каждой попыткой чистил все, что указано в шапке
Установщик запусти от имени администратора. Именно сам установщик, а не кейген.
[Профиль]  [ЛС] 

pete10606

Стаж: 14 лет 4 месяца

Сообщений: 7


pete10606 · 12-Янв-26 22:27 (спустя 15 часов)

А С++??)) Этот продукт будет?))
[Профиль]  [ЛС] 

KostyantynKo

Top Bonus 03* 1TB

Стаж: 15 лет 7 месяцев

Сообщений: 1693

KostyantynKo · 13-Янв-26 10:36 (спустя 12 часов)

pete10606 писал(а):
88697687А С++??)) Этот продукт будет?))
C++Builder и Delphi в составе единой IDE.
[Профиль]  [ЛС] 

asimon_a

Стаж: 13 лет 4 месяца

Сообщений: 6


asimon_a · 13-Янв-26 16:43 (спустя 6 часов)

temp128 писал(а):
88688669
asimon_a писал(а):
88687863Как у этого ублюдка выключить подстановку своего говна в код?
Откройте Help, и почитайте в нём:
RAD Studio Topics | IDE Reference and Utilities | RAD Studio Menu Commands and Dialogs | Tools Menu | Tools Options | Editor Options | Source Options
Там всё доступным языком написано - Прибегнете к рецепту конька горбунка - "Царь три раза перекрестился, бух в котел и там сварился. Сварился !"
И крестился, и варился. и даже - о господи - подсказки ии использовал. аж афедрон пылает!!
[Профиль]  [ЛС] 

temp128

Стаж: 16 лет 9 месяцев

Сообщений: 509

temp128 · 13-Янв-26 21:09 (спустя 4 часа, ред. 13-Янв-26 21:16)

asimon_a писал(а):
88700299И крестился, и варился. и даже - о господи - подсказки ии использовал. аж афедрон пылает!!
Не разобрались ?
Вот, гляньте в help'e, здесь:
RAD Studio Topics | Tutorials | Introductory Tutorials | Tour of IDE | Tools | Code Editor | Code Insight Reference
тут даже с картинками.
Вам нужно отключить опцию "Code Template Completion", которая находится тут Tools | Options | Editor | Language | Code Insight .
Меня она тоже достает, т.к. я набираю код быстрее, чем это средство соображает. Да и люблю код по своему писать.
[Профиль]  [ЛС] 

asimon_a

Стаж: 13 лет 4 месяца

Сообщений: 6


asimon_a · 14-Янв-26 14:58 (спустя 17 часов, ред. 14-Янв-26 14:58)

temp128 писал(а):
88701349
asimon_a писал(а):
88700299И крестился, и варился. и даже - о господи - подсказки ии использовал. аж афедрон пылает!!
Не разобрались ?
Вот, гляньте в help'e, здесь:
RAD Studio Topics | Tutorials | Introductory Tutorials | Tour of IDE | Tools | Code Editor | Code Insight Reference
тут даже с картинками.
Вам нужно отключить опцию "Code Template Completion", которая находится тут Tools | Options | Editor | Language | Code Insight .
Меня она тоже достает, т.к. я набираю код быстрее, чем это средство соображает. Да и люблю код по своему писать.
Спасибо за советы. местами помогло. но при вводе #include<.... тут оно вставляет первое по списку. я скобки люблю сразу закрывать, а потом стрелкой вернуть курсор и уже набирать нужное.... еще немножко поковыряюсь и буду плакать
temp128 писал(а):
88701349
asimon_a писал(а):
88700299И крестился, и варился. и даже - о господи - подсказки ии использовал. аж афедрон пылает!!
Не разобрались ?
Вот, гляньте в help'e, здесь:
RAD Studio Topics | Tutorials | Introductory Tutorials | Tour of IDE | Tools | Code Editor | Code Insight Reference
тут даже с картинками.
Вам нужно отключить опцию "Code Template Completion", которая находится тут Tools | Options | Editor | Language | Code Insight .
Меня она тоже достает, т.к. я набираю код быстрее, чем это средство соображает. Да и люблю код по своему писать.
Вы знаете, помогло отключение подсветки синтаксиса. хм, странное решение, однако, какой смысл в этих всех наворотах, если оно не может в подсветку синтаксиса и без исправлений... проще уж тогда Notepad++ и GCC. у меня немного перегорит, попробую как-то начать понемногу включать обратно гладишь на каком-то этапе, может быть получится оставить что-то одно.... спасибо за подсказки и участие
[Профиль]  [ЛС] 

olekot

Стаж: 13 лет 7 месяцев

Сообщений: 59


olekot · 14-Янв-26 16:21 (спустя 1 час 23 мин., ред. 14-Янв-26 16:21)

asimon_a писал(а):
Спасибо за советы. местами помогло. но при вводе #include<.... тут оно вставляет первое по списку. я скобки люблю сразу закрывать, а потом стрелкой вернуть курсор и уже набирать нужное.... еще немножко поковыряюсь и буду плакать
Насколько я понял речь идет подсказках, которые если не появляются автоматически, то их можно вызвать Ctrl+Пробел.
У меня похожая история, только на 11 версии: подсказки отсутствовали, по принудительному вызову вертелось колесико (Ctrl+Пробел) и все.
Мне помог рецепт по отключение всех этих плюшек (снятие галочек), а потом опять все включить (галочки на место). С выходом и входом в студию между действиями..
[Профиль]  [ЛС] 

temp128

Стаж: 16 лет 9 месяцев

Сообщений: 509

temp128 · 14-Янв-26 16:40 (спустя 18 мин., ред. 15-Янв-26 09:22)

asimon_a писал(а):
88703219... но при вводе #include<.... тут оно вставляет первое по списку ...
Про это написано тут ( я уже указывал вам ): RAD Studio Topics | Tutorials | Introductory Tutorials | Tour of IDE | Tools | Code Editor | Code Insight Reference , в разделе Code Completion — Ctrl+Space.
Цитата:
Code Completion is also automatically invoked at some code locations, such as when you type a period "." in Delphi, or a period ".", arrow "->", scope "::" or header "#include <" statement in C++.
Но прикол тут, вот в чем: если запретить Code Completion, то, все равно он вызывается для #include.
Тут можно, только порекомендовать, разработчикам сделать опции, позволяющие более точно указать, когда вызывать Code Completion, а когда нет.
Директиву #include мы реже пишем, чем код вроде:
Код:
struct P {
    int X, Y;
};
P p, *pp = &p;
// Тут Code Completion пригодится
pp->
Так-что гимора здесь меньше, чем пользы, а для #include - проще, после < нажать ESC !
Помните, еще, что Code Insignt существует в 2-х вариантах ( смотри параметр "Code Insight manager" ):
  1. Класстческий ( C/C++ Classic ) - доступен для Win32/Win64/Win64x проектов из 32-битной IDE
  2. На основе LSP ( C/C++ Visual Assist )- доступен для Win64/Win64x проектов из 64-битной IDE
asimon_a писал(а):
88703219... я скобки люблю сразу закрывать, а потом стрелкой вернуть курсор и уже набирать нужное
Я тоже так делаю (сразу закрываю строки, блоки ...), но я знаю, что вызовется Code Completion и если он предлагает не то, то нажимаю ESC. Поэтому он меня не очень парит. Видно сказывается длительный опыт работы со средствами разработки Borland.
А вы на чем писали ? Какие IDE использовали ?
[Профиль]  [ЛС] 
 
Ответить
Loading...
Error