- 1
sleh = UpCase(92); // просто слеш
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+144
sleh = UpCase(92); // просто слеш
Просто слеш.
+142
QString queryString = QString("SELECT `angle`, `heights` FROM `heights%1` WHERE `angle` / 10 ").arg(camera->cid());
if (from <= 0 || to > 360)
{
if (from <= 0) // to the right of North
{
from += 360;
qSwap<double>(from, to);
}
else if (to > 360) // to the left of North
{
to -= 360;
qSwap<double>(from, to);
}
from += 0.1;
to -= 0.1;
queryString += "NOT ";
}
queryString += QString("BETWEEN %1 AND %2").arg(from, 0, 'f', 1).arg(to, 0, 'f', 1);
извращался как мог, сколько дадите по шкале от 0 до 10?
+144
...
GameItem* new_game_item = GetGameItem(id);
bool flag = !new_game_item;
if (flag)
{
new_game_item = new GameItem();
}
...
Меня больше всего поразило название локальной переменной new_game_item, которая чаще даже совсем не new. Но кого это волнует...
+906
class LoaderLock
{
public:
void lock();
void unlock();
bool IsLocked() const;
LoaderLock() = default;
private:
LoaderLock(LoaderLock&) = delete;
LoaderLock(LoaderLock&&) = delete;
LoaderLock& operator=(LoaderLock&) = delete;
LoaderLock& operator=(LoaderLock&&) = delete;
bool _Locked = false;
ULONG _cookie = 0;
std::unique_ptr<void, std::function<void(void*)>> _ntdll{ LoadLibrary("NTDLL.DLL"), [](void* h){if (h)FreeLibrary((HMODULE)h); } };
typedef NTSTATUS(__stdcall*LdrLockLoaderLockFunc)(
ULONG Flags,
ULONG *State,
ULONG *Cookie);
LdrLockLoaderLockFunc _LdrLockLoaderLock = !_ntdll ? 0 : (LdrLockLoaderLockFunc)GetProcAddress((HMODULE)_ntdll.get(), "LdrLockLoaderLock");
typedef NTSTATUS(__stdcall*LdrUnlockLoaderLockFunc)(
ULONG Flags,
ULONG Cookie);
LdrUnlockLoaderLockFunc _LdrUnlockLoaderLock = !_ntdll ? 0 : (LdrUnlockLoaderLockFunc)GetProcAddress((HMODULE)_ntdll.get(), "LdrUnlockLoaderLock");
};
Уже давно минул 2014 год, а C++11 не перестает радовать нас размазанными по интерфейсу конструкторами и деструкторами.
+144
int spisok::kolvo()
{
return spisok::N;
}
+142
#define ns 7
#define nfio 15
Клевый стиль определения глобальных констант
+141
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
BitBtn1->Enabled=false;
String KolDaysInMonth=MonthDays[IsLeapYear(Edit1->Text.ToInt())][ComboBox1->ItemIndex];//кол-во дней в месяце выбранного года
String TimeOT="cast('"+String(ComboBox1->ItemIndex+1)+".01."+Edit1->Text+" 00:00:00' as datetime)";
String TimeDO="cast('"+String(ComboBox1->ItemIndex+1)+"."+KolDaysInMonth+"."+Edit1->Text+" 23:59:59' as datetime)";
String BTWOTDO="BETWEEN "+TimeOT+" and "+TimeDO;
AnsiString NomZav="";
AnsiString NomPar="";
//заявки
ADOQuery1->Close(); //and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and nomopr IN (select distinct nomoprl from kompar.dbf where deleted=0 and nompar IN (select distinct nompar from kompar.dbf where deleted=0 and datzaob NOT "+BTWOTDO+")))
ADOQuery1->SQL->Clear(); //and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and dakote NOT "+BTWOTDO+")
ADOQuery1->SQL->Add("select distinct nomzav from ochzav.dbf where deleted=0 and dakote "+BTWOTDO+" and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and dakote>"+TimeDO+") and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and nomopr IN (select distinct nomoprl from kompar.dbf where deleted=0 and datzaob IS NULL)) and nomzav NOT IN (select distinct nomzav from ochzav.dbf where deleted=0 and nomopr IN (select distinct nomoprl from kompar.dbf where deleted=0 and nompar IN (select distinct nompar from kompar.dbf where deleted=0 and nomoprl IN (select distinct nomopr from ochzav.dbf where deleted=0 and dakote IS NULL))))");
ADOQuery1->Open();
if (!ADOQuery1->Eof) {//если что то нашлось
while (!ADOQuery1->Eof) {
NomZav=NomZav+"'"+ADOQuery1->FieldByName("nomzav")->AsString.Trim()+"',";
ADOQuery1->Next();
}
NomZav=NomZav.Delete(NomZav.Length(),1);//обрезаем запятую на конце
//партии
ADOQuery1->Close();
ADOQuery1->SQL->Clear(); //and nompar NOT IN (select distinct nompar from kompar.dbf where deleted=0 and datzaob NOT "+BTWOTDO+")
ADOQuery1->SQL->Add("select distinct nompar from kompar.dbf where deleted=0 and nompar IN (select distinct nompar from kompar.dbf where deleted=0 and nomoprl IN (select distinct nomopr from ochzav.dbf where deleted=0 and nomzav IN ("+NomZav+")))");
ADOQuery1->Open();
if (!ADOQuery1->Eof) {//если что то нашлось
while (!ADOQuery1->Eof) {
NomPar=NomPar+"'"+ADOQuery1->FieldByName("nompar")->AsString.Trim()+"',";
ADOQuery1->Next();
}
NomPar=NomPar.Delete(NomPar.Length(),1);//обрезаем запятую на конце
}
}
if (NomZav.Trim().Length()==0||NomPar.Trim().Length()==0) {
ShowMessage("Не найденно завершённых заявок и партий за "+ComboBox1->Text+" "+Edit1->Text+" года");
BitBtn1->Enabled=true;
Abort();
}
if (Application->MessageBoxA(AnsiString("Вы действительно хотите удалить все завершённые заявки и партии за "+ComboBox1->Text+" "+Edit1->Text+" года?\n\n"
"Завершённые заявки: "+NomZav+"\nЗавершённые партии: "+NomPar).c_str(),"Удаление завершённых заявок и партий",MB_YESNO)==IDYES) {
//удаление партий из ochpar.dbf
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update ochpar.dbf set deleted=1 where deleted=0 and nompar IN ("+NomPar+")");
ADOQuery1->ExecSQL();
//удаление партий из kompar.dbf
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update kompar.dbf set deleted=1 where deleted=0 and nompar IN ("+NomPar+")");
ADOQuery1->ExecSQL();
//удаление заявок из ochzav.dbf
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add("update ochzav.dbf set deleted=1 where deleted=0 and nomzav IN ("+NomZav+")");
ADOQuery1->ExecSQL();
ShowMessage("Удаление партий и заявок за "+ComboBox1->Text+" "+Edit1->Text+" года завершено успешно");
}
BitBtn1->Enabled=true;
}
+141
AnsiString SQLAdderFictDel(TADOQuery * QueryForTry,/*для неотображаемых операций*/
TADOQuery * QueryForOpen,/*для отображаемых операций*/ AnsiString TableName,/*имя таблицы*/ AnsiString Deleted,/*имя поля "признак удаления"*/
AnsiString AutoInc,/*автоинкримент(уникальное в представлении СУБД)*/ AnsiString SQL_TestOnUnique,/*уникальные поля в представлении пользователя(одно или несколько, если таковых нет, то им будет являться автоинкримент(уникальное в представлении СУБД("and id = "+id_который_под_курсором)))*/
AnsiString SQL_Insert_Fields,/*имена полей, в которые надо внести значения*/ AnsiString SQL_Insert_Values,/*вносимые значения*/
AnsiString SQL_Update_Str,/*имена полей и вносимые значения*/ AnsiString CursorRec,/*значение уникального поля под курсором("0", если ToUpdating == false)*/ AnsiString Order,/*упорядочивание*/
bool ToUpdating,/*true, если используется для update*/ bool CursorToAddUpdRec,/*true, если нужно поместить курсор на добавленную запись(только если уникальное поле(в представлении СУБД) - автоинкримент)*/ bool ReturnRealFutureID)/*true, если нужно вернуть значение ID, которое будет добавлено в следующий раз*/
{
AnsiString ValToLocate,/*значение уникального поля будущей записи*/ DP;/*формирование значения уникального поля(либо первое попавшееся удалённое, либо под курсором)*/
if (CursorToAddUpdRec==true&&ToUpdating==false)//ПОИСК ЗНАЧЕНИЯ УНИКАЛЬНОГО ПОЛЯ БУДУЩЕЙ ЗАПИСИ
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select "+AutoInc+" from "+TableName+" where "+Deleted+" = 1 order by "+AutoInc+" asc");//отображаем то, что получилось
QueryForTry->Open();
if (QueryForTry->Eof)
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select max("+AutoInc+") from "+TableName+" where "+Deleted+" = 0");//отображаем то, что получилось
QueryForTry->Open();
ValToLocate=QueryForTry->Fields[0][0]->AsString.ToIntDef(0)+1;
}
else ValToLocate=QueryForTry->Fields[0][0]->AsString.ToInt();
}
else if (CursorToAddUpdRec==true&&ToUpdating==true) ValToLocate=CursorRec;
if (ToUpdating)
{//удаление выделенного поля
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("update "+TableName+" set deleted = 1 where "+AutoInc+" = "+CursorRec);
QueryForTry->ExecSQL();
}
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select distinct "+Deleted+" from "+TableName+" where "+Deleted+" = 0 "+SQL_TestOnUnique);//проверка на уникальность(есть ли запись со значениями соответствующих полей?)
QueryForTry->Open();
if (!QueryForTry->Eof)
{//если тест на уникальность провален(такая запись уже есть)
if (ToUpdating)
{//восстановление поля, удалённого при выделении
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("update "+TableName+" set deleted = 0 where "+AutoInc+" = "+CursorRec);
QueryForTry->ExecSQL();
}
MessageDlg("Такая запись уже существует!",mtWarning,TMsgDlgButtons()<<mbOK,0);
return ".FAIL.";
}
else
{//проверяются поля с фильтром удаления("удалённые")
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select distinct "+AutoInc+" from "+TableName+" where "+Deleted+" = 1");//выбрать поля в которых есть признак отсутствия информации(удалённые) и соответствующее им уникальное поле
QueryForTry->Open();
if (!QueryForTry->Eof)
{//если есть поля с фильтром удаления("удалённые")
if (ToUpdating) DP=CursorRec;//для обновления выбирается запись с тем же самым уникальным полем
else DP=QueryForTry->Fields[0][0]->AsString;//для добавления выбирается первая попавшаяся запись с признаком удаления
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("update "+TableName+" set "+Deleted+" = 0, "+SQL_Update_Str+" where "+AutoInc+" = "+DP);//отменить удаление для поля, присвоить ему значения
QueryForTry->ExecSQL();
}
else
{//если нет полей с фильтром удаления, то вставляем как в обычном SQL
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("insert into "+TableName+" ("+SQL_Insert_Fields+","+Deleted+") values("+SQL_Insert_Values+",0)");//SQL вставка
QueryForTry->ExecSQL();
}
QueryForOpen->Close();//отображение и сортировка
QueryForOpen->SQL->Clear();
QueryForOpen->SQL->Add("select * from "+TableName+" where "+Deleted+" = 0 "+Order);//отображаем то, что получилось
QueryForOpen->Open();
if (CursorToAddUpdRec)
{//установка курсора на добавленное значение
TLocateOptions Options;
Options<<loCaseInsensitive<<loPartialKey;
QueryForOpen->Locate(AutoInc,ValToLocate,Options);
}
if (ReturnRealFutureID)//ПОИСК ЗНАЧЕНИЯ УНИКАЛЬНОГО ПОЛЯ БУДУЩЕЙ ЗАПИСИ
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select "+AutoInc+" from "+TableName+" where "+Deleted+" = 1 order by "+AutoInc+" asc");//отображаем то, что получилось
QueryForTry->Open();
if (QueryForTry->Eof)
{
QueryForTry->Close();
QueryForTry->SQL->Clear();
QueryForTry->SQL->Add("select max("+AutoInc+") from "+TableName+" where "+Deleted+" = 0");//отображаем то, что получилось
QueryForTry->Open();
ValToLocate=QueryForTry->Fields[0][0]->AsString.ToIntDef(0)+1;
}
else ValToLocate=QueryForTry->Fields[0][0]->AsString.ToInt();
}
else if (ReturnRealFutureID==false&&CursorToAddUpdRec==false) return ".WIN.";
return ValToLocate;
}
}
+142
void __fastcall TForm1::Button1Click(TObject *Sender)
{
String Stroka, Str;
int DlinnaStroki, Position, Schetchik, i , j , x;
Stroka=Edit1->Text;
DlinnaStroki = Stroka.Length();
String SimvolRazdelitel=" ";
//модификация строки для добавления последнего слова
Stroka = Stroka + SimvolRazdelitel;
//вычисляет количество пробелов в строке
Schetchik = 1;
for (x = 1; x < DlinnaStroki; x++)
{
if (Stroka[x] == *SimvolRazdelitel.c_str())
Schetchik = Schetchik + 1;//количество разделительных символов
}
//разделяет строку по символу на слова
for (j = 0; j < Schetchik; j++)
{
Position = Stroka.Pos(SimvolRazdelitel);//разделительный символ
for (i = 1; i < Position; i++)
Str = Str + Stroka[i];
Stroka.Delete(1,Position);
Memo1->Lines->Add(Str);//слово добавляется сюда
Str = "";
}
}
+142
String notE(double exp)
{
if (exp < 0.0001 && exp > 0)//положительное число
{
exp += 0.0001;
String str = exp;
// str.c_str()[1] = ',';//принудительный децимальный сепаратор
str.c_str()[5] = '0';
return str;
}
if (exp > -0.0001 && exp < 0)//отрицательное число
{
exp -= 0.0001;
String str = exp;
// str.c_str()[2] = ',';//принудительный децимальный сепаратор
str.c_str()[6] = '0';
return str;
}
return exp;//большие числа, либо ноль
}
Принудительно отменяет научный формат