Главная страница
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.021 c
14-74932
Tihas
2002-11-24 02:22
2002.12.23
Кто нибудь знает попуярную игру написаную с помощью дельфи?


1-74667
Supreme
2002-12-13 09:59
2002.12.23
Как загрузить все значения из INI-файла в Listbox1?


14-74900
vopros
2002-12-03 17:15
2002.12.23
Как вы расслабляетесь вечером, после работы?


3-74548
De2
2002-12-04 00:03
2002.12.23
о формате dbase IV


14-74979
seacat
2002-12-03 12:40
2002.12.23
inaccessible value во время отладки