Главная страница
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.039 c
2-1139832537
VikSel
2006-02-13 15:08
2006.03.05
Запуск приложения на других машинах


1-1138882857
DVM
2006-02-02 15:20
2006.03.05
ReportMemoryLeaksOnShutdown в Delphi2006 глюки?


2-1139770997
LordOfRock
2006-02-12 22:03
2006.03.05
Вопрос по классам. Вылезает Abstract Error


15-1139600197
Anton Shestakov
2006-02-10 22:36
2006.03.05
Работа с help-ами


2-1140021977
nirvana
2006-02-15 19:46
2006.03.05
Как присвоить значение DBLookupCombobox?