Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Внизкласс TString Найти похожие ветки
← →
C55 (2004-08-17 14:59) [0]В своё время возникла необходимость в написание такого класса:
TString = class
private
FData:string;
function GetData:string;
procedure SetData(AData:string);
public
property Data:string read GetData write SetData;
constructor Create(AData:string);
end;
implementation
var S:TString;
constructor TString.Create(AData:string);
begin
SetData(AData);
end;
function TString.GetData:string;
begin
Result:=FData;
end;
procedure TString.SetData(AData:string);
begin
Pointer(FData):=nil;
FData:=AData;
end;
При созданиии нового объекта, конструктором Create (вызывет метод SetData), и последующем доступе к свойству Data - всё в порядке.
Однако, при изменении свойства Data (вызывает тот же метод SetData), всё проходит успешно, но если потом обратиться S.Data, то получаю прежнее значение (указанное при создании объекта), т.е.
S:=TString.Create("aaa");
ShowMessage(S.Data); {"aaa"}
S.Data:="bbb";
ShowMessage(S.Data); {"aaa"}
А если в процедуре SetData убрать Pointer(FData):=nil, то при присваивании сыпется Access Violantion.
В чём дело?? Что не так? Самое интересное, что это вроде работало (я это писал давно), но потом перестало. Что и где я мог сломать?
← →
Digitman © (2004-08-17 15:06) [1]потому что ерундистикой занялся
куда уж проще :
procedure TString.SetData(AData:string);
begin
FData:=AData;
end;
← →
Anatoly Podgoretsky © (2004-08-17 15:09) [2]Никакой новой функциональности по отношению с string не наблюдается, кроме лишних вызовов и перерасхода памяти. Особенно на методе GetData
← →
TUser © (2004-08-17 15:09) [3]У меня нормально все работает, вне зависимости от того, заремил я или нет. На самом деле непонятно, зачем нужно
Pointer(FData):=nil,
равно как зачем нужен такой класс.
← →
C55 (2004-08-17 15:09) [4]Я ж говорю, тогда будет ACCESS VIOLANTION, при любом присваивании!
Хоть я
procedure TString.SetData(AData:string);
begin
FData:="ds,ajdklas";
end;
напишу.
← →
TUser © (2004-08-17 15:10) [5]Не будет
← →
Digitman © (2004-08-17 15:11) [6]
> C55 (17.08.04 15:09) [4]
> Я ж говорю, тогда будет ACCESS VIOLANTION, при любом присваивании!
чушь городишь
← →
C55 (2004-08-17 15:12) [7]Тогда вызывайте дурку..
Ну так и есть, блин.
← →
Digitman © (2004-08-17 15:20) [8]
> Тогда вызывайте дурку
уже ... не уходи никуда, жди ... позвонят в дверь
← →
Ega23 © (2004-08-17 15:25) [9]Ну так и есть, блин.
А создаёшь ли ты её, приятель? :о)
← →
Думкин © (2004-08-18 06:50) [10]И тишина.
← →
KSergey © (2004-08-18 07:17) [11]Ну так позвонили, видимо :(
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c