Страница 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==, то наверное проще написать

Код: Выделить всё

switch(i){
   case 0:
}
... хотя конечно - хозяин - барин :) .

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
Классная программа у меня получилась.... :))) :hunger:
Кому интересно будет, отдам проект с исходником. :)

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!

Добавлено: Пт фев 04, 2011 00:31:50
РадиоЛоматель
Эх, ну и гад же вы :)) Хотя я успел накропать сообщение.

Re: ВСЕМ ПОЛЬЗОВАТЕЛЯМ И ПРОГРАММИСТАМ СЮДА!

Добавлено: Пт фев 04, 2011 00:34:56
DX168B
:))) :))) :))) :))) :)))
А вот более замедленная (на 1 сек.)

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
А.Андрей писал(а):это не главное, я не фанатик, но в ряде случаев нужное
даже интересно узнать хотя бы несколько ситуаций из этого ряда случаев... может, из вашей практики...