Ошибки PascalABC.NET

Такс. А сейчас, пожалуйста, забудьте все предыдущее сообщение до строчки “добавлено”. Эта проблема решена. Была вызвана она всего одной строчкой в библиотеке:

zeroPic := new picture(0, 0);

Но вот ошибка

form := (Application.OpenForms.Item[0] as mainForm);

Никуда не исчезла. Она появляется даже в новом чистом приложении. В архиве в комментарии добавил информацию для отчета об ошибке, на всякий случайProject3.rar (4,7 КБ)

Я ничего не понял. В Вашем приложении я не нашел строчку

zeroPic := new picture(0, 0);

Вообще.

Строчка

form := (Application.OpenForms.Item[0] as mainForm);

вообще откуда у Вас взялась???

Я её удалил - всё работает

Так говорю же: проблема с zeroPic решена. Осталась только проблема с Form := (Application.OpenForms.Item[0] as mainForm); Эта строчка ни откуда не бралась, я сам её написал. Просто чтобы не тащить весь лишний код из проекта написал её в новый, только что созданный проект. Использую я эту строчку, а вернее переменную form для обращения к главной форме из других классов. Проблема в самом факте того, что компилятор считает за ошибку числовой индекс у массива item и требует string

А, понятно. Вот тут

https://msdn.microsoft.com/ru-ru/library/system.windows.forms.formcollection(v=vs.110).aspx

сказано, что есть Item[String] и Item[Int32]

В Паскале невозможны одноименные индексные свойства с разными параметрами. Поэтому он и берет первое попавшееся.

Здорово… А может тогда подскажете рабочий способ взаимодействия с формой из других классов?

Нет, не знаю - мы Windows Forms не занимаемся. Попробуйте всё-таки вызвать Item[‘имя формы’] раз она так уж хочет строку

Спасибо.

Ошибка среды: Возникает при компиляции с шансом 1 к 10 (примерно) Details: ошибка.txt (11,3 КБ) Однако, данная ошибка происходит не на всех устройствах

Исправьте: если подключить system, то вызов random(x), random(x,y) приводит к ошибке. Как я понял, вызывается не pabcsystem.random, a system.random, даже если писать точно: pabcsystem.random(x). Пришлось написать свою функцию, но к старому доброму random’у я привык и отвыкать не хочется

Да бросьте - всё работает:

uses System;

begin
  Print(PABCSystem.Random(10))
end.

Уж не знаю, считать ли это ошибкой, или просто нюанс такой забавный, но:

  1. Куда-то спрятано пространство имён System.Drawing, в выпадающей подсказке его нет.
  2. В предыдущей версии подключить это пространство имён в разделе uses было нельзя – система его почему-то не видела. Обновился – вроде бы ошибка пропала, подключить можно (хотя в подсказке всё равно отсутствует).
  3. Использовать классы из System.Drawing можно явно, например, var btmp : System.Drawing.Bitmap …, то есть оно как бы есть.
  4. Самое смешное и забавное: любая ошибка в программе с использованием этого пространства имён приводит к одному и тому же сообщению: “Неизвестное имя Drawing”. Например, в корректно работающей программе делаем синтаксическую ошибку, меняем ReadInteger() на ReeeeadInteger() где-нибудь в коде, и получаем сообщение “Неизвестное имя Drawing” с указанием на строку var btmp : System.Drawing.Bitmap := eventArgs.frame;.

Забавное поведение, может я что-то не так делаю? Версия PascalABC.Net последняя с сайта, Win 10, .Net 4.2.6 Проект для работы с веб-камерой на PascalABC.NET: JustCam.zip (150,3 КБ)

1 лайк

Да, здесь тонкости. Подключите явно сборку System.Drawing.dll. Она подключается неявно при запуске по F9 с PABCRtl.dll (потому что в PABCRtl.dll есть GraphABC). А при обычной компиляции она не доступна.

Компилятор интерпретирует это как рекурсию.А вот так можно сделать то что Вы хотите: `uses graphabc;

procedure FillRectangle(const x1,y1,x2,y2:integer); begin graphabc.FillRectangle(x1,y1,x2,y2); end; begin SetBrushColor(clBlack); FillRectangle(4,4,22,32); end.`

1 лайк

Добрый день. Пробовал воспользоваться TAO Framework библиотеками на PascalABC.net. Так как библиотека рассчитана на среду .net framework, решил, что проблем не будет. Но, выполняя урок с этой страницы, обнаружил следующую ошибку компиляции: "Ошибка времени выполнения: Была сделана попытка загрузить программу, имеющую неверный формат. (Исключение из HRESULT: 0x8007000B)" Вылетает на строчке с glut.glutInit(); Тем не менее, сами сборки и функции из TAO он прекрасно видит, но на попытке инициализации глута вылезает эта ошибка. Библиотеки ТАО перемещал в System32, как и было сказано в уроке. НО IDE не предлагает сделать x86 проект (там это было обязательным условием). Есть ли способ исправить данную ошибку? Очень хотелось бы использовать TAO в вашей удобной и приятной IDE=) . Заранее благодарю) P.S. Кстати SimpleOpenGlControl из сборки автоматически появился в палитре=)

Она наверное у Вас 32-битная, а ОС - 64-битная, поэтому не компилируется. Это - недостаток PascalABC.NET.

Спасибо за ответ А способов решения нет? Не планируется ли вводить в обновлениях? Это бы значительно расширило возможности компилятора. Можно было бы делать мультимедийные приложения с использованием ТАО на 64-битных системах. Кстати, а если в 32-х битной системой, поможет?

Должно.

Вот сайт Tao http://www.mono-project.com/archived/tao/

Там есть исходники. Пересоберите их под 64 бита или напишите чтобы выложили 64-битную версию :slight_smile:

pascalabc.net 3.2 1325 для цвета фона всплывающей подсказки редактора используется системный, а для шрифта - черный; в результате если в системе установлен темный фон цвета всплывающей подсказки то ничего не видно.

п.с. ничего не смог найти по настройке цветов синтаксиса и шрифтов, настроек интерфеса(хотябы кнопок панелей) оно есть вообще, или этот нищенский интерфейс и пара чекбоксов - это все что нам предлагает эта “замечательная” ide? п.п.с есть для это 'ide" какой-нибудь скриптовый язык(хотяб vba какой) или ущербность этого блокнота уже ничем не вылечить?

1 лайк

Гхм, по сабжу - логично, темная тема, имхо, нужна в любых редакторах - часами смотреть в белый фон глаза болят. Но зачем так агрессивно? Как-то привык, что таким образом может с разработчиками разговаривать(надеясь на эффект) исключительно вышестоящее начальство, а никак не новый пользователь форума с 1 сообщением без какой-либо репутации. Я бы этот реквест переписал следующим образом:

P.S. Я не являюсь пользователем данной IDE, просто форумчанин, посему мне не известна информация об отсутствии/наличии данных функций в среде - акцент исключительно на форме запроса.

Здравствуйте!

В документации, в описании процедуры Arc модуля GraphABC, указаны параметры углов, как вещественные, но в самой процедуре они целочисленные, что в моем случае, существенно влияет на отрисовку. Возможно ли привести процедуру в соответствии с описанием? Или придется самому процедуру переписывать?

Заранее благодарю.