• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Tmemo, Twebbrowser и Tmemorystream

  • Автор темы Sandy
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

Sandy

Здравствуйте уважаемые!
Есть небольшая задача, нужно чтобы текст из TMemo отображался в TWebBrowser. Оба этих компонента лежат на одной форме (Form1);
Я делаю так:
Memo1.Lines.SaveToFile('1.htm');
WebBrowser1.Navigate(ExtractFilePath(Application.ExeName)+'1.htm');
Всё отлично работает, но не охота с файлами возиться, хотелось бы реализовать через TMemoryStream. А вот работать с ним я не умею. Требуется помощь.
Делаю так:
Var Mem1:TMemoryStream;
Begin
Mem1:=TMemoryStream.create;
Memo1.lines.SaveToStream(Mem1);
WebBrowser1.Navigate(Mem1);
Mem1.Free;
End;
Естественно ничего не работает в этом случае. Не подскажете, как же это реализовать без файла, посредством TMemoryStream?
 
Z

zubr

Не обязательно через стрим, можно просто через строку:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var 
HTMLDocument:IHTMLDocument2;
v: Variant;
begin
HTMLDocument:=WebBrowser1.Document as IHTMLDocument2;
v:=VarArrayCreate([0, 0], varVariant);
v[0]:=Memo1.Text;
HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
HTMLDocument.Close;
end;
Для этого варианта необходимо подключить модули: MSHTML_TLB, ActiveX и предварительно загрузить какой нибудь документ.
 
S

Sandy

Спасибо большое за ответ, а есть ещё какие-нибудь варианты?
 
Z

zubr

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
str:TMemoryStream;
begin
str:=TMemoryStream.Create;
try
Memo1.Lines.SaveToStream(str);
str.Position:=0;
(WebBrowser1.Document as IPersistStreamInit).Load(TStreamAdapter.Create(str));
finally
str.Free;
end;
end;
 
S

Sandy

Спасибо.
Опробовал, но не работает, ошибка:


ActiveX подключил.
 
S

Sandy

zubr, sax_ol, спасибо вам большое за помощь!
Всё отлично работает.
 
S

Sandy

Здравствуйте, уважаемые программисты!
У меня снова есть вопрос и я решил не создавать новую тему. Вопрос относительно gif-анимации. В общем я использую компонент RxGifAnimator. У меня на форме содержится порядка 45 смайликов. Каждый смайлик в отдельном компоненте, т.е. RxGifAnimator1, 2... n.
Когда я создаю и показываю форму с этими смайликами, то процессор загружается на 15-20%. Это многовато. К примеру в QIP, такого нет. Там при показе формы со смайликами процессор загружается всего на 1-2%.
Так вот я хочу спросить, может быть есть какие-нибудь компоненты для отображения анимированных gif-файлов, которые не так сильно грузят процессор. Или RxGifAnimator - лучший вариант?
С уважением, Sandy.
 
S

Sandy

Попробовал парочку других компонент для работы с GIF и решил, что всё-таки буду использовать RxGIFAnimator. Вопрос исчерпан.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!