Для того, чтобы кому-то написать или позвонить через WA, нужно в обязательном порядке добавить номер в адресную книгу телефона
Это не так. Ничто не мешает вам в браузере на мобиле открыть URL вида https://api.whatsapp.com/send?phone=123456789 и общаться с 123456789 не добавляя его в адресную книгу. Не особо удобно, но техническая возможность есть.
И ради чего, скажите пожалуйста, терпеть все эти мелкие и крупные неудобства, когда есть телега
сообщили в Ассоциации туроператоров России (АТОР).
Это та ассоциация, члены которой дальше Турции с Египтом не дотягиваются уже года 4 как? С тем же успехом можно было рекомендации ассоциации больных находящихся в коме перепостить.
Стоило указать версию дельфей и параметры компиляции, а то знаете ли:
From RAD Studio Athens (R120), all of the floating-point-related exception masks will be turned ON. The applications will no longer raise Floating Point exceptions on all platforms as default.
Дельфю такие альтернативно одарённые гении развивают, что волосы дыбом.
Результат будет 2.
Такое поведение гарантировано вам спецификацией языка. Присвоение происходит только в случае, когда правая часть выражения вычислена полностью и без ошибок времени исполнения.
О выделении или не выделении памяти это не говорит ровным счётом ничего.
Если бы память под правую часть строке 6 не выделялась, то было 15 — результат сложения до возникновения ошибки при вычислении ln(0). А так получается, что выделена память под новое значение x. Начались расчеты, 5 записали, 10 прибавили, а потом — бах! — исключение.
Вам стоит ознакомиться с тем, во что транслируется конструкции используемого вами языка, какие оптимизации применяются в современных компиляторах, про стек и то, как реализован вызов функций на уровне ассемблера.
Вычисления в вещественных числах на уровне ассемблера не очень читаемы, поэтому заменим код примера на его функциональный аналог:
{$OVERFLOWCHECKS OFF}
program HABR935234;
uses
System.SysUtils,
System.Math,
Vcl.Dialogs;
function RaiseDivByZero(): Integer;
var
Zero: Integer;
begin
Zero := 0;
Result := 1337 div Zero;
end;
procedure Foo();
var
X: Integer;
begin
X := 2;
try
X := 5 + 10 + RaiseDivByZero() + 1;
except
on E: Exception do
ShowMessage(IntToStr(X));
end;
end;
begin
Foo();
end.
Посмотрим, во что скомпилировалось наше выражение (View > Debug Windows > CPU Windows > Entire CPU во время отладки):
Как видите, вызов RaiseDivByZero() в виде call $00c42ab4 происходит до того, как будут вычислены 5 + 10 + (add eax, $0f) и + 1 (inc eax).
Временное значение хранится в регистре eax и записывается в память (mov [ebp-$04], eax) только в самом конце, после всех вычислений.
«Э» вместо «з», «выюбросы», я видел подобного стиля тексты на сферических китайских товарах в вакууме ещё много лет тому назад. Получается, у китайских трудящихся были нейросети задолго до шумихи на западе. )
Если бы я был автором желтушных заголовков, то это было бы «Шок! Пенсионера убило незнание HTTP Response Status Codes».
Странно, на скриншоте я вижу юзверя с ником
tszzl. Сотрудником чего он является из скриншота не ясно.Такая наивная вера во всемогущий ЫЫ.
Бгг.
Что в этом внезапного, если в Китае полтора миллиарда человеков?
Это не так.
Ничто не мешает вам в браузере на мобиле открыть URL вида
https://api.whatsapp.com/send?phone=123456789и общаться с 123456789 не добавляя его в адресную книгу. Не особо удобно, но техническая возможность есть.Разве телега не хочет записную книгу?
Это та ассоциация, члены которой дальше Турции с Египтом не дотягиваются уже года 4 как?
С тем же успехом можно было рекомендации ассоциации больных находящихся в коме перепостить.
Команда «К ноге!»
Это лекция для колхозников. Не мешайте, товарищ дачник!
Будучи вырванным из контекста, это звучит прекрасно:
«Булат» — к нам хрен пробьёшься!
Потом появляется Нео, выходит из Матрицы и уничтожает эту тюрьму народов. Если пассажиры, конечно же, раньше от пролежней не перемрут.
Хаб «Java» вижу, ни единой строчки на жабе не вижу. Оффтоп, однако!
Какой-то неправильный виндовс, в правильном для кириллицы кодировка 1251. 866 это для DOS.
Зато название оправдывает полностью! )
Мне вспоминается ещё минимум один эпизод, когда совместимость сломали.
В какой-то момент в
recordдобавили поддержку свойств. Заодно покорёжили некоторые старые типы,TRectв частности.И работавший раньше код вида
Превратился в тыкву.
Из более нового вот это тоже прекрасно: https://docwiki.embarcadero.com/RADStudio/Athens/en/Floating_Point_Operation_Exception_Masks
Стоило указать версию дельфей и параметры компиляции, а то знаете ли:
Дельфю такие альтернативно одарённые гении развивают, что волосы дыбом.
Такое поведение гарантировано вам спецификацией языка. Присвоение происходит только в случае, когда правая часть выражения вычислена полностью и без ошибок времени исполнения.
О выделении или не выделении памяти это не говорит ровным счётом ничего.
Вам стоит ознакомиться с тем, во что транслируется конструкции используемого вами языка, какие оптимизации применяются в современных компиляторах, про стек и то, как реализован вызов функций на уровне ассемблера.
Вычисления в вещественных числах на уровне ассемблера не очень читаемы, поэтому заменим код примера на его функциональный аналог:
Посмотрим, во что скомпилировалось наше выражение (View > Debug Windows > CPU Windows > Entire CPU во время отладки):
Как видите, вызов
RaiseDivByZero()в видеcall $00c42ab4происходит до того, как будут вычислены5 + 10 +(add eax, $0f) и+ 1(inc eax).Временное значение хранится в регистре
eaxи записывается в память (mov [ebp-$04], eax) только в самом конце, после всех вычислений.Никаких дополнительных выделений памяти.
Я ведь даже отдельно подчеркнул, что не
WideString.«Э» вместо «з», «выюбросы», я видел подобного стиля тексты на сферических китайских товарах в вакууме ещё много лет тому назад. Получается, у китайских трудящихся были нейросети задолго до шумихи на западе. )
Сразу в печь, не читая.
Предлагаете добавить в Delphi на уровне языка ограничение в одно присвоение на переменную? )