|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.03.2011, 14:54 | #1 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 73
|
Ошибка при работе с динамическими массивами
Не могу понять в чем проблема.
Есть класс матрицы и функция которая ищет алгебраическое дополнение. В ней непонятная ошибка. Помогите пожалуйста. Заведомо благодарю! Вот Функция и тип: Код:
Код:
|
29.03.2011, 15:29 | #2 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 88
|
в записях как товых нельзя использовать динамические масивы и строки (за исключением когда используется директива $H - объясняет компилятору является ли данная строка динамической, но это уже другой вопрос)..
можно использовать только масивы и строки определенной длины(статические) |
29.03.2011, 15:33 | #3 | |
Пользователь
Регистрация: 06.05.2010
Сообщений: 73
|
Цитата:
|
|
29.03.2011, 15:47 | #4 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 88
|
а текст ошибки можно привести?
|
29.03.2011, 15:58 | #5 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 73
|
Благодарю за внимание.
Я уже нашел причину. Она в потому что массив двумерный но иногда создается как [1..1] то есть с одного элемента. Теперь не знаю что делать с индексацией таких маленьких массивов, тип нужный тот же , индексация одним числом не разрешается компилятором , а двумя вызывает ошибку?????????????? Капець |
29.03.2011, 16:03 | #6 |
Пользователь
Регистрация: 15.05.2010
Сообщений: 88
|
вы описали var M: array of array of real; это значит что каждый елемент динамческого массива M: array так же является динамическим массивом, длину которого надо тоже задать. то есть(например):
setLength(M,20); setLength(m[0],12); то есть нужно еще задать длину для каждого елемента (напрмер цыклом) p.s. хочу добавить об этой строчке: SetLength(result.M,result.i,result. j); я уже немножко позабыл, т.к. давно не делал такого, вобщем еси указать два параметра после переменной-масива, то даная процедура задаст индексацию масива от result.i до result.j (но я точно не помню до result.j или до result.j - 1) Последний раз редактировалось Stilet; 30.03.2011 в 11:57. |
29.03.2011, 19:03 | #7 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Цитата:
|
|
29.03.2011, 20:43 | #8 |
Пользователь
Регистрация: 06.05.2010
Сообщений: 73
|
Все создается правильно!
Проблема в потому что иногда нужно создавать массив с одного элемента, а тогда этот тип не подходит( Может можно как-то обойти ограничение компилятора????? Очень надо! |
29.03.2011, 20:58 | #9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
в Делфи массивы индексируются с нуля.
можно обойти написанием своего класса, и там индексировать с единицы, но это костыль понижающий скорость работы(на пересчет индекса, копейка, но тем не менее) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
29.03.2011, 21:02 | #10 | |
Пользователь
Регистрация: 06.05.2010
Сообщений: 73
|
Цитата:
Проблема в двумерном массиве размерностью один на один |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
процедуры и функции при работе с массивами | irina belka | Помощь студентам | 1 | 12.12.2010 16:33 |
Переполненние стека при работе с массивами | max&ilja | Помощь студентам | 2 | 22.12.2009 22:03 |
Задача с динамическими массивами | _grusha_ | Помощь студентам | 2 | 22.04.2009 19:46 |
Проблема с динамическими массивами | Arassir | Помощь студентам | 2 | 11.11.2008 00:15 |