Zireael |
Отправлено: 18 Сентября, 2019 - 11:23:50
|
Эксперт
Покинул форум
Сообщений всего: 4464
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: Не возвращает 0
Ну ну.
CODE:external(INT, "HashMD5", "HashMD5", pathfolder()+"HashMD5.dll");
string filename="Z:\abc3221_re3.qqq"; // файл
char md5[32];
initialarray(#md5[0], 0);
messagebox(HashMD5(filename, address(#md5[0])));
Цитата: LoadCursorA там никак
CODE:#define IDC_CROSS 32515
external(INT, "LoadCursor", "LoadCursorA", "User32.dll");
external(INT, "SetCursor", "SetCursor", "User32.dll");
int cursor=LoadCursor(0, IDC_CROSS);
createdialog(0);
showdialog(0, "Диалог",300, 300, 300, 300, 1, 1);
// если курсор над диалогом, то курсор изменится
loop()
{
SetCursor(cursor);
sleep(10);
} |
|
|
007wan |
Отправлено: 18 Сентября, 2019 - 12:36:03
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Ну ладно - ладно, прав. Просто вчера никак не получалось и понял, что я затупил.
CODE: if(format(#Md5[0]) == 0)//думал вернет 0 и сравнивать с нулем
Думал если изображение нету, то вернет хеш = 0, а потов вспомнил, что он возвращает даже такое же хеш какой был, когда удалено изображение.
----
Цитата: #define IDC_CROSS 32515
А, он уже преобразован макросом...Я думал нужно самому преобразовывать.
---
Всё работает, спасибо.
---
Поменял чуть принцип.
Код (Отобразить)CODE:
char Md5[32];
string Hash_Images[3] =
{"7330666d94ccf730d332fcf311e09eea",
"33042642b0f9d1c13db4b3a43c540613",
"6aec253fda23825e879ac87cf822037a"};
int Verify_Image[3];
for (int gh=0; gh<sizearray(Hash_Images); gh++)
{
int Status = HashMD5(temp_fold+"Image_"+format(gh)+".bmp", address(#Md5[0]));//ловим (открылся или нет) и получаем хеш в любом случаи
if (Status == 1)//если открылся
{
if(format(#Md5[0]) == Hash_Images[gh])//сравниваем хеш
{
Verify_Image[gh] = 1;//удачно
}
else
{
Verify_Image[gh] = 0;//не подходит
}
}
else//не открылся 0
{
Verify_Image[gh] = 0;//пишем
}
}
(Добавление)
Это ошибка?
CODE:
int a[3];
int b[sizearray(a)];
|
|
|
Kibor |
Отправлено: 18 Сентября, 2019 - 12:44:23
|
Эксперт
Просматривает форум
Сообщений всего: 8217
Дата рег-ции: Март 2013
Откуда: Одесса
Репутация: 357
|
007wan пишет: Это ошибка?
CODE:
int a[3];
int b[sizearray(a)];
Это да. Хотя оно вроде сработает, но память не выделится и будет записано куда то дальше. Что приведет к краху потом.
Это нет
CODE:int a[3];
new int b[sizearray(a)];
b[0]=5;
messagebox (b[0]); |
|
|
007wan |
Отправлено: 18 Сентября, 2019 - 12:53:01
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Kibor пишет: Это да. Хотя оно вроде сработает, но память не выделится и будет записано куда то дальше. Что приведет к краху потом.
ПОЧЕМУ??
CODE:int a[3];//объявит по порядку
int b[sizearray(a)];//так как ранее объявлена выше, то перейдет к этой и возмет из первой |
|
|
007wan |
Отправлено: 18 Сентября, 2019 - 13:19:39
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
В этом скрипте:
-Распаковка изображения в нужный момент(100% делится на количество изображений[В данном случаи всего 3 изображения])
-Вывод прямоугольника и текста распаковки в нужный момент.
-Проверка на подлинность изображений(ДО)
Куда вписать цикл, что бы распаковывал не все изображений, а только часть, которая не прошла валидность(изменена или удалена). Переменная Verify_Image[3] для 3 изображений и в каждом массиве либо 1 - прошла проверку, либо 0 не прошла проверку.
Так же есть переменная "скорость полосы". Как сделать, что бы если ВСЕ изображения прошли проверку и все равны 1, то полоса загрузки будет со скоростью "Как сейчас+в 2 раза", а если хотя одна или все или две, то со скоростью "Как сейчас".
Код (Отобразить)CODE: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");
double Speed = 0.01;
char Md5[32];
string Hash_Images[3] =
{"7330666d94ccf730d332fcf311e09eea",
"33042642b0f9d1c13db4b3a43c540613",
"6aec253fda23825e879ac87cf822037a"};
int Verify_Image[3];
int coord_rectangle[4] = {Display_Width/2-160, Display_Height/2-100, 300, 130};
int hdc, DC, bitmapDC;
hdc = GetDC(0);
DC = CreateCompatibleDC(hdc);
bitmapDC = CreateCompatibleBitmap(hdc, coord_rectangle[2], coord_rectangle[3]);
SelectObject(DC, bitmapDC);
int Select_Pen1, Select_Brush1;
int Object_Pen1, Object_Brush1;
string temp_fold = tempfolder();
string path_fold = pathfolder();
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};
int num = 33;//100 ïðîöåíòîâ äåëèì íà 3 èçîáðàæåíèÿ
Object_Pen1 = CreatePen(PS_INSIDEFRAME, 2, 6908265);
Object_Brush1 = CreateSolidBrush(16777215);
for (int gh=0; gh<sizearray(Hash_Images); gh++)//проверка на открытость и хеш изображения
{
int Status = HashMD5(temp_fold+"Image_"+format(gh)+".bmp", address(#Md5[0]));
if (Status == 1)
{
if(format(#Md5[0]) == Hash_Images[gh])
{
Verify_Image[gh] = 1;
}
else
{
Verify_Image[gh] = 0;
}
}
else
{
Verify_Image[gh] = 0;
}
}
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]);
}
for (int g=percent; g>=num; g++)//вывод текста на прямоугольник, так же распаковка изображений
{
string Text_Loading = "Unpack: C:\...\Temp\Image_"+format(percent/33-1);
num = num+33;
TextOut(DC, 20, 70, Text_Loading, size(Text_Loading)+1);
unpack (path_fold+"\Image_"+format(percent/33-1)+".bmp", temp_fold+"Image_"+format(percent/33-1)+".bmp", 0);
loadimage (#Image_1[0][0], temp_fold+"Image_"+format(percent/33-1)+".bmp");
break;
}
Select_Pen1 = SelectObject(DC, Object_Pen1);
Select_Brush1 = SelectObject(DC, Object_Brush1);
Rectangle(DC, 0, 0, coord_rectangle[2], coord_rectangle[3]);
SetTextColor(DC, 255);
SetBkMode(DC, 1);
TextOut(DC, 120, 10, "prog", 8);
TextOut(DC, 240, 70, format(percent)+"%", size(format(percent))+1);
int old_font = SelectObject (DC, font);
if (percent < 100)
{
TextOut(DC, 20, 70, Text_Loading, size(Text_Loading)+1);
}
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, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3],
DC, 0, 0, coord_rectangle[2], coord_rectangle[3], ftn);
sleep(1);
}
}
looptime(10)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
if(percent == 100)
{
looptime(4000)
{
BitBlt(hdc, coord_rectangle[0], coord_rectangle[1], coord_rectangle[2], coord_rectangle[3], DC, 0, 0, SRCCOPY);
sleep(1);
}
SelectObject(DC, Select_Pen1);
SelectObject(DC, Select_Brush1);
DeleteDC(DC);
DeleteObject(bitmapDC);
ReleaseDC(0, hdc);
resettextout(1);
}
sleep(100*Speed);
}
}
(Добавление)
А если по sendgetweb открывается файл фтп, то можно ли скрыть этот файл? Что бы никто его не смог открыть через браузер? Просто вдруг я хочу там хранить чужие пароли...
(Добавление)
Может Chmod? Ftp server files находится в zzz com ua |
|
|
007wan |
Отправлено: 18 Сентября, 2019 - 16:13:46
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Кому нужно:
Файл констант на данный момент их 239 шт.
Constants.txt
(Добавление)
Как сделать иконку ститку? Не методом наложения textou ами, и растягиванием, а просто, что бы она была в левом углу посередине статика, а вправо был текст
(Добавление)
Я еще такой принцип придумал при получении лицензии с сервера фтп и чтения файла итд...
Суть: при запуске проверяет файл, если получен текст "" или же цифра(либо 0, либо 1) не равная переменной(0 или 1), которая дается при получении лицензии, то дается сообщение о получении лицензии(куплена), потом записывается в файл"0", а при повторном запуске уже сообщния не будет, а будет только если файла не будет стерт или же пока не будет получено другое сообщение, например, о том, что на закончилась(лицензия), таким образом навящевых сообщений не будет, а только 1 раз, либо получил, либо нет.
(Добавление)
Тоесть всё новое будет оповещатся 1 раз, а старое - никогда, до тех пор, пока не будет получено новое.
(Добавление)
Знаю как реализовать, но с изъяном и не понимаю как решить его:
Если файл был изначально пустым или текст в этом файле был, допустим, 0 для секции License_Message, то при запуске с сервера получит лицензию, а если ее нету, то запишет в отдельную переменную 0, а если есть, то 1. И при сравнивании 0 с 0, получим, что сообщение выводить не нужно, но если это первый запуск программы, то как это решить?
(Добавление)
Нужно как-то выводить сообщение, когда оно изменилось, а когда не изменилось не выводить, и учитывая пустой файл и первый запуск программы. я хрен знает) |
|
|
007wan |
Отправлено: 19 Сентября, 2019 - 16:09:54
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Вопрос: НАпример, мы создаем 10 контролов через for как в момент цикла дать определенному контролу дополнительный текст? А то не врубаюсь, всё ломаю голову над этим.
(Добавление)
Нажал вперед и ничего!
(Добавление)
Что не так?
CODE:function Selected_Tabs()
{
Selected_Tab1 = sendmessage(TCM_GETCURSEL, 0, 0, formatiw(Object_Tab1));
if (Selected_Tab1 == 0)
{
ShowWindow(Object_Edit1, SW_HIDE);
for (int eu = 0; eu<sizearray(Object_Static); eu++)
{
ShowWindow(Object_Checkbox[eu], SW_SHOW);
ShowWindow(Object_Checkbox2[eu], SW_HIDE);
ShowWindow(Object_Static[eu], SW_HIDE);
}
}
//===================
if (Selected_Tab1 == 1)//при выборе мигают все контролы
{
ShowWindow(Object_Edit1, SW_HIDE);
for (int et = 0; et<sizearray(Object_Static); et++)
{
ShowWindow(Object_Checkbox[et], SW_HIDE);
ShowWindow(Object_Static[et], SW_HIDE);
ShowWindow(Object_Checkbox2[et], SW_SHOW);
}
}
//===================
if (Selected_Tab1 == 2)
{
ShowWindow(Object_Edit1, SW_SHOW);
for (int bv = 0; bv<sizearray(Object_Static); bv++)
{
ShowWindow(Object_Checkbox[bv], SW_HIDE);
ShowWindow(Object_Checkbox2[bv], SW_HIDE);
ShowWindow(Object_Static[bv], SW_SHOW);
}
}
} |
|
|
007wan |
Отправлено: 20 Сентября, 2019 - 15:34:41
|
Эксперт
Покинул форум
Сообщений всего: 1837
Дата рег-ции: Март 2017
Репутация: -2
|
Ниже есть код.
Код (Отобразить)CODE:function getmessage(1, WM_CREATE)
{
SecondaryWindow = formatiw(gethwnd(1));
Style1 = GetWindowLong(gethwnd(1), -16);
SetWindowLong(gethwnd(1), -16, Style1 + WS_MINIMIZEBOX);
Object_Font1 = CreateFont(-13, 0, 0, 0, 400, 0, 0, 0, 0, 0, 0, 0, 0, "Times New Roman");
Object_Group1 = CreateWindow(0, "BUTTON", "Настройки программы", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | BS_CENTER, 10, 10, 320, 130, gethwnd(1), 0, 0, 0);//130
for (int a=0; a<sizearray(Object_Checkbox); a++)
{
if (a < sizearray(Object_Checkbox)-2)//вычесть при добавлении галочки!!!
{
Object_Checkbox[a] = CreateWindow(0, "BUTTON", Text_Checkbox[a], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 20+step, 300-step, 20, Object_Group1, 0, 0, 0);
SendMessage(Object_Checkbox[a], WM_SETFONT, Object_Font1, 1);
step = step+20;
}
}
Object_Checkbox[5] = CreateWindow(0, "BUTTON", Text_Checkbox[5], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 20+130, 300, 20, gethwnd(1), 0, 0, 0);
Object_Checkbox[6] = CreateWindow(0, "BUTTON", Text_Checkbox[6], BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE, 10, 20+150, 300, 20, gethwnd(1), 0, 0, 0);
} Вопрос: Если Object_Group1 чисто логически является "слоём", на котором будут контролы, то можно вместо этого слоя использовать растровое изображение, а потом показывать/скрывать контролы не по очередно, а скрывать сам слой(изображение, на котором эти контролы, а оно вместе с ним скроется), так можно? |
|
|
|