Size: a a a

2020 December 01

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
Похоже как будто Сергей Пятыгин пытается наслушавшись советов "бывалых" бегунов пробежать 10км с первого раза на КМС))
Почему 10 км? Почему КМС? Марафон на мастера спорта международного класса. :)
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Как гласят некоторые буржуйские мотивационные плакаты что обычно достигаются самые амбициозные цели...
источник

z

zamtmn in Delphi & Lazarus
пусть. тут главное бегуны "бывалые"
источник

z

zamtmn in Delphi & Lazarus
я самый "бывалый"))
источник

SB

Sergey Bodrov in Delphi & Lazarus
Viktor Akselrod
да никогда так не было. fpc копирует поведение delphi для легкой миграции.

по итогу имеем, что ты сделал доброе дело, - сделал пример для новичков, но получилось много оговорок.
в идеале его бы доработать и будет супер.
Была какая-то особенность, связанная с Suspend(), причем не только в FPC. Наверное, поэтому ее забанили. Я раньше пользовался Suspend() и страдал от глюков, пока не перешел на использование Terminate().
источник

GB

George Bakhtadze in Delphi & Lazarus
Sergey Bodrov
Была какая-то особенность, связанная с Suspend(), причем не только в FPC. Наверное, поэтому ее забанили. Я раньше пользовался Suspend() и страдал от глюков, пока не перешел на использование Terminate().
забанили потому что дедлокам сильно способствует. И не особо взаимозаменяемо с terminate, кстати. execute неконтролируемо чтоб вызывался не слышал такого :)
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
@sergeybodrov Сергей, верно ли я понимаю вот эту часть кода:

procedure TCalcData.Assign(ASource: TCalcData);
begin
 Assert(Assigned(ASource), 'Error: TCalcData.Assign(nil)');
 Volts := ASource.Volts;
 Ampers := ASource.Ampers;
 FWatts := ASource.Watts;
end;

Для того чтобы создать копию класса, а не ссылку на область памяти, необходимо перечислить все свойства в методе Assign  (приравнять их друг другу), в противном случае если A1 и А2 это экземпляры MyClass, то А1 := A2 приведет именно к тому что, и А1 и А2 будут указывать на одну область памяти?
источник

VA

Viktor Akselrod in Delphi & Lazarus
Сергей Пятыгин
@sergeybodrov Сергей, верно ли я понимаю вот эту часть кода:

procedure TCalcData.Assign(ASource: TCalcData);
begin
 Assert(Assigned(ASource), 'Error: TCalcData.Assign(nil)');
 Volts := ASource.Volts;
 Ampers := ASource.Ampers;
 FWatts := ASource.Watts;
end;

Для того чтобы создать копию класса, а не ссылку на область памяти, необходимо перечислить все свойства в методе Assign  (приравнять их друг другу), в противном случае если A1 и А2 это экземпляры MyClass, то А1 := A2 приведет именно к тому что, и А1 и А2 будут указывать на одну область памяти?
да. при присвоении переменных класса будет просто скопирован указатель
источник

AG

Alexander Goncharow in Delphi & Lazarus
Подскажите пож. где найти Indy 10.5.8 (или новее) для установки в lazarus?
источник

AG

Alexander Goncharow in Delphi & Lazarus
c https://www.indyproject.org/ ничего не скачивается...
источник

RS

Renat Suleymanov in Delphi & Lazarus
Online Package Manager в Lazarus. Там будет Indy 10
источник

z

zamtmn in Delphi & Lazarus
Сергей Пятыгин
@sergeybodrov Сергей, верно ли я понимаю вот эту часть кода:

procedure TCalcData.Assign(ASource: TCalcData);
begin
 Assert(Assigned(ASource), 'Error: TCalcData.Assign(nil)');
 Volts := ASource.Volts;
 Ampers := ASource.Ampers;
 FWatts := ASource.Watts;
end;

Для того чтобы создать копию класса, а не ссылку на область памяти, необходимо перечислить все свойства в методе Assign  (приравнять их друг другу), в противном случае если A1 и А2 это экземпляры MyClass, то А1 := A2 приведет именно к тому что, и А1 и А2 будут указывать на одну область памяти?
Также надо понимать - Assign - просто так принято называть метод присвоения в vcl\lcl. Никто тебя не заставляет это повторять и ничего волшебного он в себе не несет. ты можешь например не присваивать а клонировать и написать свои методы-функции например clone
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
zamtmn
Также надо понимать - Assign - просто так принято называть метод присвоения в vcl\lcl. Никто тебя не заставляет это повторять и ничего волшебного он в себе не несет. ты можешь например не присваивать а клонировать и написать свои методы-функции например clone
Спасибо, понял, что хоть матрешкой этот метод назвать можно. Смущает одно-писать +100500 кода для присваивания свойств в каждом классе данных. Неужели это единственный вариант передавать данные?
источник

z

zamtmn in Delphi & Lazarus
Сергей Пятыгин
Спасибо, понял, что хоть матрешкой этот метод назвать можно. Смущает одно-писать +100500 кода для присваивания свойств в каждом классе данных. Неужели это единственный вариант передавать данные?
я давно переживал за твою клавиатуру))
источник

Miss Очепятка... in Delphi & Lazarus
Сергей Пятыгин
Спасибо, понял, что хоть матрешкой этот метод назвать можно. Смущает одно-писать +100500 кода для присваивания свойств в каждом классе данных. Неужели это единственный вариант передавать данные?
Структуры.
источник

z

zamtmn in Delphi & Lazarus
это последствия пропертей за которые все тут так прыгали. объедени простые данные в рекорд
источник

VA

Viktor Akselrod in Delphi & Lazarus
Сергей Пятыгин
Спасибо, понял, что хоть матрешкой этот метод назвать можно. Смущает одно-писать +100500 кода для присваивания свойств в каждом классе данных. Неужели это единственный вариант передавать данные?
ещё раз повторяю: в твоём случае нет смысла копировать объекты. достаточно шарить один объект
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Miss Очепятка
Структуры.
Что делать с динамическими элементами в рекордах? Или структуры и рекорд это разные понятия?

property StackWidth: TIList read FStackWidth write FStackWidth;
property PlateNumber: TIList read FPlateNumber write FPlateNumber;
источник

z

zamtmn in Delphi & Lazarus
как тебе удобней
источник

СП

Сергей Пятыгин... in Delphi & Lazarus
Viktor Akselrod
ещё раз повторяю: в твоём случае нет смысла копировать объекты. достаточно шарить один объект
Я ориентируюсь  на пример @sergeybodrov  :)
источник