Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.11.2008, 22:54
Quark Quark вне форума
Прохожий
 
Регистрация: 09.11.2008
Сообщения: 3
Репутация: 10
По умолчанию Как можно открывать зашифрованные файлы?

Имеется много файлов(html страничек). Их надо зашифровать(это я могу придумать: сдвиг байтов; умножение, сложение байтов; кодирование по книге). Теперь проблема: расшифровывать мне надо их слету, без создания дешифрованной копии. И не просто расшифровать(изменить байты, можно и в памяти), а сделать расшифрованный файл доступным, как объект html. Т.е. доступным например для методов браузера Delphi. Уверен что должен быть простой способ. -)


А может и нет. Почитал FAQ, да можно открыть поток изменить его и даже подсунуть некторым функциям, но как быть если навигатор браузера требует в виде параметра string(путь к файлу).

Последний раз редактировалось Quark, 09.11.2008 в 23:13.
Ответить с цитированием
  #2  
Старый 10.11.2008, 08:56
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Если применять для отображения страниц TWebBrowser, то выкрутиться можно. Например так:
Код:
  if WB.Document = nil then
    WB.Navigate('about:blank');
  v := VarArrayCreate([0, 0], varVariant);
  v[0] := S;
  (WB.Document as IHTMLDocument2).Write(PSafeArray(TVarData(v).VArray));
  (WB.Document as IHTMLDocument2).Close;
Где WB - TWebBrowser; S - строка, содержащая html страницу.
Необходимые модули: MSHTML, ActiveX.
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #3  
Старый 22.11.2008, 02:29
Quark Quark вне форума
Прохожий
 
Регистрация: 09.11.2008
Сообщения: 3
Репутация: 10
По умолчанию

Не понял... -( Можно подробней? -)
if WB.Document = nil then WB.Navigate('about:blank');
v := VarArrayCreate([0, 0], varVariant); Это массив из одного элемента типа Variant?
v[0] := S;
(WB.Document as IHTMLDocument2).Write(PSafeArray(TVarData(v).VArra y));
as - Это что за оператор? (впрочем судя по точке мы обращаемся к WB.Document как классу IHTMLDocument2) и записываем в него PSafeArray - тоже непонятный оператор(или это массив?). -( TVarData - тоже непонятно что но хоть аргумент ясен. -))) И для этого непонятно чего вызываем метод VArray(не знаю такого).
(WB.Document as IHTMLDocument2).Close; (Закрыть и закрыть, я не против, ток где мы открывали не ясно -( ).
Ответить с цитированием
  #4  
Старый 22.11.2008, 02:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А можно просто внутри программы поднять Web-сервер. И по запросу отдавать расшифрованные файлы. Только вот стоит ли овчинка выделки, т.к. из браоузера исходник их все равно посмотреть можно будет...
Ответить с цитированием
  #5  
Старый 22.11.2008, 13:57
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

Цитата:
if WB.Document = nil then WB.Navigate('about:blank');
v := VarArrayCreate([0, 0], varVariant); Это массив из одного элемента типа Variant?
Да, это массив из одного элемента.

Цитата:
(WB.Document as IHTMLDocument2).Write(PSafeArray(TVarData(v).VArra y));
as - Это что за оператор?
Оператор приведения к типу; так же как и конструкция: IHTMLDocument2(WB.Document).

Цитата:
(впрочем судя по точке мы обращаемся к WB.Document как классу IHTMLDocument2) и
IHTMLDocument2 - это не класс, а Interface (модуль MSHTML.PAS).

Цитата:
записываем в него PSafeArray - тоже непонятный оператор(или это массив?).
PSafeArray - структура (модуль ActiveX.pas). Не записываем в него ничего, а приводим вариантный массив к этому типу, т.к.
IHTMLDocument2.Write принимает параметр именно типа PSafeArray.

Цитата:
-( TVarData - тоже непонятно что но хоть аргумент ясен. -)))
И для этого непонятно чего вызываем метод VArray(не знаю такого).
VArray - не метод, а тип вариантной переменной, который объявлен в TVarData - packed record.
Дело в том, что структура PSafeArray и PVarArray одинаковы (TVarData(v).VArray - таким выражением получаем "v" типа PVarArray), поэтому берется вариантный массив (в нашем случае массив символов html страницы) и приводится к типу, который принимает процедура Write.
Цитата:
(WB.Document as IHTMLDocument2).Close; (Закрыть и закрыть, я не против, ток где мы открывали не ясно -( ).
Открытие документа здесь: WB.Navigate('about:blank');
__________________
Не забывайте делать резервные копии
Ответить с цитированием
  #6  
Старый 23.11.2008, 18:02
Quark Quark вне форума
Прохожий
 
Регистрация: 09.11.2008
Сообщения: 3
Репутация: 10
По умолчанию

Огромное спасибо! -))))))))))))))))))))))))))))
Я долго мучался пока б это нашел в нете.
Остался ток один вопрос. S - это срока содержащая HTML страницу. Хорошая строчка, которая вместила килобайты информации. -) Или есть строковый тип неограниченной размерности или это просто символьный массив заданной длины.


Поднять веб сервер на Delphi с настроенной аутентификацией это здорово, но на лаборантскую зарплату в 2200р пусть пусть профессора сами разбираются как это делается. -))))))))))))
Ответить с цитированием
  #7  
Старый 23.11.2008, 18:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Обший тип String по умолчанию соответсвунт типу AnsiString, который, теоретически, может держать до 2 Гб информации. Практически пару метров туда всегда можно засунуть.

2. web-сервер пишется за пару дней. Используя Indy.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:45.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter