Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

А хорошо ли это?   Найти похожие ветки 

 
REA   (2005-06-02 12:11) [0]

Delphi 2005 расширение синтаксиса. Вот думаю баг это или фича?

program MultiArray;
{$APPTYPE CONSOLE}

var
 X,Y: array[,] of Integer; // 2 dimensional array
 i,j: Integer;
begin
 i := 2;
 j := 3;
 X := New(array[i,j] of Integer); // only size of 2x3 matrix
 X[0,0] := 1;
 X[0,1] := 2;
 X[0,2] := 3;
 X[1,0] := 4;
 X[1,1] := 5;
 X[1,2] := 6;
 // type and initializer list
 Y := New(array[,] of Integer, ((1,2,3), (4,5,6)));
 for i:=0 to 1 do
   for j:=0 to 2 do
     if X[i,j] <> Y[i,j] then writeln(i,j);
 writeln("done");
 readln;
end.


 
VMcL ©   (2005-06-02 14:31) [1]

Расширение синтаксиса, несомненно является, фичей, а не багом.


 
REA   (2005-06-02 14:32) [2]

Дык ни у кого своего мнения нет на этот счет или не актуально?
Вроде как это все перпендикулярно идее паскалевского синтаксиса.


 
Gero ©   (2005-06-02 14:33) [3]

Превратим все баги в фичи!


 
REA   (2005-06-02 14:34) [4]

Особенно такие конструкции:
Y := New(array[,] of Integer, ((1,2,3), (4,5,6)));

Оно конечно удобно, но для чего указывать of Integer, когда оно уже и так объявлено как Integer? Т.е. проще было бы так:
Y := New(((1,2,3), (4,5,6)));


 
REA   (2005-06-02 14:35) [5]

Или вообще без New.


 
inic ©   (2005-06-02 15:11) [6]

REA   (02.06.05 14:35) [5]

ХМ, а я сижу до сих пор на д7, и видимо буду дальше сидеть, а то каким-то сишарпом попахивает от делфей все больше и больше (хорошо не бейсиком).


 
Digitman ©   (2005-06-02 15:11) [7]


>  но для чего указывать of Integer, когда оно уже и так объявлено
> как Integer?


и где же в


> Y := New(((1,2,3), (4,5,6)));


объявлено, что 1,2,3,4,5,6 - это Integer ?


 
AlexKniga ©   (2005-06-02 16:12) [8]

Digitman ©   (02.06.05 15:11) [7]
> объявлено, что 1,2,3,4,5,6 - это Integer ?
var
X,Y: array[,] of Integer; // 2 dimensional array


 
DiamondShark ©   (2005-06-02 16:19) [9]


> и где же в
>
>
> > Y := New(((1,2,3), (4,5,6)));
>
>
> объявлено, что 1,2,3,4,5,6 - это Integer ?


А где в

А := 1;

объявлено, что 1 -- это Integer?


 
Digitman ©   (2005-06-02 16:34) [10]


> AlexKniga ©   (02.06.05 16:12) [8]


> DiamondShark ©   (02.06.05 16:19) [9]


зря передергиваете)

речь идет о проверке компилятором типов на совместимось.

утверждать не возьмусь, но думаю что при

var
Y: array[,] of Integer;

на выражение

Y := New(array[,] of Dword, (($80000000,2,3), (4,5,6)));

компилятор отреагирует нормально, в то время как за

Y := New((($80000000,2,3), (4,5,6)));

отматерит как положено)


 
Kerk ©   (2005-06-02 17:00) [11]

AlexKniga ©   (02.06.05 16:12) [8]
var
X,Y: array[,] of Integer; // 2 dimensional array


дык
var
 Bitmap: TBitmap;
...
Bitmap := TBitmap.Create;


та же самая ситуация


 
DiamondShark ©   (2005-06-02 17:43) [12]


> Digitman ©   (02.06.05 16:34) [10]

Никакого передёргивания.
Просто конструкция избыточная.


 
REA   (2005-06-02 18:02) [13]

1) Если идет инициализация, то array[,] лишнее да и слово New тоже. Если инициализации нет, то достаточно Y := New(5,7);
2) Of DWORD оно или Of Integer видимо не слишком важно, т.к. объявлено как Integer и предполагается, что числа тоже будут Integer и зачем дополнительно это писать (хотя можно и явно указать DWORD(2))? Аналогично при объявлении: i: Integer я не обязан писать i := Integer(2), хоть и могу; Т.е. попахивает каким то полиморфизмом данных вроде вариантов.


 
DiamondShark ©   (2005-06-02 18:16) [14]

Впрочем...
Это ж НЕТ. А там вполне может быть такое:

var
 A: TObject;
...
 A := New(array[,], ((1,2,3),(4,5,6)));

Вот тут-то явное указание конструируемого типа и нужно.


 
TUser ©   (2005-06-02 18:53) [15]

Главное - чтобы была совместимость со старям синтаксисом. А Борланд вроде бы старается это поддерживать.


 
REA   (2005-06-03 10:44) [16]

Хм. Че ж это за Object такой? Все смешалось в доме Борландовско-Микрософтских...


 
Kerk ©   (2005-06-03 10:55) [17]

REA   (03.06.05 10:44) [16]

в .нет все является наследником обжекта. даже integer


 
REA   (2005-06-03 12:56) [18]

Хм. Ну тогда это уже как бы и не Паскаль. Оно конечно давно уже не паскаль, но сейчас это уже дошло до полной анархии. Возможно это и не фатально.



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.031 c
1-1117903664
Destroyer
2005-06-04 20:47
2005.06.29
Как динамически создавать кнопки с событиями для ActionToolBar?


9-1111489083
Xeno
2005-03-22 13:58
2005.06.29
Деформация


3-1116153138
Layner
2005-05-15 14:32
2005.06.29
Как отловить событие возникающее при редактировании в гриде


1-1117594257
RomanSergeevich
2005-06-01 06:50
2005.06.29
ярлык программы


1-1117797095
San Sanich
2005-06-03 15:11
2005.06.29
Текст разного цвета