| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как заменить TFileStream на TStringStream |
| Автор: aleks0506 29.11.2012, 22:06 |
| Здравствуйте Уважаемые! Помогите решить, казалось бы, простую задачку: есть такая библиотека DCPcrypt (для работы с шифрованием), в ней есть функция для шифрования файла, выглядит она так: function TForm1.EncryptFile(Source, Dest, Password: string): Boolean; var DCP_rijndael1: TDCP_rijndael; SourceStream, DestStream: TFileStream; begin Result := True; try SourceStream := TFileStream.Create(Source, fmOpenRead); DestStream := TFileStream.Create(Dest, fmCreate); DCP_rijndael1 := TDCP_rijndael.Create(Self); DCP_rijndael1.InitStr(Password, TDCP_sha1); DCP_rijndael1.EncryptStream(SourceStream, DestStream, SourceStream.Size); DCP_rijndael1.Burn; DCP_rijndael1.Free; DestStream.Free; SourceStream.Free; except Result := False; end; end; Все бы хорошо, если бы не одно БОЛЬШОЕ НО - на вход ЭТОЙ функции нужно подавать ФАЙЛ, а мне нужно подать ОБЪЕКТ! (т.к. данные которые нужно зашифровать находятся в объекте TSringList) я попытался переделать эту функцию с использованием TStringStream - вот что получилось: function TForm1.EncryptFileToStream(Source, Password: string): Boolean; var DCP_rijndael1: TDCP_rijndael; DestStream: TFileStream; stream: TStringStream; begin Result := True; try DestStream := TFileStream.Create(Source, fmOpenRead); stream:=TStringStream.Create(''); tstTV.SaveToStream(stream); // tstTV это глобальный объект-содержит список строк stream.Position := 0; DCP_rijndael1 := TDCP_rijndael.Create(Self); DCP_rijndael1.InitStr(Password, TDCP_sha1); DCP_rijndael1.EncryptStream(stream, DestStream, stream.Size); DCP_rijndael1.Burn; DCP_rijndael1.Free; stream.Free; DestStream.Free; except Result := False; end; end; Вроде все правильно! Ошибок не выдает! Код выполняется - но файл даже НЕ СОХРАНЯЕТСЯ...(даже не создается) (все проверил - данные в объекте tstTV есть(набор строк)) Как думаете, в чем может быть проблема? Поделитесь мыслями, умоляю! |
| Автор: Poseidon 29.11.2012, 22:36 |
| Вопрос, зачем шифровать объект? |
| Автор: kami 29.11.2012, 22:54 |
Если бы это был SourceStream, то вопросов не было бы. А так: 1. Открытие только на чтение, что автоматически не дает ничего записать в этот файловый поток. 2. Опять-таки, открытие только на чтение - а если файла нет, кто его создаст? |
| Автор: aleks0506 30.11.2012, 07:06 |
| Вопрос решен! Kami - Огромное СПАСИБО!) p.s. загвоздка действительно была в том, что открытие файла происходило только на чтение... (стыдно мне - за такую невнимательность) |