Войти
ФлеймФорумПрограммирование

Visual С++ vs. Delphi (300 стр)

Страницы: 1295 296 297 298 299 300
#4485
13:01, 30 сен 2022

Mikle
> Я не очень понял, что вы обсуждаете, не знаю паскаля.
  Даже если ты его знаешь, то тоже не совсем понятно зачем его обсуждать сейчас.

#4486
13:05, 30 сен 2022

=A=L=X=
> это предложение на дурачка что ли?
Не перевирай мои слова, я не обещал просто. Я лишь показал возможность, но просто не выйдет.

Mikle
> Так я и имею ввиду именно безопасную ссылку,
Такого в плюсы не завезли. Ссылка также уплывёт как и указатель.

Ghost2
> В Си нет ссылок.
Помню я долго немог понять отчего код со ссылками не компилился. А оказывается я компилил турбо си а не плюсовым компилятором.

#4487
14:05, 30 сен 2022

Пропустили отпразновать 20-летие треда - давайте хоть 300-ю страницу отпразднуем!

#4488
14:19, 30 сен 2022

function b(var a: string); // это передача параметра по ссылке. Безопасная: нет способа передать nil.

type PString = ^string; // указатель на указатель, тащемто
function b(a: PString); // технически - абсолютно то же, что первый вариант, но в ногу себе стрелять *можно*.

В аду заготовлен особый котёл для тех, кто при трансляции хедеров WinAPI делал из ссылочных типов var параметры: механически - те же сова и пень, но nil-то передать нельзя!

#4489
(Правка: 7 окт 2022, 0:13) 22:22, 6 окт 2022

У меня после делфей проблема в том, что я не различаю ссылок и указателей. Потому что там есть или значения или указатели. Строки это указатели + ARC + CopyOnWrite. Дин. массивы это указатели + ARC. К сожалению подсчет ссылок можно порушить довольно легко. Объекты это всегда куча и всегда указатели на кучу. ARC к объектам можно прикрутить через InterfacedObject. Структуры могут быть как в куче так и на стеке.

Кстати помимо конкатенации строк на уровне языка такое же завезли и для массивов:

type

 TGenerator<T> = class

  class function GetDefaultValues(const Count:uint32):TArray<T>;

 end;

class function TGenerator<T>.GetDefaultValues(const Count: uint32): TArray<T>;
 begin
  Result := nil;
  for var i:uint32:=1 to Count do Result := Result + [Default(T)];
 end;

procedure TMainForm.CalcClick(Sender: TObject);
 var
  arr : TArray<int16>;
 begin
  arr := [0,1,2] + TGenerator<int16>.GetDefaultValues(5); // add 8 items
  arr := arr + [Default(int16)];
 end;
Прошло более 9 месяцев
#4490
14:38, 8 июля 2023

Сдохни Дельфи ... Трататата :)

#4491
14:45, 8 июля 2023

innuendo
Сегодня какой-то знаменательный день?

Cheb
> В аду заготовлен особый котёл для тех, кто при трансляции хедеров WinAPI делал из
> ссылочных типов var параметры: механически - те же сова и пень, но nil-то
> передать нельзя!
Держи костыль:

b(^(PString)nil);
#4492
15:03, 8 июля 2023

Имбирная Ведьмочка
Первый раз увидел эту тему

#4493
15:07, 8 июля 2023

innuendo
> увидел эту тему
Ну и зачем ты это сделал? Верни как было.

#4494
(Правка: 2:14) 2:10, 9 июля 2023

Качнул C++Builder - деградировали в хлам, если 20 лет назад это был целостный продукт то сейчас это просто куча какого то хлама в виде VCL и FireMonkey которые не дружат друг с другом. Даже HelloWorld чувствуется что с какой то невероятной тяжестью собирается. Но зато теперь их маркетинг долбит скидками на почту.

Страницы: 1295 296 297 298 299 300
ФлеймФорумПрограммирование