Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизПроблема с контруктором Найти похожие ветки
← →
alexproger © (2005-11-28 14:49) [0]Всем доброго времени суток.
Возникла проблема. Есть объект, наследник TObject. В этом объекте есть private-свойство PChar. Создаю контруктор с параметром типа PChar. При попытке выделить память под свойство объекта выдаётся ошибка. Код конструктора приведен ниже:
constructor TMyObj.Create(Param:PChar);
var
len:integer;
begin
inherited Create;
Len:=StrLen(Param)+1;
GetMem(Self.FPcharParam,Len); //Вот тут - Access Violation
StrCopy(Self.FPcharParam,Param);
Self.FPcharParam:=Param;
//.....
end;
Param нормально проинициализирован
Заранее благодарен за помощь.
← →
Reindeer Moss Eater © (2005-11-28 14:52) [1]не может быть в этом месте AV.
← →
Reindeer Moss Eater © (2005-11-28 14:53) [2]И зачем вообще явно указывать Self?
← →
Reindeer Moss Eater © (2005-11-28 15:00) [3]А зачем вообще возня с приватным PChar, если ты все равно память рапределяешь под строку?
используй приватное поле string.
← →
Владислав © (2005-11-28 15:26) [4]
TMyObj = class(TObject)
private
FMyParam: string;
//...
end;
constructor TMyObj.Create(Param:PChar);
begin
inherited Create;
FMyParam := Param;
//.....
end;
← →
Leonid Troyanovsky © (2005-11-28 15:56) [5]
> alexproger © (28.11.05 14:49)
> Self.FPcharParam:=Param;
Это совсем лишнее.
Кста, если AV, в самом деле, на GetMem, значит ошибка имела место
несколько раньше (например, невыделенный буфер для API вызова).
--
Regards, LVT.
← →
Владислав © (2005-11-28 15:59) [6]Осмелюсь предположить...
var
MyObj: TMyObj;
// ...
MyObj.Create("String");
← →
alexproger © (2005-11-29 00:56) [7]Доброго времени суток!
Благодарю за помощь. Особая благодарность - Leonid Troyanovsky, т.к. после его совета всё встало на свои места и я сам обнаружил свой "баг", и долго смеялся....
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.013 c