воскресенье, 26 апреля 2020 г.

Delphi 10.3.3 + Linux

Решил попробовать еще раз - что там как на Линуксе.
Сделал виртуалку с Mint 19.3 (всё по умолчанию)
поставил пакет open-vm-tools. добавил общую папку, скопировал Paserver из поставки
Paserver запустился

Запустил создание SDK в Delphi - поругалось на дубликаты заголовочников, на что я ничтоже сумняшеся сказал - переписывай нафиг.

Простейший консольный проект не скомпилировался - не смог найти модули
  C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\ld-linux.exe: error: cannot find -ldl
  C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\ld-linux.exe: error: cannot find -lpthread
  C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\ld-linux.exe: error: cannot find -lm

чё за фигня - непонятно.
Решил попробовать с рекомендуемой Убунтой.
Сделал виртуалку с Kubuntu 18.04 (так же всё по умолчанию)
запустил PAServer

сделал SDK - такая же фигня.

Стал копать в пакетах - ополучалось что нет заголовочников для gcc
посмотрел - в списка пакетов у меня есть gcc-7-base
поставил к нему пает libgcc-7-dev
Обновил SDK - проект скомпилировался

Но вот при запуске уже среда  ругалась на отсутствие коннекта с виртуалкой Mint (я её выключил)

Оказалось, что в настройках отделяются SDK и Connection Profile, и каждый из них надо отдельно задавать "По умолчанию" - в файле проекта это не настраивается - только в IDE.


при запуске из среды, файл проекта сохраняется в каталоге
/home/(user)/PAServer/scratch-dir/user1-Kubuntu 18.04/(project name)/

А вот инфа о простом консольном проекте
program LinuxTest;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils;

begin
  try
    writeln('Это линукс-тест من يحكم ألمانيا، وما الذي يشغل السياسة');
    writeln('Press Enter to continue');
    Readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
из systemmonitor
Summary

The process LinuxTest (with pid 10949) is using approximately 5.3 MB of memory.
It is using 4.1 MB privately, and a further 5.6 MB that is, or could be, shared with other programs.
Dividing up the shared memory between all the processes sharing that memory we get a reduced shared memory usage of 1270.0 KB. Adding that to the private usage, we get the above mentioned total memory footprint of 5.3 MB.
Library Usage

The memory usage of a process is found by adding up the memory usage of each of its libraries, plus the process's own heap, stack and any other mappings.


среда, 22 апреля 2020 г.

Контрастный фон для цветного текста

Понадобилось как-то мне показать диалог настройки шрифта с примером этого текста.

Пока цвет текста был темный - он нормально смотрелся на стандартном светло-сером фоне.
Но вот уже светлый шрифт смотрелся уже не очень.

Решение нашлось довольно простое:
procedure TFontSelectDialog.FontChange(Sender: TObject);
var
  Cl: TColor;
  red, green, blue: Byte;
begin
  pnlBackGround.Font.Assign(FEditedFont);
  Cl := ColorToRGB(FEditedFont.Color);
  red := Cl and $FF;
  green := (CL shr 8) and $FF;
  blue := (CL shr 16) and $FF;

  Cl := clSilver;
  if (1 - (0.299 * red + 0.587 * green + 0.114 * blue) / 255 < 0.5) then
      // светлый шрифт
    ChangeBrightness(Cl, 0.2)
  else  // темный шрифт
    ChangeBrightness(Cl, 0.92);
  pnlBackGround.Color := Cl;
end;