Главная страница
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.046 c
2-1140273551
Pit
2006-02-18 17:39
2006.03.05
Подменю в PopupMenu


1-1138967347
Darvin
2006-02-03 14:49
2006.03.05
Запретить закрытие не основной формы по Alt-F4


2-1139987098
Officeman
2006-02-15 10:04
2006.03.05
Читаем файл Read(f1, Ch)


15-1139475213
NeyroSpace
2006-02-09 11:53
2006.03.05
А не провести ли нам культурное мероприятие? Вернисаж господа!


2-1139892953
Bolbes
2006-02-14 07:55
2006.03.05
MS SQL