Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Нужно сохранить RichEdit в Stream, произвести изменения и save


dorik ©   (2010-03-18 12:59:00) 

Как правильно сохранить текст RichEdit в Stream (для последующего изменения) а потом сохранить это все в файл?


dorik   (2010-03-19 13:31:00) [1]

У меня вот так:


procedure TForm1.SaveBtnClick(Sender: TObject);
var
 Stream: TFileStream;
begin
 Stream := TFileStream.Create('note.txt', fmOpenWrite);
 Stream.Seek(0,soFromBeginning);
 NoteEdit.Lines.SaveToStream(Stream);
 Stream.Seek(0,soFromBeginning);
 EncryptStream(Stream,Stream.Size,'1234');
 Stream.Free;
end;

procedure TForm1.OpenBtnClick(Sender: TObject);
var
 Stream: TFileStream;
begin
 Stream := TFileStream.Create('note.txt', fmOpenRead);
 Stream.Seek(0,soFromBeginning);
 DecryptStream(Stream,Stream.Size,'1234');
 Stream.Seek(0,soFromBeginning);
 NoteEdit.Lines.LoadFromStream(Stream);
 Stream.Free;
end;


Оригинал:
Текст жирный
Текст курсивный
Текст подчеркнутый
Текст смешанный

Зашифровал:
ж]\x1j§б+дI>p°\x1lпфcpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset204 Tahoma;}{\f1\fnil Tahoma;}}
\viewkind4\uc1\pard\f0\fs16\'d2\'e5\'ea\'f1\'f2 \'e6\'e8\'f0\'ed\'fb\'e9
\par \'d2\'e5\'ea\'f1\'f2 \'ea\'f3\'f0\'f1\'e8\'e2\'ed\'fb\'e9
\par \'d2\'e5\'ea\'f1\'f2 \'ef\'ee\'e4\'f7\'e5\'f0\'ea\'ed\'f3\'f2\'fb\'e9
\par \'d2\'e5\'ea\'f1\'f2 \'f1\'ec\'e5\'f8\'e0\'ed\'ed\'fb\'e9
\par \f1
\par }

Расшифровал:
ж]\x1j§б+дI>p°\x1lпфcpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset204 Tahoma;}{\f1\fnil Tahoma;}}
\viewkind4\uc1\pard\f0\fs16\'d2\'e5\'ea\'f1\'f2 \'e6\'e8\'f0\'ed\'fb\'e9
\par \'d2\'e5\'ea\'f1\'f2 \'ea\'f3\'f0\'f1\'e8\'e2\'ed\'fb\'e9
\par \'d2\'e5\'ea\'f1\'f2 \'ef\'ee\'e4\'f7\'e5\'f0\'ea\'ed\'f3\'f2\'fb\'e9
\par \'d2\'e5\'ea\'f1\'f2 \'f1\'ec\'e5\'f8\'e0\'ed\'ed\'fb\'e9
\par \f1
\par }

Всегда в конечном результате шифрует только часть строки, при этом если сделать так:

var
 Stream: TFileStream;
begin
 Stream := TFileStream.Create('note.txt', fmOpenRead);
 DecryptStream(Stream,Stream.Size,'1234');
 Stream.Free;
//***
var
 Stream: TFileStream;
begin
 Stream := TFileStream.Create('note.txt', fmOpenRead);
 EncryptStream(Stream,Stream.Size,'1234');
 Stream.Free;


т.е. не грузить в ричедит, то шифрование проходит успешно.

Вот модуль шифрования которым я пользуюсь:
http://www.delphisources.ru/pages/faq/base/rc6_encryption.html


Loginov Dmitry   (2010-03-18 23:35:00) [2]


> Так работать, наверное будет, ну тогда зачем поток?


ТЗ автора, однако :)


И. Павел   (2010-03-18 23:03:00) [3]

Хотя нет, все же так:

RichEdit.СохранитьВПоток
Поток.СохранитьВФайл

Поток.ЗагрузитьИзФайла
MyStream.Seek(0, soFromBeginning);
RichEdit.ЗагрузитьИзПотока


И. Павел   (2010-03-18 22:51:00) [4]


> Поток.СохранитьВФайл
>
> Поток.ЗагрузитьИзФайла

Этого не заметил. Так работать, наверное будет, ну тогда зачем поток?


И. Павел   (2010-03-18 22:48:00) [5]


> RichEdit.СохранитьВПоток
> Поток.СохранитьВФайл
>
> Поток.ЗагрузитьИзФайла
> RichEdit.ЗагрузитьИзПотока


Забыли кое что: MyStream.Seek(0, soFromBeginning);
Думаю, в этом месте у автора и возникла сложность...


Loginov Dmitry   (2010-03-18 22:17:00) [6]


> Как правильно сохранить текст RichEdit в Stream (для последующего
> изменения) а потом сохранить это все в файл?


RichEdit.СохранитьВПоток
Поток.СохранитьВФайл

Поток.ЗагрузитьИзФайла
RichEdit.ЗагрузитьИзПотока


ИМХО нужно установить plaintext в true.
По умолчанию все форматирование сохраняется, plaintext настроен правильно, менять не следует.


Плохиш   (2010-03-18 13:53:00) [7]


> dorik   (18.03.10 12:59)
>
> Как правильно сохранить текст RichEdit в Stream

Критерии "правильно" не озвучены.


И. Павел   (2010-03-18 13:49:00) [8]

ИМХО нужно установить plaintext в true. Тогда в свойстве Text будет полное содержание rtf документа, и его можно писать куда угодно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо