Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.14.8.34] |
|
Страницы: (19) « Первая ... 16 17 [18] 19 все ( Перейти к последнему сообщению ) |
Сообщ.
#256
,
|
|
|
На сколько я понял, он хочет сделать морду на 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 )); Так вообще делать неправильно. Ты вот расскажи, кто тебе посоветовал сделать двойное преобразование типов ? Что это за выверт такой? Откуда ты его взял? Почитай для начала вот эту статью -> 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 @ pOper = Konekt1.SqlQuery(pdb, (char*)(void*)Marshal::StringToHGlobalAnsi( richTextBox1->Text )); и оно пошло Странно, а почему ты не написал вот так? pOper = Konekt1.SqlQuery(pdb, (char*)(void*)(int*)(double*)(float*)(unsigned long int*)Marshal::StringToHGlobalAnsi( richTextBox1->Text )); Так бы тоже пошло, наверное |
Сообщ.
#257
,
|
|
|
Цитата KILLER @ На сколько я понял, он хочет сделать морду на WPF, а саму логику работы с базой на С++(темболее что база у него вообще на С, а WPF - это .NET). Тут без DLL, если делать по нормальному и правильно - не обойтись. точно точно , мысли прочитал Добавлено Цитата KILLER @ потому что упрямо пишет морду на C++/CLI, в этом случае - dll, я тоже считаю, что не нужна. не не не , на C++/CLI это я сейчас делаю для того чтобы разобраться с механикой всей конструкции СУБД , чтобы DLL-ку нормальную сделать , а так вооще в планах перейти к изучению ClickHouse там исходники открыты |
Сообщ.
#258
,
|
|
|
Цитата KILLER @ он хочет сделать морду на WPF, а саму логику работы с базой на С++ Цитата KILLER @ В принципе, есть ещё возможность воспользоваться каналом (трубой). Но вряд ли это проще. Тут без DLL, если делать по нормальному и правильно - не обойтись. |
Сообщ.
#259
,
|
|
|
Цитата KILLER @ На сколько я понял, он хочет сделать морду на WPF, а саму логику работы с базой на С++(темболее что база у него вообще на С, а WPF - это .NET). Тут без DLL, если делать по нормальному и правильно - не обойтись. Но вот теперь я не уверен что он хочет морду на WPF, потому что упрямо пишет морду на C++/CLI, в этом случае - dll, я тоже считаю, что не нужна. да лучше написать под эту СУБД обертку на чистом С++ и создать dll или статик lib, и потом морду на чем хочет, я бы выбрал естесно MFC но и связка WPF + C# нормуль С++/CLI + Windows Forms ИМХО для переноса старых проектов С++ на .NET и для извращенцев |
Сообщ.
#260
,
|
|
|
Цитата Cfon @ да лучше написать под эту СУБД обертку на чистом С++ и создать dll да да да я же так и хочу , и так пытаюсь сделать только к MFC у меня как бы не устраивает, все таки WPF для этого и предназначен что бы рисовать интерфейсы Добавлено Цитата amk @ В принципе, есть ещё возможность воспользоваться каналом (трубой). Но вряд ли это проще. подскажите а что за труба |
Сообщ.
#261
,
|
|
|
Цитата kms @ только к MFC у меня как бы не устраивает, все таки WPF для этого и предназначен что бы рисовать интерфейсы ну да WPF в плане гуя по круче, но я и не говорю не юзать его, юзай тока на C# |
Сообщ.
#262
,
|
|
|
Цитата 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 ) Откуда ты его взял? я даже не не знаю само как то получилось, бес попутал |
Сообщ.
#263
,
|
|
|
Цитата kms @ подскажите а что за труба Речь про Pipes https://msdn.microsoft.com/en-us/library/wi...0(v=vs.85).aspx Честно говоря, я несколько раз пробовал эти пайпы, и всякий раз оказывалось, что shared memory всё равно проще, а сокеты - гибче. |
Сообщ.
#264
,
|
|
|
Цитата Mr.Delphist @ Трубы хороши там, где надо иметь смешанный интерфейс консоль/GUI. Тогда можно ГУЙ написать над консольным прилложением, никак это консольное под ГУЙ не подстраивая. всякий раз оказывалось, что shared memory всё равно проще, а сокеты - гибче. |
Сообщ.
#265
,
|
|
|
amk, ну где-то так, да. Когда есть явное разделение ролей "ведущий-ведомый".
|
Сообщ.
#266
,
|
|
|
Цитата KILLER @ Ты вот расскажи, кто тебе посоветовал сделать двойное преобразование типов ? Что это за выверт такой? Цитата kms @ Вчера, 11:35 (char*)(void*)Marshal::StringToHGlobalAnsi( richTextBox1->Text ) вот я вспомнил почему я так сделал, если убираю (void*) то вылетает ошибка СерьезностьКодОписаниеПроектФайлСтрока ОшибкаC2440приведение типов: невозможно преобразовать "System::IntPtr" в "char *"RudderHyTech rudderhytech\MyForm.h1404 если убираю (char*) то тогда ошибка СерьезностьКодОписаниеПроектФайлСтрока ОшибкаC2440инициализация: невозможно преобразовать "void *" в "char *"RudderHyTech \MyForm.h1404 вот тогда только у меня вот так пошло 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 там второй метод |
Сообщ.
#267
,
|
|
|
Цитата kms @ вот вспомнил https://support.microsoft.com/ru-ru/help/31...har-in-visual-c там второй метод Аааа, ну понятно, это такие правила преобразования типов из за ущербности языка видимо в С++/CLI. Именно по этому на нем как можно меньше кода нужно писать. И вообще по возможности избегать его. Но, если класс экспортировать в DLL, то скорее всего из того же C# врятли такой класс загрузишь из DLL, и вот тут на помощь придет C++/CLI, в принципе только за этим он и нужен. Так что бросай на нем писать свою БД, переходи или на чистый С++ или на C#. Потому как такой трешь видимо в С++/CLI и нужен только. |
Сообщ.
#268
,
|
|
|
Цитата KILLER @ переходи или на чистый С++ или на C# если делать сразу на С# то еще трудней будет сделать обертку на "API клиентской части СУБД HyTech 2.5 (hscli)" делаю новую тему , если есть возможность помогите |
Сообщ.
#269
,
|
|
|
Цитата KILLER @ если класс экспортировать в DLL, то скорее всего из того же C# врятли такой класс загрузишь из DLL, и вот тут на помощь придет C++/CLI, в принципе только за этим он и нужен. на 100% согласен |
Сообщ.
#270
,
|
|
|
Цитата KILLER @ переходи или на чистый С++ или на C#. сейчас уже тему на на С++ сделана , сейчас еще сделаю на C# |