Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.009 c
14-74977
Anatoly Podgoretsky
2002-12-02 07:36
2002.12.23
Именинники 2 декабря


6-74882
Rob
2002-10-28 10:23
2002.12.23
D7 и TClient&Server Socket


1-74738
Snap
2002-12-14 15:24
2002.12.23
какже работать с текстовыми файлами? -ответ


7-75016
angelcom
2002-10-20 08:03
2002.12.23
вопрос о принтерах


3-74617
TVV
2002-12-05 13:02
2002.12.23
Blob поля через IBQuery запрос





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский