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

Здесь - вопросы, которые обычно задают новички в программировании.

2 лайка

Form1.InitControl(True,False,alNone,crDefault,clBtnFace,‘Forma1’,’’); Вместо цвета “clBtnFace” можно ввести цифровое значение из 9 цифр, что эти цифры означают я не понимаю, что не введи такое ощущение что они меняются рандомно. Например, 436657894 это жёлтый, а 435657894 чёрный. p.s. Я знаю что можно ввести шестнадцатеричное значение, но мне интересно что означают именно десятичные значения из 9 цифр.

Я понял что это! Это те же цвета, но в десятичной форме, а то что туда можно вводить больше 16 777 215 - баг, либо фича на будущее, когда цвета станут кодироваться по 10 битов на цвет =)

думаю, туда можно вводить вплоть до 4294967295, не забывайте про альфа-канал, там 4 компонента по 8 бит, итого 32

Не, только девять девяток.

А в лямбда-функции может быть несколько statement’ов? Мне надо двум коллекциям сделать zip, но действие zip’а это просто setter, то есть процедура.

// псевдокот
type class A = end;

type class B =
    my: A;
    procedure setMy(a_: A);
end;

begin
    var as : List<A> := RandomAs;
    var bs : List<B> := RandomBs;

    var newBs := bs.zip(as, (b, a) -> (b.setMy(a); a))
end.

Вот кот:

// псевдокот
type A = class end;

type B = class 
    my: A;
    procedure setMy(a_: A);
    begin
      
    end;
end;

begin
    var aa : List<A> := new List<A>;
    var bb : List<B> := new List<B>;

    var newBs := bb.zip(aa, (b; a) -> begin b.setMy(a); Result := a end)
end.

В хелпе последнего инсталлята всё это есть

Понял, спасибо!

ЗЫ инсталятор под линуксом не запускается, только архив с консольным компилятором.

ЗЗЫ

(b; a) ->

О боже, я был уверен, что там запятая. Кажется, поэтому у меня вообще и не получалось :’(

Там сложная синтактико-семантическая дилемма. В Паскале через запятую в разделе описаний перечисляются данные одного типа, а через точку с запятой - разных. Но типы можно и не писать :slight_smile:

А chm-файл отдельно поможет?

Да, chm можно читать. Не самый удобный вариант, конечно, лучше бы онлайн просто, но лучше, чем ничего (или exe-архив).

Выложил сюда

http://pascalabc.net/ssyilki-dlya-skachivaniya

.chm-архив

1 лайк

Я как-то просил сделать более дружелюбный к пользователю Ассёрт, но пока всё остаётся как было. Это ладно: под Виндовсом хотя бы он пишет номер строки, где упал. Вопрос такой: нельзя ли добиться, чтобы под Линуксом тоже был номер строки, а то у меня вот что:

ответ - Админу? Новый вопрос? ясно. Тогда вот вопрос: Я создаю программу использующую дизайнер форм, как Приложение Windows Form.

  1. В программе использую работу с текстовыми файлами. При компиляции программы в Unit1.pas на описании типа текстового файла - Text выдается ошибка “Ожидался тип”.

  2. как организовать в диалоге выбор имени файла, раньше в паскалеАБС это было так на кнопку “открыть” вставлялась команда if opendialog1.execute then s:=opendialog1.filename; как теперь сделать подобное?

По 1 - используйте TextFile вместо Text

Здравствуйте! Скачал Pascal ABC.NET последней версии с оф. сайта Почему-то у меня не подсвечивается синтаксис, системные коды… Как сделать так, чтобы всё было красивенько и выделялось цветом?

uses graphabc;
begin
SetPixel(100,100,color.Blue);
if GetPixel(100,100) = color.Blue then 
system.Console.WriteLine('все работает')
else system.Console.WriteLine('не работает');
end.

выводит “не работает” почему?


как работают переменные color с if ?

Это скорее всего из-за того, что exe-шники генерируются у вас в Release-режиме. Он оказывается включено по умолчанию. Залил на github изменения, в которых режим по умолчанию - Debug.

1 лайк

@ibond, спасибо большое! А с WDE не подскажете: нельзя ли там как-то Assert сделать?

да, можно переопредeлить assert и выводить обычным writeln ошибку и стек. все равно Continue сделать не получится :slight_smile: а исключениями реализовывать нельзя, потому что их можно отловить и подавить, теряется весь смысл assert… сделаю

1 лайк

да, нетривиальная проблема. в структуре Color есть поле приватное поле state. Оно у двух структур разное, потому что структуры создаются заново (GetPixel берет Color из буфера Bitmap). Вы можете переопределить оператор = и реализовать свое сравнение исключительно по A,R,G,B.