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

У меня во всех компьютерах комментарии свойства в инспектор объектов отражаются на русском языке, но в одном на английском. Как сделать, чтобы был на русском? Переустановил, все равно на английский.

Попробуйте поменять язык системы.

Почему так? То есть если строки это ссылочный тип то понятен первый обмен, но тогда не понятен второй. А если размерный, то наоборот не понятен первый.

begin
  var s1 := 'Hello';
  var s2 := s1;
  Println('s1 =', s1, 's2 =', s2);//s1 = Hello s2 = Hello
  
  Swap(s2[1], s2[2]);
  Println('s1 =', s1, 's2 =', s2);//s1 = eHllo s2 = eHllo
  
  var tmp := s2[1];
  s2[1] := s2[2];
  s2[2] := tmp;
  Println('s1 =', s1, 's2 =', s2);//s1 = eHllo s2 = Hello
end.

Поздравляю, вы сломали .Net :rofl: Даже у меня так ещё не удавалось, со всем моим опытом баготестов паскаля.

Строки - ссылочный тип. Но при попытке изменить строку - всегда должна создаваться новая, чтоб всё работало как будто строки это размерный тип. Это так заморочились для оптимизации.

А вот подтверждение что это таки сломано:

begin
  var s1 := 'Hello';
  
  //тут .Net видит что такая строка объявлена в другом месте
  //и ради оптимизации - не создаёт новую, а присваивает ссылку на старую
  var s2 := 'Hello';
  
  Println('s1 =', s1, 's2 =', s2);//s1 = Hello s2 = Hello
  
  Swap(s2[1], s2[2]);
  Println('s1 =', s1, 's2 =', s2);//s1 = eHllo s2 = eHllo
  
end.

Ой, извините, я ничего не хотел ломать. И вообще это не я, это кенгуру виноватая. Опять мама будет ругаться…:pensive:

В паскале у строк Copy-On-Write семантика. Исключение: передача символа строки по ссылке. Там ничего не копируется.

Открываем в Паскале Справку. Все типы в PascalABC.NET подразделяются на две большие группы: размерные и ссылочные. К размерным относятся все простые типы, указатели, записи, статические массивы, множества и строки. К ссылочным типам относятся классы, динамические массивы, файлы и процедурный тип

begin
  Writeln(typeof(string).IsClass); // True
end.

Строки имеют ссылочный тип. В C# тоже так. Поэтому написанное в справке утверждение противоречит действительности, которая продемонстрирована программой.

Я уже говорил, что от этого аргумента меня лишь неприлично “пробивает на ржачку”. Строки - они так, как захотели сделать разработчики. А там не все так уж однозначно. Есть еще строки с фиксированной длиной. Официальный источник информации - Справка. А вовсе не ссылки на другой язык.

Упоминание про C# здесь не было аргументом. Не вижу ничего смешного в том, чтобы упомянать про другие языки программирования. Впрочем, это Ваше личное дело как к этому относится.

Я привёл пример кода, показывающий, что string - ссылочный тип.

Вы лишь показали пример, в котором string ведет себя, как ссылочный тип. Не более того. Я подожду, может быть разработчики скажут, правильно ли у них написано в Справке, или нет.

Если доверять Вашей “проверке” получается что Справка вообще почти везде врёт, говоря о размерных типах.

type
  t0 = string;
  t1 = set of char;
  t2 = record
    x: integer;
    y: string;
  end;
  t3 = array of integer;
  t4 = array[1..5] of real;
  t5 = ^integer;
  t6 = pointer;

begin
  typeof(t0).IsClass.Println; // True - строка
  typeof(t1).IsClass.Println; // True - множество
  typeof(t2).IsClass.Println; // False - запись
  typeof(t3).IsClass.Println; // True - динамический массив
  typeof(t4).IsClass.Println; // True - статический массив
  typeof(t5).IsClass.Println; // True - типизированный указатель
  typeof(t6).IsClass.Println; // True - бестиповый указатель
end.

Текст из Справки еще раз:

К размерным относятся все простые типы, указатели, записи, статические массивы, множества и строки. К ссылочным типам относятся классы, динамические массивы, файлы и процедурный тип.

Поддерживаю Ваше предложение.

Не думаю, что уместен сарказм по поводу «проверки».

А это Ваше право. Я не обязан доверять тому что пишет эта функция, мало ли как она реализована. Если вдруг программа выдаст, что 2+2=5, это не поставит всю математику “на уши”.

В панель управления - Языки и регион. станд. язык стоит русский. В самом АВС тоже русский. Я пробовал так: скопировал всю папку из другого компьютера и вставил в этом компьютере, но всеравно английский коментарии.

Да врёт справка, я всё это декомпилировал - статические массивы, множества и строки (в том числе и короткие) - это классы. Единственное - IsClass считает указатели классом тоже, просто потому что они хранят ссылку. Но указатель это и не запись, однозначно))) Да и при наведении мышки показывает что это класс.

2 лайка

Так, подождите, теперь это комментарий? Я совсем запутался, приведите скрины.

@RAlex, не нравятся аргументы - игнорируйте. Грубить не обязательно.

1 лайк

@Gleb, Вы где грубость в очередной раз увидели? Я скоро буду вынужден к @Admin обращаться по поводу Ваших публичных наездов на пустом месте.

Тогда у Вас есть повод создать issure ))))

Нет, комментарий не в тексте программы, а в инспектор объектов (где отражены свойство). Например, в форме добавлено TextBox, и мы стоим в свойство ReadOnly, а внизу инспектор объектов комментарий отражается на английском: Controls whether the text …