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

Вниз

Подскажите, как правильно сохранять свой объект в файл   Найти похожие ветки 

 
Fernis ©   (2002-12-13 04:30) [0]

Подскажите, как правильно сохраняется и востанавливается в/из файла компонент.
Пишу вот такой компонент

TMyComp = class (TComponent)
private
FMyString: String;
FSound: TMySound;
protected
public
procedure Assign(Source: TPersistent); override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Sound :TabcWave read FSound write FSound;
property Str :String read FMyString write FMyString;
end;

var
Form1: TForm1;
MyComp: TMyComp;

implementation
{$R *.dfm}

procedure TMyComp.Assign(Source: TPersistent);
begin
if Source is TMyComp then begin
inherited Assign(Source);
FSound:= TMyComp (Source).FSound;
end;
end;

constructor TMyComp.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Sound:= TabcWave.Create(Self);
end;

destructor TMyComp.Destroy;
begin
Sound.Free;
inherited Destroy;
end;

и все мои попытки сохранить этот компонент в файл и затем восстановить его, используя примеры из хелпа дельфей, никак не получаются. Сохраняется почти пустой файл (в 4 байта). Причем функция SizeOf показывает, что это так и есть, хотя я перед этим помещаю в Sound звук методом LoadFromFile и его можно воспроизвести из компоненты. Но при сохранении ни от него ни от прочих простых пропертей следов не остается.
Подскажите, как его туда сохранить а потом загрузить (в следующий сеанс)?


 
Юрий Зотов ©   (2002-12-13 12:18) [1]

1. Чтение/запись - Read/WriteComponentResFile.

2. По умолчанию сохраняться будут только published-свойства. Если нужно сохранять другие, заместите DefineProperties и напишите Read/Write для каждого такого свойства. Примеры см. в VCL.

3. SizeOf(объект) всегда дает 4 байта, для любого объекта. И это правильно, потому что так оно и есть.

4. Метод Assign написан принципиально неверно и приведет к серьезными ошибками (утечка памяти, Access Violation).

5. Объявление свойства Sound тоже принципиально неверно и приведет к тем же ошибкам.



Страницы: 1 вся ветка

Текущий архив: 2002.12.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
1-74655
u96
2002-12-12 22:23
2002.12.23
TOpenPictureDialog


14-74980
Dracula
2002-12-03 16:17
2002.12.23
Установка Delphi...


1-74671
^Sanya
2002-12-12 23:28
2002.12.23
ActionManager...


14-74895
Дмитрий К.К.
2002-12-04 14:03
2002.12.23
Текстовый редактор


8-74848
МитяЙ2
2002-09-01 07:48
2002.12.23
Как узнать какой цвет прозрачный у объекта TIcon?