program project1;
{$IFDEF MSWINDOWS}{$APPTYPE CONSOLE}{$ENDIF}
uses
SysUtils;
type
TStringObject = class(TObject)
strict private
FAnsiString: AnsiString;
FWideString: WideString;
private
procedure SetAnsiString(const AValue: AnsiString);
procedure SetWideString(const AValue: WideString);
public
constructor Create;
public
property Ansi: AnsiString read FAnsiString write SetAnsiString;
property Wide: WideString read FWideString write SetWideString;
end;
constructor TStringObject.Create;
begin
inherited Create;
FAnsiString := '';
FWideString := '';
end;
procedure TStringObject.SetAnsiString(const AValue: AnsiString);
begin
if (AValue <> '') then
FAnsiString := AValue
else
raise Exception.Create('Can not be Empty!');
end;
procedure TStringObject.SetWideString(const AValue: WideString);
begin
if (AValue <> '') then
FWideString := AValue
else
raise Exception.Create('Can not be Empty!');
end;
var
so: TStringObject;
begin
so := TStringObject.Create;
try
WriteLn('Try');
try
so.Ansi := 'Next raise an exception.';
WriteLn(so.Ansi);
so.Ansi := ''; // *boom*
WriteLn(so.Ansi);
except
WriteLn('Exception');
end;
finally
so.Free;
WriteLn('Finally');
end;
WriteLn('Press Return');
ReadLn;
end.