Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.11.28;
Скачать: CL | DM;

Вниз

TList и Record   Найти похожие ветки 

 
Pentium133 ©   (2004-11-09 13:12) [0]

У меня тут такая проблема возникла:
Есть объект TList в котором хранятся указатели на на некий Record.
Такое объявление:
 
 TGridColumn = record
   Str1:    string[50];
   Str1:    string[50];
   Visibl:   boolean;
 end;

Все работает отлично.

Но мне нужно такое
 
 TGridColumn = record
   Str1:    string;
   Str1:    string;
   Visibl:   boolean;
 end;


А вот сдесь возникают ошибки:

GetMem(p,SizeOf(TGridColumn));
i:= FGridColumns.Add(p); // var FGridColumns: TList;

TGridColumn(FGridColumns[i]^).Str1:= "123123123";
TGridColumn(FGridColumns[i]^).Str2:= "123123";
   
Ошибка в последней строке приведенного кода. Access violation.... Read of adress ....
Как дальше жить?


 
panov ©   (2004-11-09 13:15) [1]

var
 p: TGridColumn;
begin
 New(p);
 ...
 Dispose(p);


 
panov ©   (2004-11-09 13:17) [2]

Прошу прощения, ошибся.
Правильно так:
type
 PGridColumn: ^TGridColumn;
var
p: PGridColumn;
begin
New(p);
...
Dispose(p);


 
Pentium133 ©   (2004-11-09 13:23) [3]

Спасибо, разобрался.
Но почему не работало с GetMem?


 
wicked ©   (2004-11-09 13:36) [4]


> Но почему не работало с GetMem?

могу предположить, что не работало из-за того, что GetMem не инициализирует выделенный блок... посему и Str1, и Str2 ссылались куда-то в космос, а при присваивании эти "космические" ссылки и давали AV....

ЗЫ гадкий compiler magic в delphi... :)



Страницы: 1 вся ветка

Текущий архив: 2004.11.28;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.025 c
3-1098972737
Vital
2004-10-28 18:12
2004.11.28
DBExpress и больщое кол-во транзакций


4-1098012867
volser
2004-10-17 15:34
2004.11.28
Генерация GUID


10-1068562249
AlexanderSK
2003-11-11 17:50
2004.11.28
В каком режиме синхронном или асинхронным работает DataSnap?


4-1097843275
Charly22
2004-10-15 16:27
2004.11.28
Скрытые ключи реестра


14-1099683570
Piter
2004-11-05 22:39
2004.11.28
Непонятна работа GetWindowText