Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
14-1132752475
Хинт
2005-11-23 16:27
2005.12.18
Баннеры на сайт


1-1132172994
gdaujk
2005-11-16 23:29
2005.12.18
ListView без полос прокрутки


6-1125558278
integery
2005-09-01 11:04
2005.12.18
што значит range check error


8-1114806809
Profi
2005-04-30 00:33
2005.12.18
Изменение размера TImage


2-1132831664
Officeman
2005-11-24 14:27
2005.12.18
Про Слои - компонентов на форме





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский