powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Улучшение оператора with: голосование и обсуждения
25 сообщений из 100, страница 4 из 4
Улучшение оператора with: голосование и обсуждения
    #39989843
rgreat,

Вы такие сказочники, ей богу. Вам with вообще не нужен, потому что вы хотите взять переменную на объект в with

А with нужен для быстрого заполнения структур или объектов. Без ссылки для всех свойств \ функций и прочего.


Если вы не готовы поддерживать прошлые версии Delphi Или будущие. То зачем вам вообще with модернизировать? В старых проектов он не будет работать. А в новых вы его юзать по всем тем же проблемам не будете.



ВЫ Как дети из детсада - хочу, сделайте. Но я не буду с этим играть.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989845
Я кстати ничего не имею против, что бы with поддерживал такое

Код: pascal
1.
with var x = Object do



Это правильная архитектура. Никаких алисов и прочего. Мы берём, и присваиваем к переменной объект.


Именно и надо добиться того что бы в будущем, все условия могли быть новыми переменными. Как это сделано в других языках

Код: plaintext
1.
2.
auto x;
if (x = (object == ...))



НО Опять же есть те, кто считают что это языку не нужно например с СИ и СИ++
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989849
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Сказочники.
А теперь тот же код в D7
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989851
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Я кстати ничего не имею против, что бы with поддерживал такое

Код: pascal
1.
with var x = Object do



Это правильная архитектура. Никаких алисов и прочего. Мы берём, и присваиваем к переменной объект.


В случае объектов это будет работать, в случае записей - нет. Для записей нужны алиасы.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989852
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
ВсеРазумный
Сказочники.
А теперь тот же код в D7

Тссс... не спугни!
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989853
_Vasilisk_,

Вашей Delphi 7 уже 18 лет. Уже совершенно летняя, что бы перестать её опекать.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989854
DmSer

В случае объектов это будет работать, в случае записей - нет. Для записей нужны алиасы.


Будет и для записи работать! Потому что это присвоение обычной переменной на запись. Которое аналогично и вне with
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989855
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
А with нужен для быстрого заполнения структур или объектов. Без ссылки для всех свойств \ функций и прочего.
А слабо нормальный конструктор написать?

А вообще я не против адекватного with, если таковой будет.
Я против использования существующего.

Но я пока красивых предложенных вариантов не видел.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989856
rgreat,

В том - то и прелесть, что мы можем обращаться к любым свойствам и не только, и включая процедуры с функциями и константами.


Никакой конструктор не даст такой функциональности. Будет как бабка Зинка выглядеть в 100 лет.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989860
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Никакой конструктор не даст такой функциональности.
Такой потенциально опасной и глючной - да, никакой.

Вообще у свойств к которым обращается владельца надо указывать явно.

Собственно по хорошему даже к глобальным переменным надо обращатся указывая их юнит.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989863
rgreat,

Опасный и глючный в руках у незнайки.


Так же как ядерная физика, глючная и не предсказуемая. Вот - вот, весь мир взлетит на воздух.


А вы тут, боитесь положить мороженное в стаканчик. Что бы из стаканчик скушать, не беря его в руки.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989864
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
DmSer

В случае объектов это будет работать, в случае записей - нет. Для записей нужны алиасы.


Будет и для записи работать! Потому что это присвоение обычной переменной на запись. Которое аналогично и вне with


Разница в том, что для объектов присваивается ссылка, а для записей - вся структура.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989866
DmSer,

Так и есть. Но я что - то сейчас задумался, что и вправду вся структура будет скопирована. Но ведь функционал годный, с добавлением @Struct
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989870
Для объектов
Код: pascal
1.
with var x = Object do




Скопировать структуру
Код: pascal
1.
with var x = Struct do



Взять Pointer на структуру PX^.
Код: pascal
1.
with var x = @Struct do
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989871
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
rgreat,

Опасный и глючный в руках у незнайки.

Опасный в любых руках при рефакторинге свойств класса/рекорда.

В компоненте который ты использовал, поменяли свойство которое ты через with использовал и все - ты в жопе.

Никакой ошибки не будет а ПО будет глючить.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989872
rgreat,

Вы даже не готовы мониторить изменения, которое происходит с тем чем вы работаете. От версии к версии, если оно меняется. Добавляя разные вариации вызовов в одно место.

То есть это говорит о вашем профессионализме. Когда вы скачали новую Delphi, написали код. Потом решили её закинуть на D7 и потом перекинуть на ещё более новую версию.

Создав допустим 3 случая разного взаимодействия.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989873
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный,

Я лучше не буду раскладывать себе грабли без которых можно обойтись.

А ты можешь вручную проверять весь свой и чужой код каждый раз когда где-то что-то обновится. Я не против.

Особенно мне тебя жалко если ты каждый раз вручную сверяешь сорцы дельфи при переходе на новую версию.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989876
rgreat,

Ну правильно. Только with тут причём? Его как задумывали, так он и работает. Он сам должен подставлять ссылку на объект указанного в with в свойства - верхнего уровня, которые принадлежат объекту установленного в with


А дальше уже глобальные переменные, и переменные класса с их функциями и прочим.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989878
rgreat
Особенно мне тебя жалко если ты каждый раз вручную сверяешь сорцы дельфи при переходе на новую версию.


Да, очень жаль человека, который умеет пользоваться инструментами и документациями. Которые сразу способны показать различие кода с помощью diff А это процедуры - свойства и так далее. Наличие \ Отсутствие \ Добавленные


В добавок сам Delphi везде использует with

Код: pascal
1.
2.
    with Location do
      DrawCheck(Canvas, Point(FrameRect.Left + 5, Self.Height div 2 - 1), 2);



Код: pascal
1.
2.
3.
4.
5.
  with Canvas do
  begin
    Pen.Color := Menu.ColorMap.FontColor;
    Brush.Color := Pen.Color;
  end;



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
class function TKeyLanguage.Create: TKeyLanguage;
begin
  with Result do
  begin
    Caption := '';
    Vk := -1;
    ScanCode := -1;
    SetLength(ComboKeys, 0);
    Language := '';
    KeyImage := kiText;
  end;
end;



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  with DockClients[0] do
  begin
    NcW := Self.Width - Width;
    NcH := Self.Height - Height;
    FUpdatingSize := True;
    try
      SetBounds(Left, Top, W - NcW, H - NcH);
    finally
      FUpdatingSize := False;
    end;
    NewWidth := Width + NcW;
    NewHeight := Height + NcH;
  end;




И я считаю это правильным!.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989882
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слабоумие и отвага.

Dixi.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989883
rgreat,

То есть проблема в человеке, а не в конструкции языка with


Мы давно это выяснили.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989921
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
Смысл WITH в том, что в приоритете функции и свойства установленного объекта в WITH
*установленн ых объект ов
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989936
Gluck99,

Да. Можно группировать в with разные объекты (В понимание объектов в Delphi), и структуры.


НО это прям очень редкая и нестандартная ситуация. Надо следить что бы в двух объектах не было одинаковых свойств и функций, иначе они не будут доступны для второго объекта.


А with прежде всего подразумевает настройку объекта указанного в with. А не всей области, включая и форму.
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989974
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Слабоумие и отвага.
Dixi.
Воистину!...
...
Рейтинг: 0 / 0
Улучшение оператора with: голосование и обсуждения
    #39989996
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВсеРазумный
По этому эта тема изначально является флудом.
Во-первых, почитай что такое флуд (а-то у тебя даже терминология хромает).
Во-вторых, ты просто не пиши в такие темы с флудом, пусть эти бестолковые
неучи между собой общаются. Договорились? Заранее спасибо.
...
Рейтинг: 0 / 0
25 сообщений из 100, страница 4 из 4
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Улучшение оператора with: голосование и обсуждения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]