- 1
QString("a=%1 b=%2").arg("[%1]").arg("Shit happens")
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+24
QString("a=%1 b=%2").arg("[%1]").arg("Shit happens")
Вы думаете, что результат будет "a=[%1] b=Shit happens"?
Как бы не так! "a=[Shit happens] b=%2".
Причем эта "фича" вполне документирована. Но документирована она не в самом первом описании arg'а, а только в arg(const QString &a1, const QString &a2), в доку по которому я естественно никогда не заглядывал...
UPD: правильным вариантом будет QString("a=%1 b=%2").arg("[%1]", "Shit happens"), но тогда мы лишаемся поддержки форматирования, да и таким образом можно засунуть максимум 10 аргументов.
+15
for(int y=0; y<height; ++y)
{
for(int x=0; x<width; ++x)
b[y,x] = a[y,x];
}
+16
struct WideParams
{
WideParams(size_t CountParameters...):
Посоны, это бомба. Вот что я обнаружил в проекте.
+19
//generate the new objects
EnterCriticalSection(&csWinEvent);
value arr = alloc_array(windowStates.size());
int i=0;
for(
std::tr1::unordered_map<int,windowState>::const_iterator it = windowStates.begin();
it!=windowStates.end();
++it )
{
value o = alloc_empty_object();
//int hwnd
//int x,y,w,h
//int minimized,maximized,restored,closed
alloc_field(o, val_id("hwnd"), alloc_int(it->first));
alloc_field(o, val_id("window"), *(value*)GetWindowLongPtr((HWND)it->first,GWLP_USERDATA) );
alloc_field(o, val_id("x"), alloc_int(it->second.x));
alloc_field(o, val_id("y"), alloc_int(it->second.y));
alloc_field(o, val_id("w"), alloc_int(it->second.w));
alloc_field(o, val_id("h"), alloc_int(it->second.h));
alloc_field(o, val_id("minimized"), alloc_int(it->second.minimized));
alloc_field(o, val_id("maximized"), alloc_int(it->second.maximized));
alloc_field(o, val_id("restored"), alloc_int(it->second.restored));
alloc_field(o, val_id("closed"), alloc_int(it->second.closed));
val_array_set_i(arr,i,o);
++i;
}
windowStates.clear();
LeaveCriticalSection(&csWinEvent);
Casts ;]
+13
class TSettingGrouperator
+20
#include <iostream>
#include <functional>
using namespace std;
template<class TReceiver, class TResult>
struct TMessage
{
virtual const TResult sendTo(const TReceiver&) const = 0;
virtual const TResult sendTo(TReceiver&) const = 0;
virtual ~TMessage(void){}
};
template<class TReceiver, class T, class TResult=void>
struct TTypedMessage : public TMessage<TReceiver, TResult>
{
T _data;
explicit TTypedMessage(const T& data):_data(data)
{}
const TResult sendTo(const TReceiver& functor) const
{
return functor(_data);
}
const TResult sendTo(TReceiver& functor) const
{
return functor(_data);
}
};
class T1
{
typedef T1 TThis;
public:
void operator()(const int& i)const{cout <<"int"<< i<<endl;}
void operator()(const double& i)const{cout <<"double"<< i<<endl;}
void operator()(const std::reference_wrapper<double>& i)const{cout <<"double&"<< i.get()<<endl;}
template<class T>
void operator()(const T& i)const{cout << "UnknowenMesage"<<endl;}
};
class T2
{
typedef T2 TThis;
public:
void operator()(int i)const{cout <<"int"<< i<<endl;}
void operator()(double i)const{cout <<"doble"<< i<<endl;}
void operator()(std::reference_wrapper<double> i)const{cout <<"double&"<< i.get()<<endl;}
};
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(TReceiver& Receiver, TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(const TReceiver& Receiver, TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(TReceiver& Receiver, const TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
template<class TMessage, class TReceiver, class TResult=void>
TResult sendMessage(const TReceiver& Receiver, const TMessage& Message)
{
TTypedMessage<TReceiver, TMessage, TResult> TypedMessage(Message);
return TypedMessage.sendTo(Receiver);
}
int main() {
T1 a;
T2 b;
sendMessage(a, 10);
sendMessage(a, 10.0);
double d=0;
sendMessage(a, std::ref(d));
sendMessage(b, 10);
sendMessage(b, 10.0);
sendMessage(b, std::ref(d));
sendMessage(a, string("kokoko"));
int aa=6;
sendMessage(a, aa);
return 0;
}
Найдено на просторах Интранета:
http://ideone.com/pMSA1p
В чем смысл? Так получается больше кода?
+18
bool isRightTriangle(int a, int b, int c)
{
int przeciw=a;
if (b>przeciw) przeciw = b;
if (c>przeciw) przeciw = c;
if (przeciw=a)
if (a*a==b*b+c*c) return true;
else if (przeciw=b)
if (b*b==a*a+c*c) return true;
else if (przeciw=c)
if (c*c==a*a+b*b) return true;
return false;
}
+17
#include <iostream>
template< class Val >struct SwithClass
{
SwithClass( const Val & v ):val(v){}
void operator() (){}
template < class E, class F, class ... Args > void operator() ( E e, F f, Args ... args )
{
if( e==val ) f();
else (*this)( args... );
}
private:
Val val;
};
template< class Val > SwithClass<Val> Swith( const Val& v ){ return SwithClass<Val>(v);}
int main()
{
int x = 8;
Swith( x )
(
1, [](){ std::cout <<"x=1" << std::endl; },
8, [](){ std::cout <<"x=8" << std::endl; }
);
return 0;
}
http://ideone.com/Xbj46U
+22
int AzFl_PSD_Image::ReadIntFromPsdFile(const unsigned char *offset)
{
char i[4];
i[0] = offset[3];
i[1] = offset[2];
i[2] = offset[1];
i[3] = offset[0];
int *r = (int*)i;
return r[0];
}
Невиноватый я что програмисты из адоба биты задом на перед в файл пишут :`(
+16
QString QSqlResultPrivate::positionalToNamedBinding()
{
int n = sql.size();
QString result;
result.reserve(n * 5 / 4);
bool inQuote = false;
int count = 0;
for (int i = 0; i < n; ++i) {
QChar ch = sql.at(i);
if (ch == QLatin1Char('?') && !inQuote) {
result += qFieldSerial(count++);
} else {
if (ch == QLatin1Char('\''))
inQuote = !inQuote;
result += ch;
}
}
result.squeeze();
return result;
}
// Пример запроса:
// select * from some where d_t = "2012-11-08 12:00:00"
Словили сегодня вот такой глюк в кутишечке.
База данных отлично понимает строки и даты в двойных кавычках, все это даже работало какое-то время. Но когда попытались исполнить запрос с таймштампом в двойных кавычках (как в строке 25), начала возникать ошибка в духе "непонятные символы в дате". В одинарных же кавычках все работало. После копания в исходниках и гуглёжки выяснилась и причина - QtSql в упор не видит двойных кавычек, и пытается проставить в них именованные параметры (в нашем случае :00, :00)...
Если кому нужен быстрофикс - берем тут: https://bugreports.qt-project.org/browse/QTBUG-27159