Техническая поддержка :

Современные решения

для защиты Windows программ

и восстановления исходного кода

Обсуждение программирования на Delphi в конференции ru.delphi


Чтение компонента из потока (TMemoryStream)

From: "aleXander Olegovich Fedorov"

Hi,

Помогите понять, почему чтение компонента из потока не получается,
хотя запись в поток проходит нормально.
У меня есть компонент, унаследованный от TComponent, к которому
добавлено несколько свойств (строки, целые числа, и тп)
Чтение выдает ошибку Read error. Вот примерный код:

TQuality = (qUnknown, qGood, qBad);

TMyComp = class(TComponent)
protected
FQuality:TQuality;
FNotes:string;
FNumber:Integer;
published
property Quality:TQuality read FQuality write FQuality;
property Notes:string read FNotes write FNotes;
property Number:Integer read FNumber write FNumber;
end;

Пишу так:

for i:=0 to MCList.Count-1 do ....
MemStream.WriteComponent(TMyComp);
MemStream.SaveToFile('C:\_stream');


А читаю так (выдается EClassNotFound "Class TMyComp not found"):

MemStream.LoadFromFile('C:\_stream');
MemStream.Seek( 0, soFromBeginning);
MyComp := TMyComp( MemStream.ReadComponent(nil) );
while assigned(MyComp) do MCList.AddObject( GetID(MyComp), TObject(MyComp));

Что это значит? Как прочитать потомка TComponent?

Если пишу вместо nil
MyComp := TMyComp( MemStream.ReadComponent(MyComp) );
то выдает ошибку EReadError "Property Quality does not exists".
:(

есть у кого-нибудь примерчик чтения потомка TComponent с добавленными свойствами, которые сохраняются?

xof

* Origin: Demos online service (2:5020/400)


Word Excel

Здравствуй, Dmitry Starostov.

DS> Как при распечатке XLS или DOC добавить имя файла на первом листе в
DS> верху ? Причем не сдвигая текста ?

Просто поместить имя файла в документ, в нужное место. В worde для этого даже макросы существуют, а вот "чтобы не сдвигать текст" - это или в колонтитулы или в рамочку с текстом, но не забыть указать для нее нужные параметры обтекания текста и т.п.

Roman Kanygin
* Origin: Altair Station (2:5030/809)


ReadOnly на все контpолы на фоpме

Здравствуй, Rouslan Ibraguimov.

RI> Каким обpазом сделать чтобы все Edit'ы, Memo и пpоч. компоненты стали
RI> ReadOnly? Пpосто у меня их на фоpме штук 20 и писать на все ReadOnly
RI> := True (или Enabled := False) немного сложно...

Можно примерно так:

procedure SetReadOnly_Test(Form:TForm; Flag:boolean);
var
i:integer;
begin
with Form do
For i:=0 to ComponentCount-1 do
begin
if Components[i] is TCustomEdit then
TCustomEdit(Components[i]).ReadOnly:=Flag;
end;
end;

Roman Kanygin
* Origin: Altair Station (2:5030/809)


Чтение компонента из потока (TMemoryStream)

From: "Anthony Volkov"

Доброго здоровья, aleXander!
Помнится, Вы писали когда-то Mon, 5 Sep 2005 21:19:58 +0000 (UTC):

aOF> Помогите понять, почему чтение компонента из потока не получается,
aOF> хотя запись в поток проходит нормально.
aOF> У меня есть компонент, унаследованный от TComponent, к которому
aOF> добавлено несколько свойств (строки, целые числа, и тп)
aOF> Чтение выдает ошибку Read error. Вот примерный код:

Пропустим для ясности...

aOF> for i:=0 to MCList.Count-1 do ....
aOF> MemStream.WriteComponent(TMyComp);
aOF> ....
aOF> MemStream.SaveToFile('C:\_stream');

Снова пропустим...

aOF> MemStream.LoadFromFile('C:\_stream');
aOF> MemStream.Seek( 0, soFromBeginning);
aOF> MyComp := TMyComp( MemStream.ReadComponent(nil) );
aOF> while assigned(MyComp) do MCList.AddObject( GetID(MyComp),
aOF> TObject(MyComp));

А зачем такие сложности?

Hе работает что-то вроде нижеследующего?

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
FS : TFileStream;
begin
FS := TFileStream.Create('Test.txt', fmCreate);
FS.WriteComponent(Form1);
FS.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
FS : TFileStream;
begin
FS := TFileStream.Create('Test.txt', fmOpenRead);
FS.ReadComponent(Form1);
FS.Free;
end;

Естественно, перед WriteComponent и ReadComponent компонент Form1 должен
быть создан.

С наилучшими пожеланиями, Anthony Volkov.
E-mail: lab531 собачучка dst точечка khv еще одна ru

"Глупость не освобождает от необходимости думать."
Станислав Ежи Лец


* Origin: REDCOM News Server (2:5020/400)


Чтение компонента из потока (TMemoryStream)

From: "Anthony Volkov"

Доброго здоровья, aleXander!
Помнится, Вы писали когда-то Mon, 5 Sep 2005 21:19:58 +0000 (UTC):

aOF> есть у кого-нибудь примерчик чтения потомка TComponent с добавленными
aOF> свойствами, которые сохраняются?

А вот еще ссылка:
www.codenet.ru/progr/delphi/stat/XML-Serialize-Delphi.php

С наилучшими пожеланиями, Anthony Volkov.
E-mail: lab531 собачучка dst точечка khv еще одна ru

"Глупость не освобождает от необходимости думать."
Станислав Ежи Лец


* Origin: REDCOM News Server (2:5020/400)


Re: Как следить за диpектоpией?

From: "Youra G."

Eugene Kasnerik wrote:
> RTFM FindFirstChangeNotification, FindNextChangeNotification
>
> WBR, Eugene mailto: www.tld.by [@] gmail*com

Всем большое спасибо. Это именно то, что нужно.
* Origin: Unknown (2:5020/400)


Модемный конект


Приветствую тебя, All!!!

Требуется организовать связь используя
модемный прозвон, наподобие как это реализовано
в стандартном HyperTerminal.

Каким образом это можно осуществить?
Существуют ли какие-либо компоненты?

Буду также признателен _работающим_ ссылкам
на исходники, документацию и компоненты по данной части.

Заранее благодарен.

PS: Господа! Hе надо посылать меня гуглить
и яндексить - так как у меня в данное
время нет возможности вылезти самому в интернет.


Удачи тебе, All, я ещё вернусь!

--
С уважением,
Макс Комогоров

Я и мои соседи слyшаем: *_Жасмин - Долгие Дни_*
Web: web-script.narod.ru ICQ: 278514048

* Origin: Hе стоит жить пошло. (2:5038/51.75)


TServersocket & TClientSocket


Приветствую тебя, All!!!

В Delphi 7, как известно, эти компоненты бесследно исчезли.
Существует ли их старая/новая реализация для Delphi 7?

Если у кого есть этот компонент, большая просьба
прислать его мне нетмылом.

Заранее благодарен.

Удачи тебе, All, я ещё вернусь!

--
С уважением,
Макс Комогоров

Я и мои соседи слyшаем: *_On Line - Едy Я Hа Моpе_*
Web: web-script.narod.ru ICQ: 278514048

* Origin: Думать вредно только дуракам. (2:5038/51.75)


FAQ-Сервера.


Приветствую тебя, All!!!

Существуют ли в FIDO тематические FAQ-Серверы
посвященные Delphi?

Можно в студейу адреса всех около-delphi`йских
ресурсов в FIDO.


Удачи тебе, All, я ещё вернусь!

--
С уважением,
Макс Комогоров

Я и мои соседи слyшаем: *_Жасмин - Индийское Диско_*
Web: web-script.narod.ru ICQ: 278514048

* Origin: Hе стоит жить пошло. (2:5038/51.75)


Системное расширение - Шпион


Приветствую тебя, All!!!

Моё почтение, ещё раз.

Можно ли реализовать клавиатурный шпион
посредством внедрения в систему одной библиотеки,
и регистрации ее в качестве расширения системы?

Если да, то можно подробнее описать как это сделать?
Hамёк на функцию не актуален, требуется обьяснение.


Удачи тебе, All, я ещё вернусь!

--
С уважением,
Макс Комогоров

Я и мои соседи слyшаем: *_Аpиана - Двадцать Минyт До Рассвета_*
Web: web-script.narod.ru ICQ: 278514048

* Origin: Думать вредно только дуракам. (2:5038/51.75)



Назад Содержание Вперед