В таком виде не примем. Вы сами пишете, что это не работает. Поясните, заголовки каких методов и конструкторов вы хотите добавить
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 нужно что-то сделать.
Вместо GetString
есть .SubString
.
У GetString и SubString разные реализации и функции
А поясните на примере пожалуйста, какую подстроку вы вырезаете из ресурсов
В смысле? Что по вашему .SubString
делает? Вы уверены что смотрите не только на первую перегрузку?
Конкретно из ресурсов - никакую.Я из имени вырезаю,для свойства Name
Пример приведите
Да,уверен. Посмотрите тело моей функции и сравните.
PName := GetString(name, 1, name.LastIndexOf(’.’));
Я сказал про .SubString
именно потому что увидел тело функции.
А вообще тут и name.Remove(name.LastIndexOf('.'))
сработает. Хотя он сам - вызывает name.SubString(0,name.LastIndexOf('.'))
.
По моему имелся в виду пример на конкретных строках.
P.S. А ещё есть System.IO.Path.GetFileNameWithoutExtension
.
Думаю уже не нужно,т.к. я меняю код