Помощь новичкам

Это вообще из System.Windows.Forms, или откуда? Приведите пример кода, что где как алайнится, и где в не таком порядке имена даёт.

Да, WindowsForms, и даже без кода – прямо с дизайнера проекта: если табы-заголовки выровнять по левому краю, они автоматически пишутся снизу-вверх (вертикально) и пока не знаю как победить, чтобы выглядело на подобии wizard’а (слева-направо) горизонтально.

Я всё равно вас не понимаю, приведите примеры. И что такое этот ваш визард?

Хотя, я лично порекомендовал бы дизайнер не использовать, разработчики сами сказали что не поддерживают. Там слишком много глюков.

А какая альтернатива? Для многих написание UI - острый нож.

На сколько я знаю - их, к сожалению, нет. Только руками всё делать.

Хотя, конечно, есть ещё вариант - в дизайнере размещать, чтоб получить необходимые смещения и размеры. А потом скопировать их в программу без дизайнера. Не очень удобно, но, по моему, то что что не делай - обязательно наткнёшься сразу на несколько багов, это ещё менее удобно.

Вот. Но что-то лучше, чем ничего.

Насчёт местоположения и направления названия вкладок изловчился без Tabcontrol, а вот что касательно фоновой записи в текстовый файл с возможностью отмены?

Также нашёл ответ про автоматическое определение кодировки текстового файла - https://github.com/errepi/ude А как бы правильно это перенести в PABC.NЕT? Cпс

А что не понятно то? Что именно вы не знаете как реализовать?

Чтоб перевести с C# на паскаль - много знать не надо, там догадаться легко, структура программы похожая всё же. И это легче чем на C# писать, то есть уметь это для перевода не обязательно.

Массив.TransForm(a->sqrt(abs(a))) Жалуется на TransForm. Сообщение: Неизвестное имя ‘TransForm’

Приводите всегда код. На словах не понятно. И, кстати, у вас последняя версия?

Transform - это метод (процедура), оформленный как расширение. Формат его вызова a.Transform(t -> f(t)), где а - имя массива, каждый элемент которого заменяется на результат вызова функции f. При этом тип результата, возвращаемого функцией f, должен совпадать с типом элементов массива.

Приветствую, господа. Как передать массив по ссылке в extensionmethod? Var перед self пишет нельзя.

procedure DelRow(self: array[,] of integer; k: integer); extensionmethod;
begin
  for var i := k to self.GetLength(0) - 2 do
    for var j := 0 to self.GetLength(1) - 1 do
      self[i, j] := self[i + 1, j];
      
  SetLength(self, self.GetLength(0) - 1, self.GetLength(1));
  
  Println; self.Println;
end;

begin  
  var a := MatrRandom(3, 2, 0, 100);
  a.Println;
  
  a.DelRow(0);
  
  Println;
  a.Println;
end.

Начнем с того, что массив всегда по ссылке передается. Как с матрицами работать, Вы можете посмотреть, например, в исходных кодах класса Matrix библиотеки NumLibABC,

Динамический массив обычно передается в подпрограмму по значению, т.к. сама переменная уже является ссылкой…Динамический массив передается по ссылке только в одном случае: если он создается или пересоздается внутри подпрограммы.

Вы сами понимаете, что написали? Массив, который может иметь десятки тысяч элементов “обычно” передается по значению? И еще раз - я Вам сказал, где Вы можете найти примеры реализации процедур и функций для работы с матрицами, но Вы это как-то игнорируете.

Динамический массив-параметр лишь указывается, как передаваемый по значению, поскольку по значению копируется лишь ссылка, а не сам массив.

Это не я написал, это в справке “паскаля абц точка нет” так написано, почитайте Типы данных -> Динамические массивы в самом низу.

Неудачно написано. На самом деле это говорит о том, как производить передачу параметра-массива, а не о том, как физически происходит такая передача. А происходит она элементарно просто, как и в С#, например.

Динамический массив имеет ссылочный тип. При передаче по значению вместо массива копируется ссылка на него. Если же массив в подпрограмме будет менять размер (а в .NET массив изменить нельзя, поэтому будет создаваться новый массив), то и ссылка изменится и по значению ее уже нельзя передавать, тогда пишут var.

Да, я это знаю, просто написал так, как в справке, думал поймете о чем речь. Так вот я пробовал с внешней процедурой там var нормально работает, а как в extensionmethod так сделать, не вставляется var перед self.

Вам в третий раз написать, где можно посмотреть, как пишут extension-методы для массивов?

Вас не сильно затруднит написать код программы удаления строки матрицы с использованием процедуры DeleteRow из вашей библиотеки, со всеми вашими типами и классами?

1 лайк