IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Проблема с GetMem
сообщение
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Такой код:

interface
type TSost = (stRoad,stZnak);

TOpis = record
width,height:byte;
typ:TSost;
end;

TInfo = record
typ:TSost;
nomt:byte;
sv:string;
x,y,widthmt,heightmt,widthpt,heightpt:integer;
end;

Implementation

var cr:array of TOpis;
info:array of TInfo;

TLine_road.create;
begin
getmem(cr,sizeof(TOpis));
getmem(info,sizeof(TInfo));
end.


Выдаёт ошибку incompatible types, указывая на cr в первом GetMem. Самое удивительное, что этот код компилируется у друга, даже работает (там дальше ещё realloc, но туда просто не доходит), но у него компилятор D7, а у меня 2007. Я пробовал немного изменить код (т.к. несовместимые типы) так:

interface
type TSost = (stRoad,stZnak);

TOpis = record
width,height:byte;
typ:TSost;
end;

TInfo = record
typ:TSost;
nomt:byte;
sv:string;
x,y,widthmt,heightmt,widthpt,heightpt:integer;
end;

Implementation

var cr:array of ^TOpis; //<--
info:array of ^TInfo; //<--

TLine_road.create;
begin
getmem(cr[0],sizeof(TOpis)); //<--
getmem(info[0],sizeof(TInfo));//<--
end.

(различия под стрелочками)

но в этом случае вылетает AV, указывая на первый GetMem. Они, GetMem'ы находятся в конструкторе класса моего, а типы и массивы объявлены вне, может, в этом дело?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 6:42
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name