Size: a a a

2020 December 23

a

alexey t in Delphi & Lazarus
никак. обьект фактически сам ссылка
источник

a

alexey t in Delphi & Lazarus
интерфейсы/строки/динамические массивы - для них out чистит. для всего остального это аналог var.
источник

AK

Alexey Kulakov in Delphi & Lazarus
попробовал в ФПЦ скомпилить с var и out модификаторами - в дизассемблере разницы нет. без модификаторов - просто копия масива создавалась...
источник

AK

Alexey Kulakov in Delphi & Lazarus
procedure test(out a:array of integer);
begin
 a[1]:=$5555;
end;

var
 arr: array of integer;
begin
 SetLength(arr,$1234);
 test(arr);
end.
источник

AK

Alexey Kulakov in Delphi & Lazarus
в смысле, никакой очистки массива не было
источник

a

alexey t in Delphi & Lazarus
хм. за фпц не скажу но в дельфях работает
источник

AI

Alexander Ivanov in Delphi & Lazarus
Alexey Kulakov
попробовал в ФПЦ скомпилить с var и out модификаторами - в дизассемблере разницы нет. без модификаторов - просто копия масива создавалась...
в с# out требует возвращаемого значения. Надо в функции обязательно его установить для переменной. В Delphi с out хрень какая-то
источник

AK

Alexey Kulakov in Delphi & Lazarus
извини, я не знаю, что сейчас творится в дельфе, я ФПЦ использую давно :(
источник

AK

Alexey Kulakov in Delphi & Lazarus
насколько я понимаю, изначально out ввели чисто варнинги убирать про неинициализированные переменные
источник

AI

Alexander Ivanov in Delphi & Lazarus
Alexey Kulakov
насколько я понимаю, изначально out ввели чисто варнинги убирать про неинициализированные переменные
Out - это переменная, в которой будет возвращаться результат. Нельзя передавать значение в переменную.
источник

AI

Alexander Ivanov in Delphi & Lazarus
А так это эквивалент var
источник

AK

Alexey Kulakov in Delphi & Lazarus
я и говорю, на уровне ассемблера в ФПЦ код практически идентичен, разница на уровне компиляции
источник

SB

Sergey Bodrov in Delphi & Lazarus
procedure Test(const AStr: string);
begin
 AStr[1] := '1';
end;
не компилится ни в FPC, ни в Delphi 7. То есть, содержимое строк защищено.
источник

K

Kass in Delphi & Lazarus
Sergey Bodrov
procedure Test(const AStr: string);
begin
 AStr[1] := '1';
end;
не компилится ни в FPC, ни в Delphi 7. То есть, содержимое строк защищено.
ну такое поведение очевидно было сразу
источник

K

Kass in Delphi & Lazarus
там же про массивы и объекты шла речь,  их поведение подвергали сомнению
источник

SB

Sergey Bodrov in Delphi & Lazarus
Ну дык, type string = array of Char (по идее). Однако, хрен.
источник

K

Kass in Delphi & Lazarus
Sergey Bodrov
Ну дык, type string = array of Char (по идее). Однако, хрен.
нет
источник

SB

Sergey Bodrov in Delphi & Lazarus
Kass
нет
А потом в каком-то Delphi 11.1 это поправят, и тут же поправят в FPC. И уже через 5 лет никто и не вспомнит, что когда-то было иначе и будут требовать объяснений, почему legacy код такой странный.
источник

M

Mike in Delphi & Lazarus
Скажите пожалуйста, есть ли какие-то негативные последствия при использовании указателей в потоках?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Mike
Скажите пожалуйста, есть ли какие-то негативные последствия при использовании указателей в потоках?
Есть.
источник