Форум: "Компоненты";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизПроблема с TFileStream Найти похожие ветки
← →
Schooler (2005-09-09 15:19) [0]Уважаемые Мастера!
Создаю компонент, который имеет свойство Active:boolean.
Если Active:=true, то надо открыть файл ExternalFile в режиме ЧтениеЗапись.
Если Active:=false, то соединение через FileStream обрывается.
В procedure TTestFStream.SetActive(const Value: boolean);
возникает AV, причем со второй попытки: как в Design так и в Run-Time.
Что делаю не так?
unit TestFStream;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TTestFStream = class(TComponent)
private
FExternalFile: string;
FActive: boolean;
procedure SetExternalFile(const Value: string);
procedure SetActive(const Value: boolean);
{ Private declarations }
protected
{ Protected declarations }
fS:TFileStream;
public
{ Public declarations }
constructor create(AOwner:TComponent);override;
destructor destroy; override;
published
{ Published declarations }
property Active: boolean read FActive write SetActive;
property ExternalFile:string read FExternalFile write SetExternalFile;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Standard", [TTestFStream]);
end;
{ TTestFStream }
procedure TTestFStream.SetActive(const Value: boolean);
begin
if fS<>Nil
then fS.Free;
if Value
then fS:=TFileStream.Create(fExternalFile,fmOpenReadWrite);
FActive := Value;
end;
procedure TTestFStream.SetExternalFile(const Value: string);
begin
FExternalFile := Value;
end;
constructor TTestFStream.create(AOwner:TComponent);
begin
inherited create(AOwner);
FActive:=false;
fS:=nil;
end;
destructor TTestFStream.destroy;
begin
fs.Free;
inherited destroy;
end;
end.
← →
Stakan © (2005-09-09 15:44) [1]
>if fS<>Nil
> then fS.Free;if fS<>Nil then
FreeAndNil(fS);
← →
Schooler (2005-09-09 15:55) [2]To Stakan
Спасибо, работает!
У меня 4 книги по Дельфе, но везде fS.Free. Странно...
← →
Плохиш © (2005-09-09 16:07) [3]
> Schooler (09.09.05 15:55) [2]
> To Stakan
>
> Спасибо, работает!
> У меня 4 книги по Дельфе, но везде fS.Free. Странно...
А логически помыслить, если проверяешь переменную на nil, то и после удаления надо ей nil присваивать.
← →
TStas © (2005-09-11 02:41) [4]Или сразу FReeAndNil(FS)
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c