позволить C ++ Builder / Delphi создавать TForms при запуске, или создать вручную?

Когда TForm создается в Builder (или Delphi), код добавляется в main для создания этих форм при запуске приложения:

Application->CreateForm( __classid( TxForm), &xForm );

это упрощает задачу, но так ли это? разумно, когда в приложении 10, 20, 50, 100 форм? Я предполагаю, что это может захватить все виды памяти и системные дескрипторы. Форма всегда может быть создана на лету, когда это необходимо, удалив ее с помощью диалогового окна Project-> Options-> Forms и:

std::auto_ptr< TxForm > myForm( new TxForm( this ));

myForm->ShowModal();

Итак, вопрос в том, что лучше, позволить C ++ Builder делать это по-своему, >>> А array ([[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]) ...

Предположим, я создаю 2d-массив вроде этого:

>>> A=np.arange(16).reshape((4,4))
>>> A
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

и хочу иметь возможность выбрать окно 3x3 вокруг любого заданного элемента, чтобы окно обтекало границы, как мне это сделать? Я знаю, что могу сделать это, если границы окна не перекрывают границы исходного массива:

>>> A[1:4,0:3]
array([[ 4,  5,  6],
       [ 8,  9, 10],
       [12, 13, 14]])

, но если я использую выражение вроде A [i-1: i + 2, j-1: j + 2] он возвращает пустой массив только для i = 0, j = 0, например.

14
задан kennytm 10 November 2010 в 19:31
поделиться