![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() ![]() |
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет всем.
Такой код: interface Выдаёт ошибку incompatible types, указывая на cr в первом GetMem. Самое удивительное, что этот код компилируется у друга, даже работает (там дальше ещё realloc, но туда просто не доходит), но у него компилятор D7, а у меня 2007. Я пробовал немного изменить код (т.к. несовместимые типы) так: interface (различия под стрелочками) но в этом случае вылетает AV, указывая на первый GetMem. Они, GetMem'ы находятся в конструкторе класса моего, а типы и массивы объявлены вне, может, в этом дело? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Самое удивительное - не то, что код компилируется, а то, что это на фиг не нужно: динамические массивы предполагают использование SetLength (в твоем случае
var), а не ручное выделение памяти. В чем смысл твоего кода? Ну, выделил ты память под первый элемент. Дальше что делать будешь? |
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Про SetLength я знаю, но мне нужная длина не даётся сразу, нужно выделять по одному элементу, допустим в цикле. Или так с помощью SetLength тоже можно?
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
Rian |
![]()
Сообщение
#4
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 394 Пол: Мужской Репутация: ![]() ![]() ![]() |
ну например
setlength(mas,length(mas)+1); а изменять... mas[high(mas)].value; или вести индекс.... Сообщение отредактировано: Rian - 26.02.2010 9:13 -------------------- Objective-C, Unity3d
|
volvo |
![]()
Сообщение
#5
|
Гость ![]() |
Unconnected, можно вопрос? Эти два типа, TOpis и TInfo; как-то связаны между собой?
Кстати, к вопросу о том, что Цитата но в этом случае вылетает AV, указывая на первый GetMem . Знаешь, почему вылетает? Потому что ты описал динамический массив из указателей на структуры, и пытаешься в нулевой элемент этого массива записать адрес выделенной области памяти. Но ведь размер массива равен нулю, то есть, записывать пока некуда. Обращение к нулевому элементу mas до SetLength(mas, ...) невозможно. |
Unconnected |
![]()
Сообщение
#6
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Эти два типа, TOpis и TInfo; как-то связаны между собой? Мм нет, не связаны, и в программе больше ни переменных, ни ещё чего-либо с такими именами нету. Может, в настройках среды я сбил чего-то.. rian, volvo, спасибо, с SetLength работает. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 15.07.2025 2:02 |