Главная страница
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.022 c
14-1100055330
Думкин
2004-11-10 05:55
2004.11.28
С днем рождения!


1-1100594952
hgd
2004-11-16 11:49
2004.11.28
Подскажите компонент или как?


3-1098992137
GanibalLector
2004-10-28 23:35
2004.11.28
результат в ХП


3-1099475816
Uran
2004-11-03 12:56
2004.11.28
Сортировка в Interbase


14-1100104995
Александр1
2004-11-10 19:43
2004.11.28
Сломал хард на 200 ГБ