Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 192 193 194 195 196 [197] 198 199 200 201   вперед  Ctrl
 Re: Какие новости в мире Delphi ?  [new]
Gluck99
Member

Откуда: Оттуда
Сообщений: 996
rgreat
Глюки еррор инсайта якобы поправили уже в 10.4.
Ну, если декларирован полностью переделанный code insight, то это логично.
11 май 20, 17:21    [22130657]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
rgreat
Member

Откуда:
Сообщений: 5934
X-Cite

+ не работают замыкания на управляемые типы
https://quality.embarcadero.com/browse/RSP-23440
А должны?
Это же отдельный поток.
Переменная сдыхает до того как до ее использования доходит дело.
11 май 20, 17:23    [22130659]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1701
rgreat
X-Cite

+ не работают замыкания на управляемые типы
https://quality.embarcadero.com/browse/RSP-23440
А должны?
Это же отдельный поток.
Переменная сдыхает до того как до ее использования доходит дело.

При замыкании не сдыхает, в этом и суть замыкания...
Для локальных переменных работает, дли инлайновых - нет..

http://docwiki.embarcadero.com/RADStudio/Rio/en/Anonymous_Methods_in_Delphi#Anonymous_Methods_Variable_Binding
11 май 20, 17:41    [22130667]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
Сергей Фролов
Member

Откуда:
Сообщений: 1496
Gluck99
Зачем мне inline variables declaration, если проверка синтаксиса подсвечивает inline код как ошибку (это как надо не уважать пользователей инструмента)? Если вообще подсветка синтаксиса не работает как надо (иногда подчеркивая красным 90% рабочего кода), а не отключаю я её только потому что научился понимать, где она врёт, а где действительно может быть ошибка?

Круто. Я просто не обращаю внимания.

Gluck99
если в инспекторе объектов в текстовых свойствах у длинных значений последние несколько символов не видны - их скрывает скроллбар, и понять что там такое можно только несколько извратившись?

Совершенно с тобой согласен. Решаю это вводом двух-трех букв в конце, а потом их сразу удаляю.
Но вообще да, бесит. Эта фигня началась с появления синей темы в IDE. Вообще, кстати, не понимаю нафига она нужна. Тормозит и глючит. Особенно заметно на Edit'ах, которые в Caption некоторых окон типа встроены.

Gluck99

Если панель ToDo зависает, что делает невозможным использование этой функции?

Я ее уже давно не пользую. Она как-то выборочно "тудушки" ищет в сорцах.

Gluck99

Развиваться нужно, но для чего, если этим нельзя пользоваться из-за чудовищных глюков IDE?

+1

Я тут в соседней темы про баги дженериков в IDE спрашивал. Судя по откликам, эта тема мало кого интересует. Видимо большинство сидят на поддержке легаси со старыми версиями Delphi (я не только про этот форум, я в целом про комьюнити). А некоторым вообще ничего нового не нужно. Это было видно про обсуждение Spring4D (опять же, не только на этом форуме). В результате автор ее забросил два года назад. Хотя идеи там классные.
11 май 20, 17:42    [22130668]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
rgreat
Member

Откуда:
Сообщений: 5934
X-Cite,

Я все понимаю, но тут не обычное замыкание с анонимной процедурой. Тут отдельный поток и процессор из первичной процедуры выйдет раньше чем сработает использование переменной во втором потоке.

Что будет контроллировать удаление переменной, если главный поток это сделать уже не может?

Сообщение было отредактировано: 11 май 20, 17:49
11 май 20, 17:46    [22130671]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
Сергей Фролов
Member

Откуда:
Сообщений: 1496
rgreat
Глюки еррор инсайта якобы поправили уже в 10.4.

Пока не увижу - не поверю. Но, скорее всего, не увижу. Мы приняли решение об уходе с Delphi, ибо задолбало. Среда стоит как крыло от Боинга, а глюков и багов, которые не дают нормально писать код, море. Если бы мы такой продукт своим пользователям отдавали, то давно бы по миру пошли.
11 май 20, 17:48    [22130672]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3666
Сергей Фролов,
имей терпение :) уже на грани выхода, должно попустить, если так критично.
11 май 20, 17:55    [22130678]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 666
Gluck99
если проверка синтаксиса подсвечивает

Проверку "на лету" надо отключать перым делом, сразу после установки, на любых версиях Delphi.
11 май 20, 17:56    [22130680]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1701
rgreat
X-Cite,

Я все понимаю, но тут не обычное замыкание с анонимной процедурой. Тут отдельный поток и процессор из первичной процедуры выйдет раньше чем сработает использование переменной во втором потоке.

Что будет контроллировать удаление переменной, если главный поток это сделать уже не может?

Переменные хранятся в памяти, а не потоках :)
Переменную удалит деструктор класса, реализующего интерфейс, который создан неявно, через который работает замыкание в delphi :)

Еще раз.. Для любых локальных и неуправляемых инлайновых переменных - работает...
Для УПРАВЛЯЕМЫХ ИНЛАЙНОВЫХ - нет...

Вот это - работает, потому что экземпляр класса - неуправляемая переменная

procedure TForm1.Button1Click(Sender: TObject);
begin
  var Temp := TForm1.Create(nil);
  TThread.CreateAnonymousThread(
    procedure
    begin
      TThread.Queue(
        nil,
        procedure
        begin
          Temp.ShowModal();
          Temp.Free();
        end
      );
    end
  ).Start();
end;


Сообщение было отредактировано: 11 май 20, 17:59
11 май 20, 17:59    [22130685]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3666
автор
Проверку "на лету" надо отключать перым делом, сразу после установки, на любых версиях Delphi.
у меня на xe6 работает в целом хорошо. они там видимо какой-то костыль поставили, который фильтрует все лишние сообщения если собралось успешно, то не мешает почти.

Сообщение было отредактировано: 11 май 20, 18:03
11 май 20, 18:04    [22130691]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
rgreat
Member

Откуда:
Сообщений: 5934
А где удаляется управляемая локальная переменная при использовании CreateAnonymousThread?

Сообщение было отредактировано: 11 май 20, 18:05
11 май 20, 18:06    [22130692]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
Сергей Фролов
Member

Откуда:
Сообщений: 1496
makhaon
имей терпение :) уже на грани выхода, должно попустить, если так критично.

Речь не только о глюках IDE, много всего расстраивает.
В том же .NET сериализация/десериализация из JSON в POCO работает из коробки. И это только один из примеров.
11 май 20, 18:17    [22130699]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1701
rgreat
А где удаляется управляемая локальная переменная при использовании CreateAnonymousThread?


+
type
  ITest = interface
    procedure TestShowMessage;
  end;

  TTest = class(TInterfacedObject, ITest)
  public
    destructor Destroy; override;
    procedure TestShowMessage;
  end;

{ TTest }

destructor TTest.Destroy;
begin
  TThread.Queue(
    nil,
    procedure
    begin
      ShowMessage('Destroy');
    end
  );
  inherited;
end;

procedure TTest.TestShowMessage;
begin
  ShowMessage('TestShowMessage');
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
var
  Temp: ITest;
begin
  Temp := TTest.Create();
  TThread.CreateAnonymousThread(
    procedure
    begin
      Sleep(1000);
      TThread.Queue(
        nil,
        procedure
        begin
          Temp.TestShowMessage(); // замыкание
        end
        // А удалится оно, как раз таки когда уничтожится ссылка на этот анонимный метод
        // в class procedure TThread.RemoveQueuedEvents где-то здесь
        // Dispose(SyncProc.SyncRec);
        // Dispose(SyncProc);
      );
    end
  ).Start();
end;


При этом если сделать Temp инлайновой, то уже не будет работать...
var Temp: ITest := TTest.Create(); - вот так не работает и деструктор вызовется раньше, хотя должно быть такое же замыкание
11 май 20, 18:24    [22130701]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
rgreat
Member

Откуда:
Сообщений: 5934
X-Cite,

Я так понимаю чтобы заработало надо у треда после Start сделать WaitFor.
11 май 20, 18:46    [22130718]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1701
rgreat
X-Cite,

Я так понимаю чтобы заработало надо у треда после Start сделать WaitFor.

Чтобы заработало - надо править компилятор :)
11 май 20, 18:47    [22130720]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3666
Сергей Фролов,

ок, в добрый путь
11 май 20, 20:03    [22130763]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
Сергей Фролов
Member

Откуда:
Сообщений: 1496
makhaon
ок, в добрый путь

Земля, прощай
11 май 20, 20:50    [22130774]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14081
https://www.ideasawakened.com/post/newly-discovered-hidden-benefits-of-inline-variables-in-delphi

Newly discovered hidden benefits of inline variables in Delphi
12 май 20, 10:40    [22131002]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 14081
Для логирования ошибок, исключений, думаю, для многих было бы большим плюсом, если бы внутри любой процедуры функции можно было бы узнать прогамно её имя/путь. Как обращение к self экземпляра класса.
типа
 log('ошибка в ' + current_proc);

результат: "ошибка в TForm1.Form1OnCreate"
12 май 20, 11:11    [22131024]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 666
X11
Для логирования ошибок, исключений, думаю, для многих было бы большим плюсом, если бы внутри любой процедуры функции можно было бы узнать прогамно её имя/путь...

И?
12 май 20, 11:19    [22131033]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61873
Блог
X11
Для логирования ошибок, исключений, думаю, для многих было бы большим плюсом, если бы

Это напоминает любимую в книгах по Яве обработку ошибок методом e.printStackTrace().

Лет тридцать назад это было бы неплохо. Сейчас это почти бесполезная фича, которая может приобрести некоторый смысл разве что в generic-ах, ну и приобретёт в других случаях, когда методы не написаны в программном коде, а генерируются в ходе компиляции (аспекты итп). Для "кода без реакции на ошибки" это ни фига не поможет и уже существующие методы разматывания stack trace-а принципиально мощнее и удобнее. Что же до кода с реакцией на ошибки.... лет пятнадцать-двадцать назад я сделал пару простых подпрограмм и начал писать код примерно в следующей манере:

procedure OpenFile(const AFileName: string);
begin
  try
    .....
  except
    on E: Exception do
      raise AddExceptionHeaderFooter(E, 'Ошибка при открытии файла', 'Имя файла: %s', [AFileName]);
  end;
end;


В итоге получаются отличные, подробные сообщения об ошибках - по сути, call stack вместе с ключевыми параметрами, которым приведённый Вами log() в подмётки не годится.

Сообщение было отредактировано: 12 май 20, 11:21
12 май 20, 11:23    [22131038]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
makhaon
Member

Откуда: A galaxy far far away
Сообщений: 3666
X11, softwarer,
по сравнению с Эврикалогом всё это наколеночные поделки, конечно.
12 май 20, 16:08    [22131328]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
ВсеРазумный
Member

Откуда:
Сообщений: 285
X11,

Ну в сях давно "__FILE__, __LINE__, __FUNCTION__" есть это всё. А вот в Delphi ты можешь только пальчик сосать
12 май 20, 16:33    [22131358]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
rgreat
Member

Откуда:
Сообщений: 5934
ВсеРазумный,

MadExcept, EurekaLog, JclDebug - не, не слышал.
Не говоря уже о RtlCaptureStackBackTrace.
12 май 20, 17:19    [22131403]     Ответить | Цитировать Сообщить модератору
 Re: Какие новости в мире Delphi ?  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 61873
Блог
makhaon
по сравнению с Эврикалогом всё это наколеночные поделки, конечно.

Про Эврику я упомянул в разматывании стека. Там, где речь идёт о своём коде, особенно достаточно сложном и ответственном, вышеприведённая "наколеночная поделка" Эврику превосходит. Та, конечно, принципиально лучше для отлова проблем там, где писать свои обработчики не можешь или не хочешь. Например, когда глючит что-нибудь в девэкспрессе, Эврика просто спасает.
12 май 20, 17:22    [22131407]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 192 193 194 195 196 [197] 198 199 200 201   вперед  Ctrl
Все форумы / Delphi Ответить