Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Embarcadero RAD Studio XE5-XE8,10.x(Seattle, Berl

Автор: d3adb33f
Дата сообщения: 03.05.2016 00:57
AlekXL
До этого вопрос неправильно понял, а так того же мнения что и ZloyBrawler.
Автор: AlexCoRu
Дата сообщения: 03.05.2016 15:46
AlekXL
Цитата:
ну вот, уже два мнения. Ждем третье
А Continue без условия и незачем использовать. Используйте Break, если надо.

Код: repeat
if <> then Continue;
...
until <>;
Автор: AlekXL
Дата сообщения: 05.05.2016 15:10
AlexCoRu

Цитата:
А Continue без условия и незачем использовать.

ну понятно.
Вы заметили, что в новых версиях (по кр. мере в берлине) рядом с continue рисуется значок вверх? Эта фича толи касталии , то ли cnwizards, но это меня и запутало.

Вообще студия стала тормозить, и как это преодолеть, не знаю.
Кстати сказать, ни у кого не завалялось сниппета тайм-пула? Скажем за N секунд войти в пул может не боле M сущностей?
Автор: AlexCoRu
Дата сообщения: 05.05.2016 20:46

Цитата:
Вообще студия стала тормозить, и как это преодолеть, не знаю.
У меня как раз наоборот. После этак минут 20 трассировки под отладчиком в Сиэтл, начинала тормозить не только студия, но и винда. С Берлином такого нет, Сиэтл не удалял. В Сиэтл установлена эврикалог, а в Берлин пока нет.
Автор: Zatupitel
Дата сообщения: 06.05.2016 01:44
Мне так тоже показалось, что Берлин чуть быстрее пашет... может кажется, но по ощущениям, быстрее.
Автор: AlekXL
Дата сообщения: 06.05.2016 06:20
проголосуем!
RSP-14794
RSP-14743
RSP-14742
RSP-14571

Всё это баги компилятора(интёрналы), и все они проверены мной на воспроизводимость в dcc32 в Берлине. Не жалейте клика..
Рекомендую нажать на "Vote", а также на "Start wathching this issue", чтобы бракоделы и их начальство видело, что мы не забили.
Автор: AlekXL
Дата сообщения: 06.05.2016 23:45
вот интересно, у вас, ув. Дельфисты, никогда не возникала потребность в тернарном типе? Наподобие:

Код: да, нет, не знаю
Автор: stanzdor
Дата сообщения: 07.05.2016 00:31
что вы там курите?
Автор: Alexzzy
Дата сообщения: 07.05.2016 00:46
Если нужен NULL, так он в варианте есть.
Автор: KDPoid
Дата сообщения: 07.05.2016 08:48
AlekXL,
Если и возникало, наверное, каждый, не особо задумываясь, настучит что-то подобное, исходя из текущего понимания тернарных операций.

Хотите породить нетленку?

Думаю, что вопрос "равен ли null другому null-у?" - это хорошее начало для холивара...

Автор: AlekXL
Дата сообщения: 07.05.2016 09:22
KDPoid

Цитата:
Хотите породить нетленку?
как раз нет. Мне всего-то лишь нужен такой тип для прикладных целей. Вчера он мне понадобился(или — я до него дорос), и тут же я его накропал под конкр. задачу, предварительно почекав гугл на предмет и не найдя нужного.
Я надеялся, что кто-то скажет: "ну и говно, смотри, как там это реализовано", а я молча спизжу оттуда код либо хотя бы идею. Так что, вопрос в силе.

Цитата:
Думаю, что вопрос "равен ли null другому null-у?" - это хорошее начало для холивара

но тернарная логика наверняка уже существует как дисциплина, стоит посмотреть, там должна уже быть и аксиоматика, и кольцо операций.
Я считаю, null=null, а также null<false, если принять, что null — это просто "не знаю".
Alexzzy

Цитата:
Если нужен NULL, так он в варианте есть

в варианте есть всё, и в этом его проблема. Он медленный, жирный, и плюёт на безопасность типов. Нет, вариант — это не вариант.
stanzdor
и не спрашивайте. Впрочем,не я один
Автор: KDPoid
Дата сообщения: 07.05.2016 10:24
AlekXL
Если ваше третье значение - чёткое, то теория, наверное, вот:
http://neerc.ifmo.ru/wiki/index.php?title=%D0%A2%D1%80%D0%BE%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B0

Вместо закона противоречия - закон несовместности состояний, вместо исключённого третьего - исключённое четвёртое, вместо закона Блейка-Порецкого - трёхчленный закон Блейка-Порецкого, и т.д.

Только несколько настораживает
Цитата:
null — это просто "не знаю"

как будто вы считаете, что tsNull это не просто третье состояние истинности, а неопределённое значение истинности.
В нечётких логиках всё немного по другому...
Автор: AlekXL
Дата сообщения: 07.05.2016 12:50
KDPoid


Цитата:
Если ваше третье значение - чёткое, то теория

похоже, что нет. Приведенная вами ссылка описывает умозрительную теорию, к-й я не нахожу применения в своих задачах.
Думается, мне нужен лишь "нечеткий" булевый тип. "Третье состояние истинности" превыше если не моего ума, то моих понятий.
Автор: stanzdor
Дата сообщения: 07.05.2016 13:10
procedure test;
var
b: boolean;
begin
byte(b):= 255; // = "не знаю"
if (b <> true) and (b <> false) then ShowMessage('"Третье состояние истинности" превыше если не моего ума, то моих понятий');
end;
Автор: KDPoid
Дата сообщения: 07.05.2016 19:18
AlekXL
Нечёткая логика, это когда вместо "истина", используются "наверняка истина", "скорее всего истина", "вряд ли истина" "истина на 70%"

Судя по коду, у вас таки чёткая логика, только не два значения, а три. По ссылке вся теория чёткой тернарной логики как раз и расписана.

Цитата:
тернарная логика как дисциплина
, как вы и просили.
Если вдруг захочется сделать Inc или Negative, теорию там можно посмотреть.
Только вот, эта теория уже отличается от вашей реализации.
В теории, для {N, Z, P}, (N and Z) = N
А у вас, (N and Z) = Z

Так что может ну её в сад, эту теорию. Ваш мир отличается от тернарной логики
Автор: AlekXL
Дата сообщения: 07.05.2016 22:09
KDPoid

Цитата:
Нечёткая логика, это когда вместо "истина", используются "наверняка истина", "скорее всего истина", "вряд ли истина" "истина на 70%"

понятно, стохастические расчеты.

Цитата:
А у вас, (N and Z) = Z

да. это баг, я уже своим умом допёр.
Очевидно, отрицание сильнее неопределенности при мультипликации(коньюкции).

Автор: NeoAnomaly
Дата сообщения: 07.05.2016 22:56
Nullable типы в "новых"(xe5+) версиях delphi не запилили из коробки?
Автор: ChSerg
Дата сообщения: 08.05.2016 11:24
NeoAnomaly
С какого перепугу?
Автор: AlekXL
Дата сообщения: 08.05.2016 12:34
NeoAnomaly
нет.
--
возвращаясь к теме конкурентного использования ресурсов, хотелось бы спросить, нет ли в стандартной библиотеке или в другой хорошей аналогов

Код:
function UniqueAcquirePredicate(var source; out Target):boolean;
function UniqueAcquireInterface(var source:IInterface; out Target):boolean;
Автор: AlekXL
Дата сообщения: 10.05.2016 16:10
итак, Delphi Berlin, маленький тестовый проектик, dcc32:

Код:
program unsafePr;

{$APPTYPE CONSOLE}

{$R *.res}

uses
System.SysUtils,System.Classes;
type
[Unsafe]
IMyInt=interface
procedure SayHello();
end;

TMyInt=class(TInterfacedObject,IMyInt)
procedure SayHello();
end;
[result:unsafe]
function getIface(const ptr:Pointer):IMyInt;
begin
result:=IMyInt(ptr);
end;


procedure Test();
var obj:TMyInt;
int:IMyInt;
begin
obj:=TMyInt.Create();
int:= getIface((obj as IMyint) );
int.SayHello();
end;

{ TMyInt }

procedure TMyInt.SayHello;
begin
Writeln('hello');
end;

begin
try
test();
{ TODO -oUser -cConsole Main : Insert code here }
except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
Автор: Enzaim
Дата сообщения: 10.05.2016 18:45
Собсна, а зачем unsafe в unmanaged среде?
Без атрибута [result: unsafe] всё отлично работает.
Автор: kaz_av
Дата сообщения: 10.05.2016 22:27
Enzaim

Цитата:
Собсна, а зачем unsafe в unmanaged среде?

unsafe предполагается для вполне себе managed типов.
Автор: AlekXL
Дата сообщения: 11.05.2016 05:47
Enzaim


Цитата:
Собсна, а зачем unsafe в unmanaged среде?

unsafe - это киллер фича, поскольку может задисаблить счетчик сцылок, и тем самым ускорить работу критических участков кода.
А на мобильных компиляторах unsafe помогает установить совместимость со старым кодом, там где есть нетривиальный лайфтайм менеджмент объекта.
Но, сцуко, зачем же так жестоко при присвоении unsafe-значения к "нормальной" переменной?? Тут даже не варнинг нужен, а полноценный еррор!

Добавлено:

Цитата:
Без атрибута [result: unsafe] всё отлично работает.

а также если локалку [unsafe] атрибутить, да.
Автор: Enzaim
Дата сообщения: 11.05.2016 10:14
AlekXL
Тут я согласен, нужен либо Exception в run-time, либо ошибка на этапе компиляции. Иначе задолбаешься искать сурка, который есть, но ты его не видишь в упор.

Добавлено:
kaz_av

Цитата:
unsafe предполагается для вполне себе managed типов.

Ну, в .нет среде я ещё понимаю: вокруг везде секЪюрити, 100500 проверок и валидаций каждой "управляемой" строки кода... воткнул unsafe и юзай unmanaged код без головной боли, верно?

А в unmanaged среде то какой смысл? string или interface может как-то навредить? В такой среде любой участок кода может вызвать катастрофу ... с weak то всё более-менее ясно при наличии арки, а вот unsafe - увольте, не понимаю.
Автор: kaz_av
Дата сообщения: 11.05.2016 11:03
Enzaim

Цитата:
А в unmanaged среде то какой смысл? string или interface может как-то навредить?

Тут смысл unsafe в отключении механизма подсчёта ссылок. Оно и сейчас возможно, но приходится использовать указатели и приведение типов, а так, вроде как, более цивилизованно.
Автор: Enzaim
Дата сообщения: 11.05.2016 11:25
kaz_av

Цитата:
Тут смысл unsafe в отключении механизма подсчёта ссылок

Сдаётся мне, вы что-то путаете. За это атрибут [weak] отвечает. [unsafe] - это совсем другая опера. Совсем.

[more]понимаю и прощаю [/more]
Автор: kaz_av
Дата сообщения: 11.05.2016 11:49
Enzaim

Цитата:
Сдаётся мне, вы что-то путаете. За это атрибут [weak] отвечает

Не путаю. weak это отключение подсчета ссылок с сохранением связи с объектом, т.е. когда такой объект помрёт, то слабая ссылка превратится в тыкву (обнулится). А вот unsafe это просто отключение подсчёта ссылок, и никто никому ничего не должен.

Ну и до кучи... Слабые ссылки увеличивают нагрузку на ARC, типизированные указатели на методы тоже увеличивают нагрузку на ARC т.к. внутри это теже слабые ссылки.
Автор: AlekXL
Дата сообщения: 11.05.2016 18:09
kaz_av


Цитата:
типизированные указатели на методы тоже увеличивают нагрузку на ARC

это вы про что?

Цитата:
т.к. внутри это теже слабые ссылки.

Нельзя ли пояснить или точную ссылку?
Автор: kaz_av
Дата сообщения: 11.05.2016 18:33
AlekXL

Цитата:
это вы про что?

Про типизированные указатели на методы, типа: TNotifyEvent и прочие procedure of object;


Цитата:
Нельзя ли пояснить или точную ссылку?

Собери некстгеном аналог этого кода и получишь "weak", под классиком получишь "unsafe":

Код:
var

proc : function : string of object;

procedure step1;
var

obj : TObject;

begin

obj := TObject.Create;

proc := obj.ToString;

obj.Free;

end;

procedure step2;
begin

if assigned(TMethod(proc).Data) then
writeln('unsafe')
else
writeln('weak');

end;

begin

step1;
step2;

readln;

end.
Автор: AlekXL
Дата сообщения: 11.05.2016 19:34
kaz_av
Получается, высвобождение токих объектов дорогое, особенное если там целый массив..
Там ведь все с блокировкой глобальной? Stop-the-world?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129

Предыдущая тема: Отмена встречи в Outlook из Excel VBA


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.