Редактор HTML для CBuilder/Delphi

Попробуйте вставить этот код:

Charset VARCHAR2(20);

BEGIN

    SELECT UTL_I18N.MAP_CHARSET(VALUE)
    INTO Charset
    FROM nls_database_parameters
    WHERE parameter = 'NLS_CHARACTERSET';

UTL_HTTP.set_header(v_request, 'Content-Type', 'text/html; charset='||Charset);

Я не знаком с REST, я не знаю, требуется ли и правильная text/html;.

Обновление

Я просто вижу набор символов вашей базы данных AR8ASMO8X, который не имеет никакого имени IANA (по крайней мере, не в соответствии с Oracle UTL_I18N.MAP_CHARSET)

[1111 ] В этом случае попробуйте

UTL_HTTP.set_header(v_request, 'Content-Type', 'text/html; charset=UTF-8');
UTL_HTTP.begin_request(CONVERT(v_url,'AL32UTF8'));

Скорее всего, сервер вернет ответ в UTF-8 - будет наиболее распространенным, в противном случае проверьте заголовок ответа.

Тогда попробуйте это:

UTL_HTTP.SET_BODY_CHARSET(v_response, 'AL32UTF8');

Помимо всего вышеперечисленного, у вас также может быть проблема display , то есть внутри Oracle все будет хорошо, просто ваш клиент не может отобразить правильные символы см. в . OdbcConnection возвращает китайские иероглифы как «?»

.

5
задан Riho 31 December 2008 в 07:12
поделиться

3 ответа

Можно отбросить TWebBrowser на форме и включить designmode на нем, как это:

// Delphi code..
(WebBrowser1.Document as IHTMLDocument2).designMode := 'on';

После выполнения вышеупомянутой строки страница будет доступна для редактирования. Можно ввести дополнительный текст, удалить и т.д. Если Вы хотите сделать выборы полужирными или вставить изображения, Вы оказываетесь перед необходимостью добавлять некоторые кнопки для программирования этого. Прохладная вещь состоит в том, что можно сделать это или от Delphi (или разработчик C++ в случае), или можно добавить JavaScript на странице для редактирования себя.

Содержание страницы может быть получено от

(WebBrowser.Document as IHTMLDocument2).body.innerHTML;

Помните это (WebBrowser. Документ как IHTMLDocument2), мог быть ноль.


Так или иначе я могу предположить, что существуют компоненты вокруг этого, делают всю работу для Вас, которая является, вероятно, лучшим маршрутом для взятия, чем изобретение велосипед.

7
ответ дан 18 December 2019 в 14:52
поделиться

Я рекомендовал бы TRichView из-за его поддержки мирового класса и глубокого набора функций. В то время как это не истинный редактор "HTML", это действительно поддерживает способность экспортировать в HTML, даже генерируя соответствующие стили CSS при необходимости. Я использую его для обработки почтовой части нашего основного продукта, и это работает очень хорошо. Внутренне устройством хранения данных является любой RTF (расширенный на изображения поддержки лучше), или как собственный формат. Существует много примеров простые редакторы, которые легко удовлетворили бы Вашим потребностям.

4
ответ дан 18 December 2019 в 14:52
поделиться

в C ++ Builder это будет примерно так:

(wb - это TCppWebBrowser)

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "mshtml.h"

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "SHDocVw_OCX"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnNavigateAndEditClick(TObject *Sender)
{
        wb->Navigate((WideString)"www.google.com");
        while (wb->Busy)
                Application->ProcessMessages();

        if (wb->Document)
        {
                IHTMLDocument2 *html;
                wb->Document->QueryInterface<IHTMLDocument2>(&html);
                html->put_designMode(L"On");
                html->Release();
        }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnInsertImageClick(TObject *Sender)
{
    if (wb->Document)
    {
          IHTMLDocument2 *html;
          wb->Document->QueryInterface<IHTMLDocument2>(&html);
          VARIANT var;
          VARIANT_BOOL receive;
          html->execCommand(L"InsertImage",true,var, &receive);
          html->Release();
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnGetHtmlClick(TObject *Sender)
{
        if (wb->Document)
        {
                IHTMLDocument2 *html;
                wb->Document->QueryInterface<IHTMLDocument2>(&html);
                IHTMLElement *pElement;
                html->get_body(&pElement);
                pElement->get_parentElement(&pElement);
                wchar_t *tmp;
                pElement->get_outerHTML(&tmp);
                Memo1->Lines->Text = tmp;
                pElement->Release();
                html->Release();
        }
}
//---------------------------------------------------------------------------
1
ответ дан 18 December 2019 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: