![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно сохранить 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 документа, и его можно писать куда угодно.