Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.49 MB
Время: 0.025 c
14-1117442964
leonidus
2005-05-30 12:49
2005.06.29
Как из lsd словарей Lingvo получить словари в текстовом виде?


1-1118114964
ORMADA
2005-06-07 07:29
2005.06.29
DragDrop


6-1112085248
Ves
2005-03-29 12:34
2005.06.29
Автоввод логина и пароля на проксю


6-1112518613
Толян
2005-04-03 12:56
2005.06.29
socket


1-1118140588
saNat
2005-06-07 14:36
2005.06.29
Требуется компонент для графическго представления формул




   Наверх