Изначально так и было,но тогда не получится реализовать свойство “Name”
А как записать картинку в ресурсы?
{$resource Картинка.png}
begin
end.
Не обязательно возвращать полноценное имя при создании из потока. Можно возвращать nil
, а можно кидать исключение.
Ну, если уже создавать из имени ресурса - не надо называть это созданием из потока в описаниях. Конечного пользователя только запутает.
Хорошо,как тогда назвать?
Так и назвать, именем ресурса. И можно ещё в скобках добавить, что имеется в виду $resource
, раз даже @Admin забыл что такое ресурсы программы))
А какие еще могут быть ресурсы?
Какие?
Давайте по одному
Первым делом хотелось бы вот это:
В таком виде не примем. Вы сами пишете, что это не работает. Поясните, заголовки каких методов и конструкторов вы хотите добавить
InitOb4 и InitOb5 + 2 последних конструктура. Не работает,если только в самом модуле менять.Вылетатет внутренняя ошибка компилятора,я уже писал какая. Код рабочий,думаю у вас ошибки.
Не позиционируем. Читайте на сайте.
Мы его позиционируем как использующийся в сфере образования и научных исследований.
Это разные вещи.
Обучающий - это два оператора и три операции.
Это вы не умеете код в стандартных модулях менять. Всё работает.
Приведите пожалуйста дельту - что добавить в класс. В приватную секцию отдельно, в публичную - отдельно.
И отформатируйте пожалуйста код стандартными средствами - тяжело читать.
В приватную секцию:
private
PName: string;
function GetString(self: string; oi, ni: integer): string;
begin
for var i := oi to ni do
result += self[i];
end;
procedure InitOb5(x, y, w, h: real; name: string);
begin
PName := GetString(name, 1, name.LastIndexOf('.'));
var bmi := new System.Windows.Media.Imaging.BitmapImage();
bmi.BeginInit();
bmi.StreamSource := GetResourceStream(name);
bmi.EndInit();
Rest(x, y, w, h, bmi);
end;
procedure InitOb4(x, y: real; name: string);
begin
PName := GetString(name, 1, name.LastIndexOf('.'));
var bmi := new System.Windows.Media.Imaging.BitmapImage();
bmi.BeginInit();
bmi.StreamSource := GetResourceStream(name);
bmi.EndInit();
Rest(x, y, bmi.PixelWidth, bmi.PixelHeight, bmi);
end;
В публичную секцию
///Создает рисунок из потока
constructor(x, y: real; name: string; b: boolean := false):=Invoke(InitOb4, x, y, name);
///Создает рисунок из потока с шириной w и высотой h
constructor(x, y, w, h: real; name: string; b: boolean := false):=Invoke(InitOb5, x, y, w, h, name);
А параметр b у вас нигде не используется. b=True - из ресурсов - верно?
И что делает GetString?
К сожалению нет,просто параметр,что бы не было конфликтов. А GetString нужен что обрезать строку. Сейчас внесу несколько поправок,ибо вместо GetString можно использовать срезы для строк, и с параметром b нужно что-то сделать.