Главная страница
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.028 c
6-1132055270
Alkid
2005-11-15 14:47
2006.03.05
Как узнать локальный IP


15-1139476530
PVOzerski
2006-02-09 12:15
2006.03.05
Тревожный слух о Delphi - правда ли?


1-1138557975
Alik7107
2006-01-29 21:06
2006.03.05
Сдвиг image вправо в TComboBoxEx


15-1139565712
Koala
2006-02-10 13:01
2006.03.05
Планшет? какой выбрать....?


15-1139547961
QwertyKz
2006-02-10 08:06
2006.03.05
Коврик для мышки весом 1 кг