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

Вниз

Проблема с 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.035 c
15-1139052861
Kerk
2006-02-04 14:34
2006.03.05
Оценка качества создания сайта


2-1140053407
HF-Trade
2006-02-16 04:30
2006.03.05
В двух словах не скажеш...


4-1134719932
Kot_
2005-12-16 10:58
2006.03.05
Бездействие пользователя в программе.


2-1140360239
Godness
2006-02-19 17:43
2006.03.05
директива private


1-1138637444
lsp
2006-01-30 19:10
2006.03.05
отображение даты, в ZeosDBO 6.5.0 под Делфи для PostgresSQL