![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
High, Low и двумерный массив
p3.14 © (2007-04-18 19:37:00)Каким образом получить размерность двумерного массива?
например массив есть 3x4:
temp: array of array of Double;
SetLength(temp, 3, 4);
и как получить при помощи High и Low его его размерность? Или для двумерного существует иная форма High и Low?
Юрий Зотов (2007-04-19 11:10:00) [1]> p3.14 (18.04.07 19:37)
> Каким образом получить размерность двумерного массива?
var
Temp: array of array of Double;
Low(Temp) - нижняя граница "наружного" массива (всегда 0);
High(Temp) - верхняя граница "наружного" массива (на 1 меньше его длины);
Low(Temp[i]) - нижняя граница i-го "внутреннего" массива (всегда 0);
High(Temp[i]) - верхняя граница i-го "наружного" массива (на 1 меньше его длины);
Длины "внутренних" массивов могут, но не обязаны быть одинаковыми. Какую длину хотим - ту и ставим.
{RASkov} (2007-04-18 23:41:00) [2]ShowMessage(A[0, 0]);
я чего-то не понял, но строка — вроде тоже массив…
Попробуй, тоже самое что и ShowMessage(A[0, 0]);
A: String;
.....
A:='Kolan';
ShowMessage(A[0]);
и туже ошибку получишь...
Строки похожи на дин массивы но таковыми не являются...
{RASkov} (2007-04-18 23:36:00) [3]В третьих - посмотри что покажет Low(A)
{RASkov} (2007-04-18 23:33:00) [4]> [13] Kolan © (18.04.07 23:13)
Во первых массив А одномерный... во вторых в строках в нулевом байте хранится счетчик и длинна строки
Kolan (2007-04-18 23:13:00) [5]S: array of array of String тут я погорячился, получилось 3 измерения.
procedure TForm3.BitBtn1Click(Sender: TObject);
var
A: array of String;
begin
SetLength(A, 10);
A[0] := 'Kolan';
ShowMessage(A[0]); //Kolan
ShowMessage(A[0, 1]); //K
ShowMessage(A[0, 0]); //А это вообще не компилиться ([Pascal Error] Unit3.pas(34): E2157 Element 0 inaccessible use 'Length' or 'SetLength') хотя может я чего-то не понял, но строка вроде тоже массив
end;
{RASkov} (2007-04-18 22:58:00) [6]> [11] Kolan © (18.04.07 22:50)
СМ [4]
:)
По барабану строки или байты...
Kolan (2007-04-18 22:50:00) [7]> Строки типа String все с 1 по умолчанию
не да, типа
S: array of array of String
Вроде не с 0.
Но тут я не уверен, а проверять лень
{RASkov} (2007-04-18 22:44:00) [8][4] {RASkov}
> У динамических массивов нижняя граница всегда 0
Следом
> [5] Kolan
> А у двумерных невсегда.
[6] {RASkov}
> Приведи пример двумерного динамического(имелось ввиду) массива
> [7] Kolan © (18.04.07 21:43)
> A: array[10??, 10??] of Integer
> И не говори, что это не двумерный массив.
Двумерный но не динамический :)
> [9] Kolan © (18.04.07 21:46)
А это что? Строки типа String все с 1 по умолчанию... :)
Kolan (2007-04-18 21:46:00) [9]А еще есть строки, которые с 1 :)
Kolan (2007-04-18 21:44:00) [10]> [10??, 10??]
10 100, 10 100
что-то глюк с точками
Kolan (2007-04-18 21:43:00) [11]> [6] {RASkov} (18.04.07 20:25)
> Всегда. Приведи пример двумерного массива c отличной от нуля нижней границей.
A: array[10𠟬, 10𠟬] of Integer
И не говори, что это не двумерныймассив.
{RASkov} (2007-04-18 20:25:00) [12]> [5] Kolan © (18.04.07 20:08)
>А у двумерных невсегда.
Всегда. Приведи пример двумерного массива (Arr: array of array of Integer) c отличной от нуля нижней границей.
Kolan (2007-04-18 20:08:00) [13]> У динамических массивов нижняя граница всегда 0
> Каким образом получить размерность двумерного массива?
А у двумерных невсегда.
{RASkov} (2007-04-18 20:06:00) [14]У динамических массивов нижняя граница всегда 0
{RASkov} (2007-04-18 20:05:00) [15]Посмотри
http://www.delphimaster.ru/cgi-bin/forum.pl?n=18&id=1176840303
Kolan (2007-04-18 19:48:00) [16]
> и как получить при помощи High и Low его его размерность?
Height := Length(temp);
if Length(temp) > 0 then
Width := Length(temp[0])
else
Width := 0;
Примерно так.
Kolan (2007-04-18 19:48:00) [17]> Или для двумерного существует иная форма High и Low?
Ну с Low/High тоже самое + 1