Страница 5 из 12
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 13:15:13
ARV
файлы и сортировка - это вопросы ОБЩЕГО ПЛАНА, конкретно к С++ отношение имеют весьма посредственное, т.к. одинаковы почти во всех языках... а вот когда дойдете до шаблонов и т.п. фич, исключительно С++-шных, т.е. более нигде не имеющихся - вот тут-то крышку и сорвать может
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 13:32:41
DX168B
Pika4u а тебя такой фрагмент С++ ного кода не напугает?
Запрос в MySQL базу данных и разбор полученной структуры по разным переменным.
Заголовочники и прочее не привожу, это только маленький фрагмент программы.
В ней 610 строк и размер её 76 Кб.
Ещё к ней подвешиваются два DLL файла и один INI файл настроек.
DLL: libMySQL.dll - API базы данных (2,25Мб)
DLL: dxcom.dll - собственный класс для работы с COM портами. (86Кб)
DxControlServer.ini - файл настроек программы (176 байт)
Код: Выделить всё
MYSQL mysql;
MYSQL_RES *res;
DXCOM dx;
PortInfo xd;
DWORD ini;
HANDLE console;
int tcp_port, com_port, baud, level, com_d, rts1_d, rts0_d, strt_d;
char st, l1, l2, l3, l4;
char host[20], user[20], pssw[20], dtbs[20], dbg[2], log[2];
char idd[20], usr[20], psw[20];
char query[512];
int DBquery(const char *id)
{
MYSQL_ROW row;
unsigned int i=0;
//---------------------------------------------------
sprintf(query, "SELECT * FROM users WHERE ID=%s", id);
//---------------------------------------------------
if (mysql_query(&mysql, query))
{
SetConsoleTextAttribute(console, FOREGROUND_RED | FOREGROUND_INTENSITY);
display(" Ошибка запроса!");
fprintf(stderr, " Error: %s\n", mysql_error(&mysql));
return 1;
}
//---------------------------------------------------
if (!(res = mysql_store_result(&mysql)))
{fprintf(stderr, " Error: %s\n", mysql_error(&mysql));return 1;}
//---------------------------------------------------
while((row = mysql_fetch_row(res)))
{
for (i=0;i<mysql_num_fields(res);i++)
{
if (i==0){for (int a=0;a<20;a++){idd[a]=row[i][a];}}
else if (i==1){for (int a=0;a<20;a++){usr[a]=row[i][a];}}
else if (i==2){for (int a=0;a<20;a++){psw[a]=row[i][a];}}
else if (i==3){st = row[i][0];}
else if (i==4){l1 = row[i][0];}
else if (i==5){l2 = row[i][0];}
else if (i==6){l3 = row[i][0];}
else if (i==7){l4 = row[i][0];}
}
}
//---------------------------------------------------
if (!mysql_eof(res)){fprintf(stderr," Error: %s\n", mysql_error(&mysql));return 1;}
//---------------------------------------------------
mysql_free_result(res);
delete row;
//---------------------------------------------------
return 0;
}
Это ещё изврааат
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 13:35:32
ARV
самое смешное, что в приведенном коде нет ничего, присущего именно С++ - этот код на 100% чисто СИШНЫЙ, без плюсов. вы бы привели парочку классов, сделанных по шаблонам, с виртуальными конструкторами-деструкторами и обработкой исключений - вот тогда б кто-то мог вздрогнуть

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 13:47:56
Pika4u
Написал прогу для флага России, чтобы флаг не сразу, а построчно рисовался. Вот:
#include <stdio.h>
#include <conio.h>
#include <graphics.h>
const int N=343;
main()
{
while(1)
{
int i;
initwindow(1280,1024);
for(i=0;i<N;i++)
{
setfillstyle(1,15);
bar(0,0,1280,i);
delay(1);
setfillstyle(1,1);
bar(0,342,1280,i+342);
delay(1);
setfillstyle(1,4);
bar(0,684,1280,i+684);
delay(1);
}
getch();
closegraph();
}
}
Пойду для флага Великобритании писать)))

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 13:49:09
DX168B
ARV писал(а):самое смешное, что в приведенном коде нет ничего, присущего именно С++ - этот код на 100% чисто СИШНЫЙ, без плюсов. вы бы привели парочку классов, сделанных по шаблонам, с виртуальными конструкторами-деструкторами и обработкой исключений - вот тогда б кто-то мог вздрогнуть

Вас, как опытного кота - этим не напугать.

А в принципе Си от C++ не сильно отличаются.
Только в С++ намного больше возможностей и есть куча добавок.

Ну а это уже похоже на С++
Код: Выделить всё
// MyCODEDlg.h : header file
//
#if !defined(AFX_MYCODEDLG_H__E9E40839_9897_4379_A07D_898A3C5866B5__INCLUDED_)
#define AFX_MYCODEDLG_H__E9E40839_9897_4379_A07D_898A3C5866B5__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
/////////////////////////////////////////////////////////////////////////////
// CMyCODEDlg dialog
class CMyCODEDlg : public CDialog
{
// Construction
public:
CMyCODEDlg(CWnd* pParent = NULL); // standard constructor
// Dialog Data
//{{AFX_DATA(CMyCODEDlg)
enum { IDD = IDD_MYCODE_DIALOG };
int m_delay;
BOOL m_atc;
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMyCODEDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
HICON m_hIcon;
// Generated message map functions
//{{AFX_MSG(CMyCODEDlg)
virtual BOOL OnInitDialog();
afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
afx_msg void OnButton1();
afx_msg void OnButton2();
afx_msg void OnButton3();
afx_msg void OnButton4();
afx_msg void OnButton5();
afx_msg void OnButton6();
afx_msg void OnButton7();
afx_msg void OnButton8();
afx_msg void OnButton9();
afx_msg void OnButton0();
afx_msg void OnButtonEnter();
afx_msg void OnButtonClear();
virtual void OnOK();
afx_msg void OnButtonIntCall();
afx_msg void OnButtonIntClose();
afx_msg void OnCheck1();
afx_msg void OnChangeEdit1();
afx_msg void OnButton15();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MYCODEDLG_H__E9E40839_9897_4379_A07D_898A3C5866B5__INCLUDED_)
Объявление класса CMyCODEDlg
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 14:00:06
ChipKiller
DX168B... раз уж везде идет
if (i==, то наверное проще написать
... хотя конечно - хозяин - барин

.
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 14:09:43
DX168B
Можно было и через switch \ case, но тогда это мне в голову пришло, по этому разбор пошёл через if

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 14:14:22
lix
вывод всяких сообщение лучще сделать отдельным классом, чтобы удобно сохранять логи программы.
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 14:23:46
DX168B
Все логи пишутся в базу другой функцией, в том числе и ошибки запроса на чтение, если ID выступает за пределы таблицы. Ошибки пакетов с COM порта тоже регистрируются. В базе данных тоже создана пара триггеров для самостоятельного лога + в журнал винды регистрируются ошибки самой СУБД. Вот ошибка записи логов в базу выводится на экран. Там же не зря стоит return 1; в случае ошибки. После слёта из этой функции, далее снова ошибка извлекается из mysql_errno() и из mysql_error() и пишется в другую таблицу.
Если и там ошибка, отправляется административное оповещение в локальную сеть.
А на счёт класса - Вы верно намекнули. Надо будет продумать и переписать.

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 15:19:46
А.Андрей
ARV писал(а):турбопаскаль это тот же труп, что и CGA-EGA. Очень рекомендую
Delphi - тот же паскаль, но с ООП и вполне современно. если вы не намерены стать профессиональным программистом, С++ изучать так же нет особоых причин, во всяком случае, глубоко изучать, ибо там можно мозг сломать запросто, если он неокрепший

да яасно
Да он не поддерживает он ассемблерные вставки(но изуучать делфи всё равно нужно.......)
А ассемблерные вставки в ряде случаев НЕОБХОДИМЫ (при написании антивиря,например)
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 20:28:07
DX168B
А я на Си остановлюсь. Хоть мозг и ломает иногда,
но этот язык более кроссплатформенный

, еже-ли Delphi
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 22:22:53
ARV
А.Андрей писал(а):да яасно
Да он не поддерживает он ассемблерные вставки(но изуучать делфи всё равно нужно.......)
А ассемблерные вставки в ряде случаев НЕОБХОДИМЫ (при написании антивиря,например)
кто не поддерживает ассемблерные вставки? турбопаскаль? Delphi? оба поддерживают, и еще как! только создается впечатление, что для вас главное - это именно ассемблерные вставки, и вы готовы их пихать куда угодно

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Чт фев 03, 2011 23:23:34
А.Андрей
ARV писал(а):кто не поддерживает ассемблерные вставки? турбопаскаль? Delphi? оба поддерживают, и еще как! только создается впечатление, что для вас главное - это именно ассемблерные вставки, и вы готовы их пихать куда угодно

ой извините перепутал с визуальбейсиком
это не главное, я не фанатик, но в ряде случаев нужное
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 00:19:27
DX168B
Классная программа у меня получилась....

Кому интересно будет, отдам проект с исходником.

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 00:31:50
РадиоЛоматель
Эх, ну и гад же вы

Хотя я успел накропать сообщение.
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 00:34:56
DX168B
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 00:49:33
РадиоЛоматель
После вашего отсчета еще идет отсчет системный-25 секунд. Можно приложение завершить, но я запамятовал как оно называется... В системе есть. Когда-то тоже баловался с ним

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 01:01:23
FRIM@N
DX168B "гы-гы это прикол" убери, а то кирпичи плохо идут
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 01:19:03
DX168B
Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!
Добавлено: Пт фев 04, 2011 07:44:47
ARV
А.Андрей писал(а):это не главное, я не фанатик, но в ряде случаев нужное
даже интересно узнать хотя бы несколько ситуаций из этого ряда случаев... может, из вашей практики...