|
Языки программирования Изучаем С++, Sql, php, Lua, Python |
|
Опции темы | Поиск в этой теме | Опции просмотра |
12.03.2012, 12:42 | #1 |
Пользователь
|
Функции в С++
(если у вас предвзятое отношение к плохому коду не читайте дальше )
Подскажите как правильно должно быть оформлен вызов функции. Да и оформление программы ,что должно быть в *.h что в *.cpp допустим есть в файле form1.h событие Код:
if ((this->textBox_login->Text) == "10" && (this->textBox_password->Text) == "10") как все правильно это оформить? если кому интересно проект во вложении.(это на самом деле первый опыт изучения с++ с нуля,куча ошибок в оформлении ,слабонервным не смотреть) Во вложенном файле простейшая форма авторизации ,которую я пытаюсь подключить к mysql)))
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 12.03.2012 в 14:41. |
12.03.2012, 13:08 | #2 |
Ученый
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
|
.h нужен для того что подключать написаные тобой классы, функкии к другим файлам.
.cpp содержит определения. В .h Код:
void foo(); Код:
void foo() { printf("Hello"); }
__________________
SpellWork Qt4 |
5 пользователя(ей) сказали cпасибо: | evilstar (12.03.2012), KiriX (12.03.2012), lovepsone (19.06.2012), Mayss (13.03.2012), partizanes (12.03.2012) |
12.03.2012, 13:28 | #3 |
Пользователь
|
пишем в *.h
PHP код:
PHP код:
__________________
Когда-нибудь на оффе поставят Mangos... |
12.03.2012, 15:28 | #4 | |
Ученый
Регистрация: 02.04.2010
Сообщений: 237
Сказал(а) спасибо: 41
Поблагодарили 99 раз(а) в 44 сообщениях
|
Цитата:
нет, вот так .h PHP код:
PS у вас слишком массивная функция в .h может лучше вот так ее тоже сделать? .h PHP код:
PHP код:
__________________
SpellWork Qt4 |
|
Пользователь сказал cпасибо: | partizanes (12.03.2012) |
12.03.2012, 18:32 | #5 |
Пользователь
|
я так понимаю что бы начать понимать api , mfc и т.д нужно досконально изучить разработку консольных приложений?
__________________
Когда-нибудь на оффе поставят Mangos... |
12.03.2012, 22:23 | #6 |
Пользователь
|
а если так в *.h
Код:
int msg(int a); ... private: System::Void quitToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) { int a = 5; //равно 5 msg(a); //по идеи тут должно быть 15 ,а реально 5 this->Close(); } Код:
int msg (int a) { a = a+10 ; //равно 15 return(a); //вернуть значение в вызывавшую функцию };
__________________
Когда-нибудь на оффе поставят Mangos... |
12.03.2012, 22:41 | #7 |
Ученый
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
|
Потомучто что, переменная а локальная, там и там.
|
Пользователь сказал cпасибо: | partizanes (12.03.2012) |
12.03.2012, 23:23 | #9 | |
Пользователь
|
Цитата:
Просто я еще сам до конца не понял ) ушел перечитывать главу про глобальные и локальные переменные
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 12.03.2012 в 23:26. |
|
20.03.2012, 00:13 | #10 |
Пользователь
|
Не получается разобраться,подскажите может кто сталкивался.
Код:
mysql_init(&mysql); // Инициализация mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, CLIENT_FOUND_ROWS); // соединение if (mysql_query(&mysql, query) > 0) // запорс. Если ошибок нет, то продолжаем работу { // Если была ошибка, ...(Здесь ошибку не выводит) Windows::Forms::MessageBox::Show(ToUCS2(mysql_error(&mysql))); // ... вывдем ее return; // и завершим работу } res = mysql_use_result(&mysql); // Берем результат, if(res == NULL) { Windows::Forms::MessageBox::Show(ToUCS2(mysql_error(&mysql))); // (выводит только тут)(mysql server has gone away) mysql_ping(&mysql); mysql_query(&mysql, query); res = mysql_store_result(&mysql); } int num_fields = mysql_num_fields(res); // количество полей my_ulonglong num_rows = mysql_num_rows(res); // и количество строк. так как по дебагу Код:
res <undefined value> st_mysql_res* Код:
A first chance exception of type 'System.AccessViolationException' occurred in Trade.exe An unhandled exception of type 'System.AccessViolationException' occurred in Trade.exe Additional information: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена. итог "mysql server has gone away " сам запрос Код:
void auth() { mysql("SELECT * FROM users"); // Запрос } Проверенно на 3 разных серверах mysql с разной конфигурацией
__________________
Когда-нибудь на оффе поставят Mangos... |
20.03.2012, 01:40 | #11 |
WowCore Dev
Регистрация: 11.03.2010
Сообщений: 112
Сказал(а) спасибо: 10
Поблагодарили 51 раз(а) в 25 сообщениях
|
Я возможно отстал от жизни, но где в этом коде вызов mysql_select_db?
|
20.03.2012, 09:27 | #12 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
наверное тут...
Код:
mysql_real_connect(&mysql, host, user, passwd, db, port, NULL, CLIENT_FOUND_ROWS); возможно поможет , так как сам разве что с sqlite работал Код:
When using mysql_use_result(), you must execute mysql_fetch_row() until a NULL value is returned, otherwise, the unfetched rows are returned as part of the result set for your next query |
20.03.2012, 10:05 | #13 |
Пользователь
|
в первом случае используется
Код:
res = mysql_use_result(&mysql); // Берем результат, Код:
if(res == NULL) Код:
mysql_ping(&mysql); Код:
mysql_query(&mysql, query); Код:
res = mysql_store_result(&mysql); Код:
Windows::Forms::MessageBox::Show(ToUCS2(mysql_error(&mysql)));
__________________
Когда-нибудь на оффе поставят Mangos... |
20.03.2012, 10:06 | #14 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
слишком тяжелый запрос для МуСКЛ. Попробовать сократить выборку.
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
20.03.2012, 10:12 | #15 |
Пользователь
|
так в той таблице 2 значения и 2 колонки.
и эта ошибка не всегда связанна с тяжестью запроса Код:
http://www.mysql.ru/docs/man/Gone_away.html
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 20.03.2012 в 10:22. |
20.03.2012, 11:32 | #16 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
работает...черт меня побери
Код:
#include <windows.h> #include <stdio.h> #include <mysql.h> int main(int argc, char* argv[]) { MYSQL *conn; MYSQL_RES *result; MYSQL_ROW row; int num_fields; int i; conn = mysql_init(NULL); mysql_real_connect(conn, "localhost", "root", "passwd", "realmd", 0, NULL, CLIENT_FOUND_ROWS); mysql_query(conn, "SELECT * FROM account"); result = mysql_use_result(conn); num_fields = mysql_num_fields(result); while ((row = mysql_fetch_row(result))) { for(i = 0; i < num_fields; i++) { printf("%s ", row[i] ? row[i] : "NULL"); } printf("\n"); } mysql_free_result(result); mysql_close(conn); } |
20.03.2012, 12:09 | #17 |
Пользователь
|
Код:
printf("\n"); а вот перенести на С++/CLI не выходит
__________________
Когда-нибудь на оффе поставят Mangos... |
20.03.2012, 13:13 | #18 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
|
Пользователь сказал cпасибо: | partizanes (20.03.2012) |
20.03.2012, 13:31 | #19 | |
Пользователь
|
по документации получается что если MYSQL_OPT_RECONNECT 0
Цитата:
проверю вечером как приду с работы . все равно почему пропадает соединение по все той же документации получается что пропасть может если max_allowed_packet маленький или запрос не правильный. но вроде все правильно.а ответа нету.
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 20.03.2012 в 13:50. |
|
20.03.2012, 19:21 | #20 | |
Пользователь
|
я думаю что нашел ответ на свой вопрос )
подключил лог к mysql Цитата:
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 20.03.2012 в 19:59. |
|
20.03.2012, 21:55 | #21 | ||
Пользователь
|
Не могу понять как указать в trade.cpp на dataGridView1 в Form1.h(public ref class Form1 : public System::Windows::Forms::Form)
Код:
DataGridView^ dataGridView1; ловлю Цитата:
Цитата:
и еще вопрос ,можно ли делать так (какое оформление правильное) было Код:
private: System::Windows::Forms::Button^ login_button; private: System::Windows::Forms::Button^ cancel_button; private: System::Windows::Forms::GroupBox^ login_form; private: System::Windows::Forms::TextBox^ textBox_password; private: System::Windows::Forms::TextBox^ textBox_login; делаем Код:
private: System::Windows::Forms:: Button^ login_button; Button^ cancel_button; GroupBox^ login_form; TextBox^ textBox_password; TextBox^ textBox_login;
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 20.03.2012 в 23:30. |
||
20.03.2012, 23:53 | #22 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
А зачем использовать libmysql.lib, если есть сборка коннектора mysql под .NET?
http://www.mysql.com/downloads/connector/net/ http://www.mysql.com/downloads/mirror.php?id=406540 Последний раз редактировалось TOM_RUS; 21.03.2012 в 16:46. |
Пользователь сказал cпасибо: | partizanes (21.03.2012) |
21.03.2012, 10:07 | #23 |
Forum bot
Регистрация: 01.02.2010
Адрес: пусто
Сообщений: 841
Сказал(а) спасибо: 286
Поблагодарили 418 раз(а) в 190 сообщениях
Записей в дневнике: 60
|
ну тогда я вообще удивлен...
http://www.mysql.com/downloads/connector/cpp/ а вот эта штука для чего сделана?
__________________
Совершенно безопасен для людей, обладающих хотя бы некоторыми минимальными зачатками интеллекта, и способными строить причинно-следственные цепочки. |
21.03.2012, 12:49 | #24 | |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Цитата:
|
|
22.03.2012, 21:58 | #25 |
Пользователь
|
Подскажите как преобразовать "System::String ^" в "cli::array<Type> ^"
прочитал много статей ,но увы не подошел ни один из результатов. https://github.com/partizanes/trade/...e1b1436155a401 to TOM_RUS: Код:
catch (Exception^ exc) { MessageBox::Show("Exception: " + exc->Message); } finally { if (reader != nullptr) reader->Close(); } return authok; (при появлении исключения , появляется MessageBox и с исключение и с не правильным паролем) пытался что то типа Код:
if (authok = false) && !(exc->Message) { Windows::Forms::MessageBox::Show("Неправильное Имя Пользователя или Пароль"); } Спасибо вам за помощь в освоении конектора .
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 22.03.2012 в 22:54. |
22.03.2012, 22:56 | #26 |
RuDB Dev
Регистрация: 01.02.2010
Адрес: localhost
Сообщений: 592
Сказал(а) спасибо: 323
Поблагодарили 283 раз(а) в 122 сообщениях
Записей в дневнике: 2
|
Код:
array<Byte>^data = System::Text::Encoding::ASCII->GetBytes("hello world") |
Пользователь сказал cпасибо: | partizanes (22.03.2012) |
22.03.2012, 23:07 | #27 |
Пользователь
|
Спасибо ,именно этого кирпичика мне не хватало для получения md5
__________________
Когда-нибудь на оффе поставят Mangos... |
22.03.2012, 23:46 | #28 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
по аналогии с джава:
Код:
catch (IncorrectLoginException^ exc){ MessageBox::Show("Exception input login: " + exc->Message); } catch (Exception^ exc){ MessageBox::Show("Exception: " + exc->Message); }finally{ if (reader != nullptr) reader->Close(); } Код:
if (authok = false) Throw IncorrectLoginException |
Пользователь сказал cпасибо: | partizanes (23.03.2012) |
23.03.2012, 22:19 | #29 | |||
Пользователь
|
Цитата:
Пока не удалось мне сделать исключение верно,видимо мне еще читать и читать про исключения до просветления ))) вопрос по md5 ,безопасно ли так хранить пароль? // и насколько с точки зрения синтаксиса верна строка. Создаю пользователя, пароль перегоняю в md5 Цитата:
Цитата:
__________________
Когда-нибудь на оффе поставят Mangos... |
|||
25.03.2012, 13:33 | #30 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
хеш пароля генерировать с солью...тогда будет понадежнее
|
2 пользователя(ей) сказали cпасибо: | partizanes (25.03.2012), tempura (26.03.2012) |
25.03.2012, 16:11 | #31 | ||
Пользователь
|
как то так? создаем переменную
Цитата:
Цитата:
__________________
Когда-нибудь на оффе поставят Mangos... |
||
25.03.2012, 16:27 | #32 |
Пользователь
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
|
я бы посоветывал использовать нативную mysql функцию MD5() приятнее для чтения..и лучше переписать на Prepared Statement ...а то мало ли что там в логин ляжет... |
Пользователь сказал cпасибо: | partizanes (06.01.2013) |
25.03.2012, 17:39 | #33 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
C++/CLI - это язык для склеивания C++ native кода и .NET библиотек. Логику удобнее и быстрее реализовать либо в виде .net, либо С++ кода.
|
19.06.2012, 13:05 | #34 |
Пользователь
|
Возник вопрос как слинковать статистически MySql.Data.dll
(включить MySql.Data.dll в *.exe) увы поиск как то не подсказывает(
__________________
Когда-нибудь на оффе поставят Mangos... |
19.06.2012, 16:37 | #35 |
MaNGOS Dev
Регистрация: 07.03.2010
Сообщений: 314
Сказал(а) спасибо: 30
Поблагодарили 153 раз(а) в 83 сообщениях
|
|
Пользователь сказал cпасибо: | partizanes (19.06.2012) |
19.06.2012, 19:42 | #36 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Качнуть сорцы можно и добавить в свой проэкт. Вроде можно и .NET сборку в exe как-то запихнуть
Зачем правда это я не понимаю. Первые результаты поиска у гугле: ILMerge http://stackoverflow.com/questions/1...o-the-exe-file http://stackoverflow.com/questions/2...other-assembly http://stackoverflow.com/questions/1...led-executable Последний раз редактировалось TOM_RUS; 19.06.2012 в 19:45. |
Пользователь сказал cпасибо: | partizanes (19.06.2012) |
19.06.2012, 21:19 | #37 |
Пользователь
|
Все эти способы я видел,вопрос в том что они не стандартные ,кроме ILMerge.
(если честно я думал что это вообще делается 1 кликом мыши) (поэтому поиск как бы не подсказывал простого решения) по сути у меня получилось добавить в исполняемый файл длл с помощью vs, но сам ехе почему то его не видит. на вопрос зачем,если конечно взять тот же framework то да смысл пихать огромное количество библиотек в ехе нет . Когда же дело касается +256кб и не нужно человеку ставить коннектор ,мне кажется ответ очевиден. В моем случае сам исполняемый файл спокойно скачивается на рабочий стол и там работает без лишних движений ,а вот зачем MySql.Data.dll еще рядом даже не знаю) В любом случае спасибо за ответы и ваше мнение.
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 19.06.2012 в 21:25. |
19.06.2012, 21:49 | #38 |
MaNGOS Dev
Регистрация: 11.03.2010
Сообщений: 468
Сказал(а) спасибо: 0
Поблагодарили 514 раз(а) в 163 сообщениях
|
Можно заинсталить сборку в GAC... Правда gacutil может не оказаться на клиентской машине...
И вообще проще заинсталить прогу куда нить в програм файлс, а на десктоп добавить ярлык... Последний раз редактировалось TOM_RUS; 20.06.2012 в 05:09. |
19.06.2012, 22:08 | #39 |
Пользователь
|
Тогда уже как мне кажется
Код:
String^ path = (Environment::SystemDirectory)+"//MySql.Data.dll"; Код:
if (!File::Exists( path ) ) { DownloadFile("http://www.site.com/MySql.Data.dll", ""+path); }
__________________
Когда-нибудь на оффе поставят Mangos... |
23.06.2012, 14:20 | #40 |
Пользователь
|
//deleted
__________________
Когда-нибудь на оффе поставят Mangos... Последний раз редактировалось partizanes; 29.06.2012 в 16:37. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вызов функции | HuntsMan | Языки программирования | 1 | 02.01.2012 12:57 |
Импортируемые функции | Йоха | Копаем клиент | 3 | 08.12.2011 16:53 |
Вопрос по функции php | lovepsone | Языки программирования | 38 | 07.12.2011 22:09 |
[11691][patch] Опечатка в функции выбора difficulty спелла | PSZ | Принятые патчи | 1 | 28.06.2011 11:26 |
Overhead в базовой функции SendPacket() | xex | Отвергнутые патчи | 19 | 26.03.2011 12:47 |