Войти
ПрограммированиеФорумОбщее

Вопросы по Delphi (53 стр)

Страницы: 152 53 54 5558 Следующая »
#780
12:08, 3 ноя 2022

Aslan
> Нужен кросплатформенный язык описания раскладок текста и изображений, но позвольте...
Такой язык уже есть, но Панзершрек его запретил.

#781
12:58, 3 ноя 2022

Имбирная Ведьмочка
Пусть сперва напишет свой PanzerML, потом запрещает

#782
14:14, 3 ноя 2022

Вот такой вопрос по размерности сообщений. Не знаю ошибка это или намеренное поведение.

  TWMMove = packed record
    Msg: Cardinal;
    Unused: Integer;
    case Integer of
      0: (
        XPos: Smallint;
        YPos: Smallint);
      1: (
        Pos: TSmallPoint;
        Result: Longint);
  end;

У нас получается, что члены юниона дают разный размер, кейс 1 больше, чем кейс 0.
Это действительно так нужно или ошибка? Или может специально сделано, чтобы TWMMove случайно не скастовали в любое другое сообщение?

#783
14:25, 3 ноя 2022

члены юниона могут иметь разный размер, память выделяется по максимальному.

#784
15:00, 3 ноя 2022

Aslan
> В консоли не сделаешь элементарно разный шрифт, иконки и пр графику
skalogryz
> когда уже завезут интерфейс псевдокомандной строки.
> когда интерфейс просто рисуется под консоль... но на самом деле полнографический!
смысл в том чтобы "рисовать консоль".
UI будет выглядеть соотствующе - из начала 90х, но зато при желании можно добавить произвольный полноценны й контент, иконки, графику, 3д.

g-cont
> Или может специально сделано, чтобы TWMMove случайно не скастовали в любое другое сообщение?
с помощью "absolute" можно без труда обходить ограничение по размеру.

#785
(Правка: 15:10) 15:07, 3 ноя 2022

skalogryz
В Блендере и так есть консоль, петухонская, торчит, как заноза в глазу
И интерфейс на мой взгляд наркоманский

> UI будет выглядеть соотствующе - из начала 90х
Да что там, из 80х, модель в wireframe, как на векторном дисплее
В консоли печатаешь rotate, scale, call list...
Изображение

#786
12:32, 4 ноя 2022

g-cont
вообще в том примере обходится ограничение на то что в дельфи юнион может быть только в конце структуры. на С было бы

struct TWMMove{
Cardinal msg;
Integer unused;
union { TSmallPoint Pos;
struct {SmallInt XPos; SmallInt YPos;}
}
Longint Result;
}
#787
8:33, 5 ноя 2022

kipar
> в дельфи юнион может быть только в конце структуры.
О! То-то же мне и показалась эта конструкция странной, нелогичной.

#788
(Правка: 12:42) 12:32, 5 ноя 2022

Что делает вот эта штука?

class function TObject.NewInstance: TObject;
begin
  Result := InitInstance(_GetMem(InstanceSize));
end;

Создаёт копию объекта?

И еще такой вопрос. Внутри объекта допустим объявлен

FWinControls: TList;

Однако доступ к элементам его массива происходит не через

FWinControls.Items[I];

А просто как

FWinControls[I];

То есть либо Items зарезервированное слово в Delphi, либо он ищет первое попавшееся свойство с доступом к массиву?

#789
12:46, 5 ноя 2022

g-cont
>Что делает вот эта штука?
https://gamedev.ru/code/forum/?id=268952&page=25&m=5581840#m360

>То есть либо Items зарезервированное слово в Delphi, либо он ищет первое попавшееся свойство с доступом к массиву?
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Properties

The definition of an array property can be followed by the default directive, in which case the array property becomes the default property of the class.
If a class has a default property, you can access that property with the abbreviation object[index], which is equivalent to object.property[index].

#790
18:23, 5 ноя 2022

g-cont
> Что делает вот эта штука?
Выделяет память под объект и инициализует её (обычно нулями) + инициализирует vmt

g-cont
> То есть либо Items зарезервированное слово в Delphi
В делфи зарезервированное слово default. Ищи его рядом с объявлением property Items

#791
(Правка: 10:22) 10:19, 6 ноя 2022

Вот оно что! Я же помню что читал про свойства и у меня в голове отложилось, что эти default и nodefault влияют на сохранение свойств.

The optional stored, default, and nodefault directives are called storage specifiers. They have no effect on program behavior, but control whether or not to save the values of published properties in form files. 

А тут оказывается, если это свойство индексированного доступа, то там default имеет совершенно иное поведение. Ппц.
Причём у меня назревал совершенно резонный вопрос, а если default задать для любого другого свойства, как это повлияет на метод доступа, а тут выясняется что вообще никак. Просто одно и то же ключевое слово используется с разным назначением для практических одинаковых конструкций.

#792
17:45, 6 ноя 2022
function DoControlMsg(ControlHandle: HWnd; var Message): Boolean;
var
  Control: TWinControl;
begin
  DoControlMsg := False;
  Control := FindControl(ControlHandle);
  if Control <> nil then
    with TMessage(Message) do
    begin
      Result := Control.Perform(Msg + CN_BASE, WParam, LParam);
      DoControlMsg := True;
    end;
end;

Функция использует собственное имя как переменную. Это какой-то доисторический аналог Result ?

#793
18:55, 6 ноя 2022

g-cont
> Функция использует собственное имя как переменную. Это какой-то доисторический
> аналог Result ?
Да.

#794
17:49, 7 ноя 2022

Как вот этот юнион устроен?

  TWMSysCommand = packed record
    Msg: Cardinal;
    case CmdType: Longint of
      SC_HOTKEY: (
        ActivateWnd: HWND);
      SC_KEYMENU: (
        Key: Word);
      SC_CLOSE, SC_HSCROLL, SC_MAXIMIZE, SC_MINIMIZE, SC_MOUSEMENU, SC_MOVE,
      SC_NEXTWINDOW, SC_PREVWINDOW, SC_RESTORE, SC_SCREENSAVE, SC_SIZE,
      SC_TASKLIST, SC_VSCROLL: (
        XPos: Smallint;
        YPos: Smallint;
        Result: Longint);
  end;

Я сперва думал, что это поименованный юнион, однако к CmdType обращаются в коде, как к реальной переменной.

Страницы: 152 53 54 5558 Следующая »
ПрограммированиеФорумОбщее