Ошибки в папке Samples и Справке

Исправили

круто! Теперь в том окошке все круто… Зато теперь в самой справке по классам весь русский текст кракозябрами :slight_smile: Верните как было, пожаааалуйста :slight_smile:

Ну, вам не угодишь.

Исправили.

Это не совсем ошибка, но на сайте справка больно уж древней версии. Не та, которую можно скачать, а http://pascalabc.net/downloads/pabcnethelp/index.htm

Изменил

Не понял, что вы сделали, но по той ссылке справка всё та же древней версии, но теперь наполовину сломанная (ошибка 404, название вкладки везде Arial, 8, 0), а вот скачиваемая сломалась полностью.

А вы кеш почистите или зайдите другим браузером.

А в скачиваемой правой мышью флажок про скачивание из интернета установите или снимите - не помню

1 лайк

в программе Dynarray (c:\PABCWork.NET\Samples!MainFeatures\02_Types\Dynarray)

// Процедуры и методы работы с динамическим массивом
begin
  var a := ArrRandom(10);
  
  // Вывод всех элементов массива
  a.Println;
  
  // Сортировка массива 
  a.Sort;
  a.Println;

  // Обращение массива
  a.Reverse;
  a.Println;

  // Изменение размерамассиав с сохранением элементов. То же делает SetLength
  a.Resize(a.Length+2);
  a.Println;

  // Поиск вхождения элемента в массив
  var i := a.IndexOf(50);
  Writeln(i);
end.  
  1. Опечатки в комментарии, исправить на ‘Изменение размера массива с сохранением элементов.’
  2. Dynarray.pas(18) : Нет перегруженной подпрограммы с таким количеством параметров Resize
    По крайней мере для версии 3.5.2201 такой процедуры нет в PABCSystem (хотя есть вероятность, что она перегружена в другом модуле, если есть, то, пожалуйста, укажите в каком именно,)
    setlength(a, [длина массива]), так работает.

c:\PABCWork.NET\Samples!MainFeatures\04_Units\NativeDll\CallNative

// Вызов функции из обычной dll
function add(a,b: integer): integer; external 'NativeDll.dll' name 'add'; // объявление внешней функции

begin // основная программа
  writeln(add(2,3));
end.  

CallNative.pas(5) : Ошибка времени выполнения: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)

Вероятнее всего, проблемы с целевой платформой

c:\PABCWork.NET\Samples!MainFeatures\06_Classes\Boxing

// Упаковка-распаковка размерных типов
var 
  i: integer := 2;
  r: real := 3.14;
  o: object;

begin
  o := i; // Упаковка: объект размерного типа integer упаковывается в объект ссылочного типа, 
          // котрый и присваивается переменной o
          // Преобразование типов при упаковке - неявное
  writeln(integer(o)); // Распаковка: из упакованного объекта извлекается значение        
                       // Преобразование типов при распаковке - явное
  o := r;
  writeln(real(o));
  
  try // При неверном преобразовании типов генерируется исключение InvalidCastException
    writeln(shortint(o));
  except
    on e: Exception do
      writeln(e.GetType);
  end;
end.  

Пропущена буква ‘о’

//котОрый и присваивается переменной o

Потому что она и не из паскаля, а из .Net . Вот так правильно:

System.Array.Resize(a, a.Length+2);

А через метод это сделать и не выйдет.

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

А методы (и экстеншн-методы тоже) не могут изменять self.

Да, компилируйте неуправляемую .dll 64-битной.

1 лайк

Большое спасибо за ответ!

c:\PABCWork.NET\Samples!NewExecutors\файлы1

uses Исполнители;

begin
  var Файл1 := Файл.Новый;
  var Файл2 := Файл.Новый;
  Файл1.ОткрытьНаЧтение('текст.txt');
  Файл2.ОткрытьНаЗапись('текст2.txt');
  while not Файл1.КонецФайла do
  begin
    var строка := Файл1.ПрочитатьСтроку;
    Файл2.Записать(строка);
  end;
  Файл1.Закрыть;
  Файл2.Закрыть;
  
  Файл2.ВывестиСодержимое;
 
end.  

Файлы1.pas(16) : Неверное количество параметров процедуры .

реализация в модуле:

///- Метод Файл.ВывестиСодержимое
  /// Выводит содержимое файла
    procedure ВывестиСодержимое(имяфайла: строковое);
    begin
      if (State<>FileState.Closed) and (f.Name.ToLower=имяфайла.ToLower) then
        Println('Ошибка: Содержимое можно вывести только у закрытого файла')
      else 
      begin
        WritelnFormat('Содержимое файла {0}:',имяфайла);
        try
          ReadLines(имяфайла).Println(NewLine);
        except
          WritelnFormat('Файл {0}: отсутствует на диске',имяфайла);
        end;
      end;  

Работает верно только как Файл2[или Файл1].ВывестиСодержимое('текст2[или текст].txt');

c:\PABCWork.NET\Samples!Tutorial\04_Graphics\Gr5

// Графика. Pie
uses GraphABC;

const r = 200;

begin
  Window.Title := 'Круговая гистограмма';
  var x := Window.Center.X;
  var y := Window.Center.Y;
  Brush.Color := clRandom;
  Pie(x,y,r,0,30);  
  Brush.Color := clRandom;
  Pie(x,y,r,30,110);  
  Brush.Color := clRandom;
  Pie(x,y,r,110,160);  
  Brush.Color := clRandom;
  Pie(x,y,r,160,280);  
  Brush.Color := clRandom;
  Pie(x,y,r,280,360);  
end.  

Обычно гистограммами называют данные, расположенные в строках и столбцах


Но круговые гистограммы не совсем правильны, правильнее будет сказать ‘круговая диаграмма’

c:\PABCWork.NET\Samples!Tutorial\04_Graphics\Gr7

// Графика. Сохраниение изображения графического окна в файл и загрузка из файла 
uses GraphABC;

const 
  delay = 500;
  filename = 'GraphWindow.bmp';

begin
  Window.Title := 'Window.Save и Window.Load';
  SetWindowSize(320,240);
  
  for var x:=0 to Window.Width - 1 do
  for var y:=0 to Window.Height - 1 do
    SetPixel(x,y,RGB(x-2*y,y+x,y-2*x));
  
  Window.Save(filename);
  for var i := 1 to 5 do
  begin
    Window.Clear;
    Sleep(delay);
    Window.Load(filename);
    Sleep(delay);
  end;
end.  

Опечатка : Сохранение изображения графического окна в файл и загрузка из файла

c:\PABCWork.NET\Samples!Tutorial\04_Graphics\GrAnim2
строка 14 // Перерисовываем окно из внеэранного буфера
Опечатка: Внеэкранного

c:\PABCWork.NET\Samples!Tutorial\11_Enums\ Enum2 // ѕеречислимый тип uses System;

    type Months = (January,February,March,April,May,June,July,August,September,October,November,December);

    begin
      var t: &Type := typeof(Months);
      var names: array of string := Enum.GetNames(t);
      writeln('÷икл по именам перечислимого типа');
      foreach name: string in names do
        write(name,' ');
      writeln; writeln;
      
      var v: &Array := Enum.GetValues(t);
      var mm: array of Months := new Months[v.Length];
      writeln('÷икл по массиву всех значений перечислимого типа');
      for var i:=0 to v.Length-1 do
        mm[i] := Months(v.GetValue(i));
         
      for var i:=0 to mm.Length-1 do
        write(mm[i],' ');    
    end.  
  1. // ѕеречислимый тип - перечислимый тип
  2. ÷икл по именам - цикл по именам
  3. ÷икл по массиву - цикл по массиву
    Не у одного меня такое
    Ошибка кодировки в Samples

c:\PABCWork.NET\Samples!Tutorial\12_Files\Text1

// Программа, выводящая текст из своего файла
var 
  f: Text;

begin
  assign(f,'Text1.pas');
  reset(f);
  while not eof(f) do
  begin
    var s: string;
    readln(f,s);
    writeln(s);
  end;
  close(f);
end.

В окне вывода комментарий
// Программа, выводящая текст из своего файла
Ошибка в кодировке. Использует CP1251.

c:\PABCWork.NET\Samples!Tutorial\13_Pointers\Pointer3

writeln('Значение в динамичесской памяти = ',p^);
Исправить на: динамической.

c:\PABCWork.NET\Samples!Tutorial\13_Pointers\ProcPointer2

writeln('Содержимое массива после умножения его элеметов на 2: ');

исправить на: элементов