Главная страница
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.017 c
1-74727
бобёр
2002-12-13 13:25
2002.12.23
Form


3-74626
XM-AD
2002-12-05 14:40
2002.12.23
В FireBird не срабатывают External вызовы!?


14-74904
Arhangel
2002-12-01 13:02
2002.12.23
Зарание извеняюсь за это сообщение!


1-74767
Андрей М
2002-12-10 23:55
2002.12.23
Фейс ХР


4-75046
dokkk
2002-11-09 23:07
2002.12.23
Как по ID процесса определить FileName