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

Вниз

Проблема с контруктором   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.062 c
2-1133174869
Stas_on
2005-11-28 13:47
2005.12.18
Рисование стрелок под любым углом


2-1133377141
kraim
2005-11-30 21:59
2005.12.18
ID жесткого


2-1133348698
LG
2005-11-30 14:04
2005.12.18
Итерфейс в стиле Office


6-1126192068
integery
2005-09-08 19:07
2005.12.18
помогите разобратса из TcpServer TcpClient


14-1132667294
Opilki_Inside
2005-11-22 16:48
2005.12.18
Алгоритм получение уникального номера железа