На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
Страницы: (19) « Первая ... 16 17 [18] 19  все  ( Перейти к последнему сообщению )  
> Функция из DLL , Вывод данных
    Цитата Олег М @
    Что-то я упустил. А зачем тебе вообще здесь ДЛЛка?

    На сколько я понял, он хочет сделать морду на WPF, а саму логику работы с базой на С++(темболее что база у него вообще на С, а WPF - это .NET). Тут без DLL, если делать по нормальному и правильно - не обойтись.
    Но вот теперь я не уверен что он хочет морду на WPF, потому что упрямо пишет морду на C++/CLI, в этом случае - dll, я тоже считаю, что не нужна.


    Цитата kms @
    как мне построить заполнение нужных переменных из класса, я предпологал что параметрами в функцию передаю ссылки
    но как то у меня не получаеться
    делаю напрмер вот так , в обработчике клика по кнопке

    Я лично не понял вопроса. Опиши более конкретнее что у тебя не получается. Какие ссылки ты передаешь и куда?

    Цитата kms @
    делаю напрмер вот так , в обработчике клика по кнопке
    CollapsedWrap disabledLine numbers off

    int ИдентификаторОператора = 0;
    pOper = Konekt1.SqlQuery( &ИдентификаторОператора, pdb , (char*)(void*)Marshal::StringToHGlobalAnsi( richTextBox1->Text ));

    Так вообще делать неправильно. Ты вот расскажи, кто тебе посоветовал сделать двойное преобразование типов ?
    Что это за выверт такой?
    Цитата kms @
    (char*)(void*)Marshal::StringToHGlobalAnsi( richTextBox1->Text )

    Откуда ты его взял?
    Почитай для начала вот эту статью -> https://msdn.microsoft.com/ru-ru/library/hh279667.aspx
    Потом поясни, что конкретно не получается сделать?

    Добавлено
    kms, ты сейчас пишешь на промежуточном ЯП от майкрософта, который поддерживается только майкрософтом и в основном нужен для написания прокладок между нативным C/C++ кодом и управляемым .NET кодом. Понимаешь? Поначалу, когда у тебя не получалось прочитать данные из БД, я лично, не знакю как Олег М, закрывал глаза. Но теперь - тебе нужно определиться. Или ты на этой прокладке пишешь свой класс/набор функций, и по сути вопрос темы закрыт. Или ты пишешь на С++, который С++, а не С++/CLI. Еще можешь сразу импортировать функции из БД в .NET среду, минуя написания логики на С++, а сразу прям в .NET писать класс оболочку над этими функциями(примитивный пример можешь посмотреть тут-> https://habrahabr.ru/sandbox/46381/ ), но тогда это не логично обсуждать этот вопрос в этом разделе.

    Добавлено
    Вообще я предлагал тебе сделать класс отдельный, на чистом С++, тот который не CLI, выложить сюда свой класс - для того, что бы мы его посмотрели, и указали на твои ошибки, или при написании класса если возникнут вопросы - помочь в решении этих вопросов. Потом экспортировать этот класс в DLL. И вот у тебя получилась бы dll, с полным функционалом для работы с БД, написанная на С++, а уже потом, ты бы в .NET разделе создал бы тему про то, как эту dll подключить к твоему проекту, который ГУИ на WPF(или на чем там?) и как ее там использовать. Но это же уже другой вопрос. Мы тут в этой теме скоро по количеству страниц обгоним некоторые темы в холиварах.

    Добавлено
    Цитата kms @
    ExpandedWrap disabled
      pOper = Konekt1.SqlQuery(pdb, (char*)(void*)Marshal::StringToHGlobalAnsi(  richTextBox1->Text   ));

    и оно пошло

    Странно, а почему ты не написал вот так?
    ExpandedWrap disabled
      pOper = Konekt1.SqlQuery(pdb, (char*)(void*)(int*)(double*)(float*)(unsigned long int*)Marshal::StringToHGlobalAnsi(  richTextBox1->Text   ));

    Так бы тоже пошло, наверное :huh:
    Сообщение отредактировано: KILLER -
      Цитата KILLER @
      На сколько я понял, он хочет сделать морду на WPF, а саму логику работы с базой на С++(темболее что база у него вообще на С, а WPF - это .NET). Тут без DLL, если делать по нормальному и правильно - не обойтись.

      точно точно , мысли прочитал

      Добавлено
      Цитата KILLER @
      потому что упрямо пишет морду на C++/CLI, в этом случае - dll, я тоже считаю, что не нужна.

      не не не , на C++/CLI это я сейчас делаю для того чтобы разобраться с механикой всей конструкции СУБД , чтобы DLL-ку нормальную сделать , а так вооще в планах перейти к изучению ClickHouse там исходники открыты
        Цитата KILLER @
        он хочет сделать морду на WPF, а саму логику работы с базой на С++
        Цитата KILLER @
        Тут без DLL, если делать по нормальному и правильно - не обойтись.
        В принципе, есть ещё возможность воспользоваться каналом (трубой). Но вряд ли это проще.
          Цитата KILLER @
          На сколько я понял, он хочет сделать морду на WPF, а саму логику работы с базой на С++(темболее что база у него вообще на С, а WPF - это .NET). Тут без DLL, если делать по нормальному и правильно - не обойтись.
          Но вот теперь я не уверен что он хочет морду на WPF, потому что упрямо пишет морду на C++/CLI, в этом случае - dll, я тоже считаю, что не нужна.

          да лучше написать под эту СУБД обертку на чистом С++ и создать dll или статик lib, и потом морду на чем хочет, я бы выбрал естесно MFC :D
          но и связка WPF + C# нормуль :)

          С++/CLI + Windows Forms ИМХО для переноса старых проектов С++ на .NET
          и для извращенцев :D
          Сообщение отредактировано: Cfon -
            Цитата Cfon @
            да лучше написать под эту СУБД обертку на чистом С++ и создать dll

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

            Добавлено
            Цитата amk @
            В принципе, есть ещё возможность воспользоваться каналом (трубой). Но вряд ли это проще.

            подскажите а что за труба
              Цитата kms @
              только к MFC у меня как бы не устраивает, все таки WPF для этого и предназначен что бы рисовать интерфейсы

              ну да WPF в плане гуя по круче, но я и не говорю не юзать его, юзай тока на C# :)
                Цитата kms @
                  int ConnectServer(  char*   pStrConnect , char * pStrLogin, char * pStrPassword);//char  *pStrConnect, char  *pStrLogin, char  *pStrPassword
                        int SqlQuery(int pdb, char  *pStrSql);

                я выполняю эти функции , а как дальше идти передавать
                infCol, position, pRecSize, pCol, pStr, dataRes

                Добавлено
                Цитата Cfon @
                юзай тока на C#

                да да я так и хотел

                Добавлено
                Цитата KILLER @
                Ты вот расскажи, кто тебе посоветовал сделать двойное преобразование типов ?
                Что это за выверт такой?
                Цитата kms @ Вчера, 11:35
                (char*)(void*)Marshal::StringToHGlobalAnsi( richTextBox1->Text )

                Откуда ты его взял?

                я даже не не знаю само как то получилось, бес попутал
                  Цитата kms @
                  подскажите а что за труба

                  Речь про Pipes https://msdn.microsoft.com/en-us/library/wi...0(v=vs.85).aspx
                  Честно говоря, я несколько раз пробовал эти пайпы, и всякий раз оказывалось, что shared memory всё равно проще, а сокеты - гибче.
                    Цитата Mr.Delphist @
                    всякий раз оказывалось, что shared memory всё равно проще, а сокеты - гибче.
                    Трубы хороши там, где надо иметь смешанный интерфейс консоль/GUI. Тогда можно ГУЙ написать над консольным прилложением, никак это консольное под ГУЙ не подстраивая.
                      amk, ну где-то так, да. Когда есть явное разделение ролей "ведущий-ведомый".
                        Цитата KILLER @
                        Ты вот расскажи, кто тебе посоветовал сделать двойное преобразование типов ?
                        Что это за выверт такой?
                        Цитата kms @ Вчера, 11:35
                        (char*)(void*)Marshal::StringToHGlobalAnsi( richTextBox1->Text )

                        вот я вспомнил почему я так сделал, если убираю (void*) то вылетает ошибка
                        ExpandedWrap disabled
                          СерьезностьКодОписаниеПроектФайлСтрока
                          ОшибкаC2440приведение типов: невозможно преобразовать "System::IntPtr" в "char *"RudderHyTech rudderhytech\MyForm.h1404


                        если убираю (char*) то тогда ошибка
                        ExpandedWrap disabled
                          СерьезностьКодОписаниеПроектФайлСтрока
                          ОшибкаC2440инициализация: невозможно преобразовать "void *" в "char *"RudderHyTech \MyForm.h1404


                        вот тогда только у меня вот так пошло
                        ExpandedWrap disabled
                          void  *strConnect  = (void*)Marshal::StringToHGlobalAnsi(textBox3->Text );// Сервер
                          if(err = hcSqlConnect(pdb, (char*)strConnect, strLogin, strPassword) != 0) textBox2->AppendText("Ошибка Установить связь с СУБД  \r\n"); //Установить связь с СУБД

                        но в этом варианте тоже два преобразования
                        из textBox3->Text в void*
                        и из void* в char*

                        Добавлено
                        Цитата KILLER @
                        Откуда ты его взял?

                        вот вспомнил https://support.microsoft.com/ru-ru/help/31...har-in-visual-c
                        там второй метод
                          Цитата kms @
                          вот вспомнил https://support.microsoft.com/ru-ru/help/31...har-in-visual-c
                          там второй метод

                          Аааа, ну понятно, это такие правила преобразования типов из за ущербности языка видимо в С++/CLI. Именно по этому на нем как можно меньше кода нужно писать. И вообще по возможности избегать его.
                          Но, если класс экспортировать в DLL, то скорее всего из того же C# врятли такой класс загрузишь из DLL, и вот тут на помощь придет C++/CLI, в принципе только за этим он и нужен. Так что бросай на нем писать свою БД, переходи или на чистый С++ или на C#. Потому как такой трешь видимо в С++/CLI и нужен только.
                            Цитата KILLER @
                            переходи или на чистый С++ или на C#

                            если делать сразу на С# то еще трудней будет сделать обертку на "API клиентской части СУБД HyTech 2.5 (hscli)"

                            делаю новую тему , если есть возможность помогите
                              Цитата KILLER @
                              если класс экспортировать в DLL, то скорее всего из того же C# врятли такой класс загрузишь из DLL, и вот тут на помощь придет C++/CLI, в принципе только за этим он и нужен.

                              на 100% согласен :)
                                Цитата KILLER @
                                переходи или на чистый С++ или на C#.

                                сейчас уже тему на на С++ сделана , сейчас еще сделаю на C#
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,2504 ]   [ 17 queries used ]   [ Generated: 23.04.24, 11:47 GMT ]