Текущий архив: 2004.06.13;
Скачать: CL | DM;
ВнизReadCоmponent и WriteComponent Найти похожие ветки
← →
ZHK © (2004-06-02 08:27) [0]Господа, помогите разобраться. Привожу две процедуры. Одна сохраняет страницы из объекта TPageControl, а вторая, соответственно, загружает из туда из файла. Сохраняется все отлично, а при открытии возникает ошибочка Class not found. Очевидно, что я чего-то не учел, только что? Подскажите, плз. Буду признателен за любую информацию.
procedure TForm6.Button1Click(Sender: TObject);
var
ms:TMemoryStream;
fs:TFileStream;
I:Integer;
begin
if SaveDialog1.Execute then
begin
ms:=TMemoryStream.Create;
fs:=TFileStream.Create(SaveDialog1.FileName,fmCreate or fmOpenWrite);
for I:=0 to PageControl1.PageCount-1 do
begin
ms.WriteComponent(TControl(PageControl1.Pages[I]));
ms.Position:=0;
if UpperCase(ExtractFileExt(SaveDialog1.FileName))=".TOB" then
ObjectBinaryToText(ms,fs)
else
fs.CopyFrom(ms,ms.Size);
end;
fs.Free;
ms.Free;
end;
end;
procedure TForm6.Button6Click(Sender: TObject);
var
fs:TFileStream;
ms:TMemoryStream;
C:TComponent;
begin
while PageControl1.PageCount>0 do
PageControl1.Pages[0].Free;
if OpenDialog1.Execute then
begin
fs:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
ms:=TMemoryStream.Create;
while fs.Position<fs.Size do
begin
C:=TTabSheet.Create(PageControl1);
ms.Clear;
if UpperCase(ExtractFileExt(OpenDialog1.FileName))=".TOB" then
begin
ObjectTextToBinary(fs, ms);
ms.Position:=0;
ms.ReadComponent(C);
end
else
fs.ReadComponent(C);
TTabSheet(C).PageControl:=PageControl1;
end;
ms.Free;
fs.Free;
end;
end;
← →
Digitman © (2004-06-02 08:38) [1]см. RegisterClass()
← →
ZHK © (2004-06-02 09:14) [2]Да, понятно. Но если я только что, в течении одного сеанса, не закрывая программы, записываю компонент в файл, то,я думаю, это означает, что классы уже зарегистрированы. Не так ли? А при попытке чтения, тут же, оказывается, что нет. Или я все-таки не прав?
← →
Digitman © (2004-06-02 09:36) [3]Call RegisterClass to register a class with the streaming system. Form classes and component classes that are referenced in a form declaration (instance variables) are automatically registered. Any other classes used by an application must be explicitly registered by calling RegisterClass if instances are to be saved.
Once classes are registered, they can be loaded or saved by the VCL streaming system. GetClass returns nil when passed the class name of an unregistered class, and FindClass raises an exception for unregistered classes.
← →
ZHK © (2004-06-02 10:10) [4]Ага. Понял! Работает!
Страницы: 1 вся ветка
Текущий архив: 2004.06.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.025 c