Zireael |
Отправлено: 27 Августа, 2019 - 15:07:26
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Удалить повторящиеся строки в файле (Отобразить)CODE:string path_in="C:\123.txt"; // в каком файле искать
string path_out="C:\456.txt"; // куда сохранить результат
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s;
regexreplace(-1, #s, format(#c[0], count_symbol), "^(.+?)$\s+?^(?=.+^\1$)", "", SINGLELINE | MULTILINE); // удалить повторяющиеся строки
strcpy(#c[0], s);
if(fopen(path_out, "wb"))
{
fwriteb(#c[0], size(s)); fclose();
}
} |
|
|
007wan |
Отправлено: 27 Августа, 2019 - 15:13:53
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Удалить повторящиеся строки в файле (Отобразить)CODE:string path_in="C:\123.txt"; // в каком файле искать
string path_out="C:\456.txt"; // куда сохранить результат
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s;
regexreplace(-1, #s, format(#c[0], count_symbol), "^(.+?)$\s+?^(?=.+^\1$)", "", SINGLELINE | MULTILINE); // удалить повторяющиеся строки
strcpy(#c[0], s);
if(fopen(path_out, "wb"))
{
fwriteb(#c[0], size(s)); fclose();
}
}
Надо не удалить, а показать
(Добавление)
Показать какие именно повторяются
(Добавление)
А извините за странный вопрос: но как обозвать правильно переменные? А то я уже час сижу думаю. Просто у каждой переменной должна быть какая-то логическая связь, например, rect - Rectangle - прямоугольник. Сокращение я убираю и делаю более читаемым и понятным скрипт, но некоторые мне не понять, например, созданый байт через char c[1]; и другие.код (Отобразить)CODE:#define GRADIENT_FILL_RECT_V 1
#define PS_INSIDEFRAME 6
#define SRCCOPY 13369376
#define RUSSIAN_CHARSET 204
#define OUT_DEFAULT_PRECIS 0
#define CLEARTYPE_QUALITY 5
#define FF_DONTCARE 0
#define CLIP_DEFAULT_PRECIS 0
#define MUTEX_ALL_ACCESS 2031617
#define FLASHW_TRAY 2
#define FLASHW_TIMER 4
#define FLASHW_STOP 0
external(INT, "FlashWindow", "FlashWindowEx", "User32.dll");
external(INT, "CreateMutex", "CreateMutexA", "Kernel32.dll");
external(INT, "OpenMutex", "OpenMutexA", "Kernel32.dll");
external(INT, "ReleaseMutex", "ReleaseMutex", "Kernel32.dll");
external(INT, "CloseHandle", "CloseHandle", "Kernel32.dll");
external(INT, "FindWindow", "FindWindowExA", "user32.dll");
external(INT, "GetModuleFileName", "GetModuleFileNameA", "Kernel32.dll");
external(INT, "GetDC", "GetDC", "User32.dll");
external(INT, "DeleteDC", "DeleteDC", "Gdi32.dll");
external(INT, "ReleaseDC", "ReleaseDC", "User32.dll");
external(INT, "GradientFill", "GradientFill", "Msimg32.dll" );
external(INT, "Rectangle", "Rectangle", "Gdi32.dll");
external(INT, "SelectObject", "SelectObject", "Gdi32.dll");
external(INT, "DeleteObject", "DeleteObject", "Gdi32.dll");
external(INT, "CreateSolidBrush", "CreateSolidBrush", "Gdi32.dll");
external(INT, "CreatePen", "CreatePen", "Gdi32.dll");
external(INT, "CreateCompatibleDC", "CreateCompatibleDC", "Gdi32.dll" );
external(INT, "CreateCompatibleBitmap", "CreateCompatibleBitmap", "Gdi32.dll" );
external(INT, "BitBlt", "BitBlt", "Gdi32.dll" );
external(INT, "TextOut", "TextOutA", "Gdi32.dll" );
external(INT, "SetTextColor", "SetTextColor", "Gdi32.dll" );
external(INT, "SetBkMode", "SetBkMode", "Gdi32.dll" );
external(INT, "CreateFont", "CreateFontA", "Gdi32.dll" );
external(INT, "AlphaBlend", "AlphaBlend", "Msimg32.dll" );
char Name[16384];
char buffer[1];
string name_exe;
GetModuleFileName(0, address(#Name[0]), sizearray(Name));
regexsearch(1, #name_exe, format(#Name[0]), "[^\\]+(?=.exe)");
win w = window(name_exe);
int FLASHWINFO1[5] = {20, formatwi(w), FLASHW_TRAY | FLASHW_TIMER, 0, 0};
int FLASHWINFO2[5] = {20, formatwi(w), FLASHW_STOP, 0, 0};
int my_mutex = Mutex("any_name_mutex");
enabletimer(0);
function Set_Loading()
{
char BLENDFUNCTION[4] = {0, 0, 20, 0}
int ftn = codhexi(#BLENDFUNCTION[0], 4);
int Display_Color, Display_Width, Display_Height;
getdisplay(Display_Color, Display_Width, Display_Height);
int font = CreateFont(14, 0, 0, 0, 100, 0, 0, 0, RUSSIAN_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, CLEARTYPE_QUALITY, FF_DONTCARE, "Arial");
int Rectangle_Size1[4] = {Display_Width/2-160, Display_Height/2-100, 300, 130};
int hdc, DC, bitmapDC;
hdc = GetDC(0);
DC = CreateCompatibleDC(hdc);
bitmapDC = CreateCompatibleBitmap(hdc, Rectangle_Size1[2], Rectangle_Size1[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
char TRIVERTEX[64];
int coord[8] = {20, 55, 280, 65, 20, 55, 280, 65};
int color[4] = {3329330, 0, 9470064, 65539};
int rect[4] = {0, 1, 2, 3};
Object_Pen1 = CreatePen(PS_INSIDEFRAME, 2, 6908265);
Object_Brush1 = CreateSolidBrush(16777215);
for(int i=0; i<=coord[2]-coord[0]; i=i+(coord[2]-coord[0])/100)
{
int percent = i/(coord[2]-coord[0])*100;
coord[4] = coord[0]+i;
for(int s=0; s<2; s++)
{
codhex(coord[s*4], #TRIVERTEX[s*32]);
codhex(coord[s*4+1], #TRIVERTEX[s*32+4]);
codhex(rvalue(color[s*2]) * 256, #TRIVERTEX[s*32+8]);
codhex(gvalue(color[s*2]) * 256, #TRIVERTEX[s*32+10]);
codhex(bvalue(color[s*2]) * 256, #TRIVERTEX[s*32+12]);
codhex(coord[s*4+2], #TRIVERTEX[s*32+16]);
codhex(coord[s*4+3], #TRIVERTEX[s*32+20]);
codhex(rvalue(color[s*2+1]) * 256, #TRIVERTEX[s*32+24]);
codhex(gvalue(color[s*2+1]) * 256, #TRIVERTEX[s*32+26]);
codhex(bvalue(color[s*2+1]) * 256, #TRIVERTEX[s*32+28]);
}
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, Rectangle_Size1[2], Rectangle_Size1[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "K2019Bot", 8);
TextOut(DC, 240, 70, format(percent)+"%", size(format(percent))+1);
int old_font = SelectObject (DC, font);
TextOut(DC, 20, 70, "Unpack: C:\...\Temp\Image_0.bmp", 31);
SelectObject (DC, old_font);
GradientFill(DC, address(#TRIVERTEX[0]), 4, address(#rect[0]), 2, GRADIENT_FILL_RECT_V);
if(i == 0)
{
looptime(4000)
{
AlphaBlend(hdc, Rectangle_Size1[0], Rectangle_Size1[1], Rectangle_Size1[2], Rectangle_Size1[3],
DC, 0, 0, Rectangle_Size1[2], Rectangle_Size1[3], ftn);
sleep(1);
}
}
looptime(10)
{
BitBlt(hdc, Rectangle_Size1[0], Rectangle_Size1[1], Rectangle_Size1[2], Rectangle_Size1[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
if(percent == 100)
{
looptime(4000)
{
BitBlt(hdc, Rectangle_Size1[0], Rectangle_Size1[1], Rectangle_Size1[2], Rectangle_Size1[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
createdialog(0);
showdialog(0, "Диалог", 300, 300, 300, 300, 4, 1);
}
}
}
loop()
{
sleep(10);
}
function getmessage(0, WM_CLOSE)
{
ReleaseMutex(my_mutex);
CloseHandle(my_mutex);
}
function Mutex(string s)
{
if(OpenMutex(MUTEX_ALL_ACCESS, 0, s))
{
int handle = FindWindow(0, 0, 0, name_exe);
while (handle != 0)
{
Write_Wuffer('1', handle);
handle = FindWindow(0, handle, 0, name_exe);
}
close();
}
else
{
Set_Loading();
}
return CreateMutex(0, 1, s);
}
function Write_Buffer(char cc, int handle)
{
char c[1] = {cc};
writebuffer(#c[0], 1, formatiw(handle));
}
CREATE_TIMER(0, 500)
{
readbuffer(#buffer[0], 1);
if(buffer[0] == '1')
{
Write_Buffer('0', formatwi(w));
FlashWindow(address(#FLASHWINFO1[0]));
pause(2000);
FlashWindow(address(#FLASHWINFO2[0]));
}
} Что бы не путатся и не вгладываться и вникать что за переменные и для чего.
(Добавление)
007wan пишет: 1) Почему вы не рекламируйте свою программу, что бы больше людей пользовались ею? можно делать боты которую будут рекламировать прогу или автоматом это делать |
|
|
Zireael |
Отправлено: 28 Августа, 2019 - 02:17:47
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Показать какие именно повторяются
CODE:string path_in="C:\123.txt"; // в каком файле искать
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s[9999];
int count_repeat=regexsearch(sizearray(s), #s[0], format(#c[0], count_symbol), "^([^\r]+?)$\r\n?^(?=.+^\1$)", MULTILINE);
messagebox("Найдено повторяющихся строк: "+format(count_repeat));
for(int i=0; i<count_repeat; i++)messagebox(s[i]);
} |
|
|
007wan |
Отправлено: 28 Августа, 2019 - 08:21:05
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: Показать какие именно повторяются
CODE:string path_in="C:\123.txt"; // в каком файле искать
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s[9999];
int count_repeat=regexsearch(sizearray(s), #s[0], format(#c[0], count_symbol), "^([^\r]+?)$\r\n?^(?=.+^\1$)", MULTILINE);
messagebox("Найдено повторяющихся строк: "+format(count_repeat));
for(int i=0; i<count_repeat; i++)messagebox(s[i]);
}
Не работает. Взял рандомно из файла то, что уже есть WS_GROUP 131072 и положил в конец самый. А показало повторяющихся 0
(Добавление)
Путь текстового файла я взял из свойств его
(Добавление)
Вот сам файл:
------- |
|
|
007wan |
Отправлено: 28 Августа, 2019 - 08:37:55
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor пишет: 007wan пишет: Да какая разница?
В полезных и бесполезных ссылках, которые открывают главную страницу левого сайта. Это бесплатный хостинг. Извиняюсь, что первый файл убежал) я просто не туда внизу что-то нажал и всё пропало : ) |
|
|
Zireael |
Отправлено: 28 Августа, 2019 - 10:46:31
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Не работает.
Добавить флаг SINGLELINE.
Показать повторяющиеся строки в файле (Отобразить)CODE:string path_in="C:\Constants.txt"; // в каком файле искать
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s[9999];
int count_repeat=regexsearch(sizearray(s), #s[0], format(#c[0], count_symbol), "^([^\r]+?)$\r\n?^(?=.+^\1$)", SINGLELINE | MULTILINE);
messagebox("Найдено повторяющихся строк: "+format(count_repeat));
for(int i=0; i<count_repeat; i++)messagebox(s[i]);
}
Удалить повторяющиеся строки в файле (Отобразить)CODE:string path_in="C:\Constants.txt"; // в каком файле искать
string path_out="C:\Constants2.txt"; // куда сохранить результат
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s;
regexreplace(-1, #s, format(#c[0], count_symbol), "^([^\r]+?)$\r\n?^(?=.+^\1$)", "", SINGLELINE | MULTILINE); // удалить повторяющиеся строки
strcpy(#c[0], s);
if(fopen(path_out, "wb"))
{
fwriteb(#c[0], size(s)); fclose();
}
}
Непонятно зачем их показывать, чтобы вручную удалять? |
|
|
007wan |
Отправлено: 28 Августа, 2019 - 10:51:49
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Zireael пишет: Цитата: Не работает.
Добавить флаг SINGLELINE.
Показать повторяющиеся строки в файле (Отобразить)CODE:string path_in="C:\Constants.txt"; // в каком файле искать
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s[9999];
int count_repeat=regexsearch(sizearray(s), #s[0], format(#c[0], count_symbol), "^([^\r]+?)$\r\n?^(?=.+^\1$)", SINGLELINE | MULTILINE);
messagebox("Найдено повторяющихся строк: "+format(count_repeat));
for(int i=0; i<count_repeat; i++)messagebox(s[i]);
}
Удалить повторяющиеся строки в файле (Отобразить)CODE:string path_in="C:\Constants.txt"; // в каком файле искать
string path_out="C:\Constants2.txt"; // куда сохранить результат
char c[9999999];
if(fopen(path_in, "rb"))
{
int count_symbol=freadb(#c[0], sizearray(c))-1; fclose();
string s;
regexreplace(-1, #s, format(#c[0], count_symbol), "^([^\r]+?)$\r\n?^(?=.+^\1$)", "", SINGLELINE | MULTILINE); // удалить повторяющиеся строки
strcpy(#c[0], s);
if(fopen(path_out, "wb"))
{
fwriteb(#c[0], size(s)); fclose();
}
}
Непонятно зачем их показывать, чтобы вручную удалять?
Что бы он не ошибся и не удалился весь файл) Ну мало ли. Да и проверить хотя бы как это работает и что делает, что бы показывал что удаляет. |
|
|
|