Поиск:

Ответ в темуСоздание новой темы Создание опроса
> graphviz, утилита для построения графов 
:(
    Опции темы
Incinerated
Дата 15.4.2009, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 18.5.2006
Где: Беларусь, Новопол оцк

Репутация: нет
Всего: нет



использую утилиту graphviz
она мне полностью подходит, вот только не понимаю я, похоже она с русскими буквами не работает...
пример графа:
Код

digraph G{
  Машина->Колесо;
  Машина->Руль;
}

при компиляции что через их программу, что через консоль выводится следующая ошибка:
Код

Error: Invalid 2-byte UTF8 found in input. Perhaps "-Gcharset=latin1" is needed?

если поставить дополнительный параметр -Gcharset=latin1... отображаются краказяблы вместо русских букв...
поискал в интернете решение проблемы, толком ничего не написано, где то что то куда то прописать, вообще не понятно... может кто сталкивался?
P.S. пробовал через их программу....описал что получилось выше.... также пытался подключить к билдеру их утилиту WinGraphviz.h.... но что то не хочет преобразовывать=\ вот исходный текст:
Код

#include <vcl.h>
#include <iostream.h>
#include "WinGraphviz.h"

const IID IID_IDOT = {0xA1080582,0xD33F,0x486E,{0xBD,0x5F,0x58,0x19,0x89,0xA3,0xC7,0xE9}};
                        
const CLSID CLSID_DOT = {0x55811839,0x47B0,0x4854,{0x81,0xB5,0x0A,0x00,0x31,0xB8,0xAC,0xEC}};

int main(int argc, char* argv[])
{
//    USES_CONVERSION;
    HRESULT hr;
    IDOT * pIDOT;
  wchar_t* result;

    hr = CoInitialize(NULL);

    if (FAILED(hr)) {
        cout << "CoInitialize Failed: " << hr << "\n\n";
        exit(1);
    }
    else {
        cout << "CoInitialize succeeded\n";
    }
        
    hr = CoCreateInstance(CLSID_DOT, NULL, CLSCTX_ALL,
      IID_IDOT, reinterpret_cast<void**>(&pIDOT));

    if (FAILED(hr)) {
      cout << "CoCreateInstance Failed: " << hr << "\n\n";
      ;
    }
    else {
      cout << "CoCreateInstance succeeded\n";
    }

    hr = pIDOT->ToSvg((wchar_t*)("digraph G {A->B;}"),&result);
// тут hr -2 млн и т.д., т.е. не сработало =\
    if (FAILED(hr)) {
      cout << "ToSvg Failed: " << hr << "\n\n";
      ;
    }
    else {
      cout << "ToSvg succeeded\n";
    }

    MessageBox(NULL,NULL , _T("DOT.ToSvg"), MB_OK);
    
    
    CoUninitialize();
    return 0;
};


мне бы хоть какой рабочий вариант или первый - через консоль подавать файл... или второй - внутри программы своей... но чтоб с русскими пахало, может кто видит ошибку или что то еще, я уже не знаю что делать :(
PM MAIL   Вверх
Лапоть
Дата 15.4.2009, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 185
Регистрация: 3.4.2009

Репутация: 1
Всего: 2



Не знаю, что это такое, но ОНО явно просит кириллицу в юникодах!
Какие ещё чарсеты ОНО может использовать?
PM MAIL   Вверх
xvr
Дата 15.4.2009, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Incinerated @ 15.4.2009,  10:55)
при компиляции что через их программу, что через консоль выводится следующая ошибка:
Код

Error: Invalid 2-byte UTF8 found in input. Perhaps "-Gcharset=latin1" is needed?


Оно же чистым английским языком сказало, что ожидало увидеть UTF8 кодировку. Для получения UTF8 из Ansi нужно позвать MultiByteToWideChar(CP_ACP...) и WideCharToMultiByte(CP_UTF8...)
Цитата

если поставить дополнительный параметр -Gcharset=latin1... отображаются краказяблы вместо русских букв...
Что просили, то и получили - latin1 это чистый английский алфавит, вам нужен -Gcharset=WINDOWS-1251 или -Gcharset=CP1251

Цитата

Код

    hr = pIDOT->ToSvg((wchar_t*)("digraph G {A->B;}"),&result);
// тут hr -2 млн и т.д., т.е. не сработало =\

Наверное оно не просто так хотело wchar_t* ? 
Код

    hr = pIDOT->ToSvg(WideString ("digraph G {A->B;}"),&result);


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.