Форум: "Потрепаться";
Текущий архив: 2004.11.28;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.038 c