Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-74844
Vit@ly
2002-12-08 17:14
2002.12.23
Проблема с Memo в XP и Win2000


14-74982
AFrolov
2002-12-03 12:57
2002.12.23
Про мат. статистику


1-74632
Gayrus
2002-12-12 06:13
2002.12.23
Запуск EXE из EXE


1-74840
Сутковой Вадим
2002-12-11 21:22
2002.12.23
Энгл Рус


4-75038
eruc
2002-11-10 07:06
2002.12.23
блокируем все КЛАВИШИ




   Наверх