Форум: "Основная";
Текущий архив: 2002.12.23;
Скачать: [xml.tar.bz2];
ВнизПодскажите, как правильно сохранять свой объект в файл Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c