Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#391: 2020-04-17 15:18:29 ЛС | профиль | цитата
nesco писал(а):
Давай бублики

Пока я сделал по-другому: Выделил спрайты в массив картинок. При этом, картинка-спрайт далее не изменяется, и все работает без "корректировок".
И видно, что при этом работает заметно быстрее, чем с "каждоразовой чисткой" маски прозрачности.
Т.е., Кладов делал эдакие выверты (см. TBitmap.StretchDrawTransparent в моем предыдущем посте) не просто так.

Не понятно только, как штатно сбрасывать эту маску прозрачности.
Как-то это должно делаться через метод CanvasChanged, который назначается в TBitmap.fCanvas.OnChange
Вроде бы, при рисовании на картинке - канва меняется. Следовательно, должен сработать метод, назначенный на TBitmap.fCanvas.OnChange
Вроде бы..........
Почему это не срабатывает при "наших штатных рисованиях" на Bitmap-ах -- пока не понимаю...

Вот демка для обнаружения "одноразовости" маски прозрачности:
Add(Gif,9102168,140,119)
{
BkColor=65535
DrawSource=2
AutoAnimation=1
Point(Stream)
link(onDraw,1347414:doLoad,[])
link(Stream,8582945:Stream,[])
}
Add(MemoryStream,8582945,154,56)
{
@Hint=#99:Здесь покоится GIF-файл, состоящий из фоновой картинки, лежащей в прямоугольнике < 0, 0, 640, 480 >|87:И 60-ти спрайтов размерами 64x64, и с координатами < 64*(i mod 10), 480+64*(i div 10) >|
}
Add(PaintBox,307876,210,56)
{
Width=640
Height=480
Point(doSetFocus)
}
Add(Bitmap,1347414,217,126)
{
}
Add(Img_Bmp,13156309,210,189)
{
link(onDraw,8919534:doCopy,[])
link(Bitmap,9252341:Var2,[])
link(SourceBitmap,15802692:Var2,[])
}
Add(Hub,7087970,105,126)
{
OutCount=3
link(onEvent1,9102168:doLoadFromStream,[])
link(onEvent2,5577369:doCreate,[(207,139)(207,146)])
link(onEvent3,13156309:doDraw,[(130,146)(130,195)])
}
Add(MainForm,14784633,56,112)
{
Left=10
Top=10
Width=640
Height=480
BorderStyle=1
ClientSize=0
Position=1
link(onCreate,7087970:doEvent1,[])
}
Add(Img_Bmp,2672945,392,245)
{
X=20
Y=20
Transparent=0
TransparentColor=65535
link(onDraw,307876:doRefresh,[(431,251)(431,111)(200,111)(200,62)])
link(Bitmap,6776562:Var3,[(398,117)])
link(SourceBitmap,7123280:Var3,[(405,173)])
}
Add(GetDataEx,9252341,210,112)
{
link(Data,307876:Bitmap,[])
}
Add(Bitmap,5577369,294,126)
{
HWidth=64
HHeight=64
Point(doCreate)
}
Add(Img_Bmp,10317049,294,245)
{
Point(Y)
link(onDraw,9778986:doDraw,[])
link(Bitmap,7123280:Var2,[])
link(SourceBitmap,15802692:Var3,[(307,180)])
link(Y,616536:Count,[(314,236)(286,236)(286,292)(244,292)])
}
Add(GetDataEx,7123280,294,168)
{
link(Data,5577369:Bitmap,[])
}
Add(GetDataEx,15802692,217,175)
{
link(Data,1347414:Bitmap,[])
}
Add(CounterEx,3466366,189,245)
{
Min=-600
Max=0
Step=64
Direct=1
Point(onThroughMin)
link(onNext,10317049:doDraw,[])
link(onThroughMin,616536:doNext,[])
}
Add(CounterEx,616536,238,252)
{
Min=-860
Max=-480
Step=64
Direct=1
Default=-480
}
Add(Timer,220061,140,245)
{
Interval=10
link(onTimer,3466366:doNext,[])
}
Add(Bitmap,9741532,350,189)
{
@Color=43520
HWidth=64
HHeight=64
Point(doCreate)
}
Add(Img_Copy,8919534,259,189)
{
@Color=43520
X=20
Y=20
Width=64
Height=64
link(onCopy,9741532:doLoad,[])
link(Source,3899978:Var2,[])
}
Add(GetDataEx,3899978,259,112)
{
Angle=3
link(Data,9252341:Var3,[])
}
Add(Img_Bmp,9778986,343,245)
{
@Color=43520
X=20
Y=20
Transparent=0
link(onDraw,2672945:doDraw,[])
link(Bitmap,6776562:Var2,[])
link(SourceBitmap,9741532:Bitmap,[])
}
Add(GetDataEx,6776562,343,112)
{
Angle=3
link(Data,3899978:Var3,[])
}
В эту демку надо загрузить ручками GIF из предыдущего архива (с gif-кой схема типа не загружается - шибко большая)
Вышеозначенная мной "доработка" исправляет ситуацию.
Но замедляет (по понятным причинам - лишнее создание/удаление динамического объекта, маски прозрачности) уже работающий процесс (где "одноразовость" всех устраивает).

Вот так вот.......

Редактировалось 6 раз(а), последний 2020-04-17 17:54:18
карма: 9

0
файлы: 1SpriteDemo_0.rar [70.7KB] [561]
Ответов: 1291
Рейтинг: 47
#392: 2020-04-27 02:52:48 ЛС | профиль | цитата
Работа с файловыми потоками.
Там есть неочевидный момент в установке смещения на 0 при КАЖДОМ считывании из элемента. Видимо при считывании счетчик - указатель байт остается на последнем значении байта.
Попробуйте отключить флажком сброс в ноль смещения и схема перестанет переключать картинки.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
файлы: 1Работа с файловыми потоками.zip [68.4KB] [569]
Ответов: 793
Рейтинг: 168
#393: 2021-05-15 20:05:51 ЛС | профиль | цитата
Несколько небольших примеров как можно использовать системный поиск(WindowsSearch) в своих программах:
VBJScript

Add(MainForm,2953706,98,126)
{
WindowsState=2
link(onCreate,224191:doWork,[])
}
Add(VBJScript,224191,154,140)
{
WorkPoints=#6:doWork|
EventPoints=#7:onQuery|
DataPoints=#8:findText|
Script=#31:Dim objConnection, objRecordSet|0:|22:Sub doWork(Data,Index)|0:|52:Set objConnection = CreateObject("ADODB.Connection")|50:Set objRecordSet = CreateObject("ADODB.Recordset")|0:|91:objConnection.Open "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';"|200:objRecordSet.Open "select system.itemname, system.itempathdisplay, System.ItemType, System.ItemTypeText, System.Search.HitCount from systemindex where contains('" & sys.findText & "' )", objConnection|0:|26:While Not objRecordset.EOF|25: strRes = vbNullString|42: For i=0 To objRecordset.Fields.Count-1|62: strRes = strRes & objRecordset.Fields(i).Value & vbTab|8: Next|22: sys.onQuery strRes|25: objRecordset.MoveNext|4:Wend|0:|19:objConnection.Close|27:Set objConnection = Nothing|26:Set objRecordSet = Nothing|0:|7:End Sub|0:|0:|4: |
UseName=0
link(onQuery,4784135:doAdd,[])
link(findText,10358745:Value,[])
}
Add(StringTable,4784135,210,140)
{
Left=270
Top=115
Align=5
Columns=#13:Имя файла=200|22:Расположение файла=800|20:Расширение файла=100|13:Тип файла=200|21:Кол-во совпадений=100|0:|
StrDelimiter="\t"
}
Add(Memory,10358745,154,84)
{
@Hint=#16:Текст для поиска|
Default=String(password)
AddHint(45,-41,105,13,@Hint)
}

PowerShell (версия 5 и выше)

Add(MainForm,15175452,63,119)
{
WindowsState=2
link(onCreate,4794102:doString,[])
}
Add(WinExec,11401622,175,119)
{
FileName="powershell"
Mode=0
Action="runas"
Point(doConsoleExec)
Point(onConsoleTerminate)
link(onConsoleTerminate,10986195:doLoad,[])
}
Add(FormatStr,4794102,119,133)
{
Mask="$query = 'select system.itemname, system.itempathdisplay, System.ItemType, System.ItemTypeText, System.Search.HitCount from systemindex where contains(' + ''' %1 ''' + ')'\r\n$provider = 'Provider=Search.CollatorDSO.1;Extended PROPERTIES="Application=Windows"'\r\n$adapter = new-object System.Data.OleDb.OleDBDataAdapter -Argument $query, $provider\r\n$results = new-object System.Data.DataSet\r\n\r\n$rowCount = $adapter.Fill($results)\r\n$results.Tables[0]|Export-Csv -Delimiter ';' -Encoding OEM -NoTypeInformation -Path .\list.csv"
link(onFString,11401622:doConsoleExec,[])
link(Str1,10856241:Value,[])
}
Add(Memory,10856241,119,84)
{
@Hint=#16:Текст для поиска|
Default=String(password)
AddHint(45,-41,105,13,@Hint)
}
Add(MTStrTbl,8868118,413,189)
{
Left=405
Top=210
Align=5
Name="asd"
link(CodePageSet,7188498:GetData,[])
}
Add(MST_Load,10986195,231,133)
{
FileName="list.csv"
MSTControl="asd"
link(onLoad,6636110:doEvent1,[])
}
Add(Charset,8474447,469,133)
{
link(onCharset,7941961:doReplace,[])
}
Add(EventFromData,7188498,413,133)
{
link(onEvent,8474447:doCharset,[])
}
Add(Replace,7941961,525,133)
{
SubStr="""
link(onReplace,7188498:doData,[(564,139)(564,125)(403,125)(403,139)])
}
Add(MST_ColAction,8546763,336,133)
{
Action=9
MaxColWidth=1000
Index=-2
MSTControl="asd"
}
Add(Hub,6636110,287,133)
{
link(onEvent1,8546763:doColAction,[])
link(onEvent2,12422362:doDelete,[(326,146)(326,209)])
}
Add(FileTools,12422362,336,189)
{
DelToRecycle=1
FileName="list.csv"
}

DS_OLEDB(вкладка “Базы данных”)

Add(MainForm,2953706,70,98)
{
WindowsState=2
Point(onClose)
link(onCreate,11260621:doOpen,[])
link(onClose,11260621:doClose,[])
}
Add(DS_OLEDB,11260621,119,112)
{
Name="WindowsSearch"
Driver="provider=Search.CollatorDSO;EXTENDED PROPERTIES="Application=Windows""
link(onCreate,434688:doString,[])
}
Add(DSC_Query,2124825,252,112)
{
DSManager="WindowsSearch"
link(onQuery,16232986:doAddRow,[])
link(onColumns,16232986:doAddCols,[])
}
Add(Memory,10856241,168,56)
{
@Hint=#16:Текст для поиска|
Default=String(password)
AddHint(45,-41,105,13,@Hint)
}
Add(FormatStr,434688,168,112)
{
Mask="select "System.ItemUrl", "System.ItemTypeText", "System.Search.HitCount" from systemindex where contains('%1')\r\n"
link(onFString,4286889:doEvent1,[])
link(Str1,10856241:Value,[])
}
Add(MTStrTbl,8868118,364,112)
{
Left=405
Top=210
Align=5
Name="asd"
}
Add(MST_DB,16232986,308,112)
{
MSTControl="asd"
}
Add(Hub,4286889,217,112)
{
link(onEvent1,2124825:doQuery,[])
link(onEvent2,8546763:doColAction,[(242,125)(242,167)])
}
Add(MST_ColAction,8546763,252,161)
{
Action=9
MaxColWidth=1000
Index=-2
MSTControl="asd"
}


Если “правильно” настроить параметры индексирования файлов “.sha”
Настройка индексирования.PNG
то поиск схем на компьютере по названию компонента, части кода и т.д. будет практически мгновенный.
индексирование SHA.png
карма: 16

0
Ответов: 793
Рейтинг: 168
#394: 2021-12-31 16:17:16 ЛС | профиль | цитата
Для пользователей браузера Google Chrome. Небольшая статистика посещения сайтов.
Интересно, на каком месте у вас сайт - forum.hiasm.com?

Add(MainForm,2953706,147,147)
{
Width=939
Height=399
Caption="Chrome history"
Point(onClose)
link(onCreate,6711967:doEvent1,[])
link(onClose,6598663:doEvent1,[(193,174)(193,272)])
}
Add(EnvVars,7002440,245,161)
{
Name="LOCALAPPDATA"
Point(doGet)
Point(onGet)
link(onGet,13065512:doStrCatDlm,[])
}
Add(StrCatDelim,11951715,616,315)
{
@Hint=#34:Расположение файла History у меня.|
Str2="\Google\Chrome\User Data\Profile 1\History"
AddHint(75,6,200,13,@Hint)
}
Add(FileTools,16151939,343,161)
{
link(onEnd,9907050:doOpen,[])
link(NewFileName,4874792:Var2,[])
}
Add(Dir,990626,350,49)
{
}
Add(StrCatDelim,5150297,350,98)
{
Str2="\\test.db"
link(Str1,990626:CurrentDir,[])
}
Add(FileTools,6046132,448,259)
{
link(FileName,7508651:Var3,[(454,145)])
}
Add(DS_SQLite,9907050,406,161)
{
Name="History"
Charset=1
link(onOpen,4186973:doEvent1,[])
link(FileName,7508651:Var2,[])
}
Add(DSC_Query,16391078,518,203)
{
SQL="SELECT urls.url,\r\n count (visit_Time) as visits \r\nFROM visits JOIN urls\r\n ON visits.url = urls.id\r\nWHERE (visits.visit_time < 100000000000000000) \r\nGroup BY urls.url\r\nOrder by visits desc;"
DSManager="History"
link(onQuery,22766:doAddRow,[])
link(onColumns,22766:doAddCols,[])
}
Add(MTStrTbl,7809938,777,161)
{
Width=923
Height=330
Align=5
Name="asd"
Point(doVisible)
}
Add(MST_DB,22766,567,203)
{
MSTControl="asdf"
}
Add(Hub,6598663,371,266)
{
link(onEvent1,9907050:doClose,[(396,272)(396,174)])
link(onEvent2,6046132:doDelete,[])
}
Add(Hub,6711967,203,161)
{
OutCount=4
link(onEvent1,5150297:doStrCatDlm,[(235,167)(235,104)])
link(onEvent2,7002440:doGet,[])
link(onEvent3,13273356:doColAction,[(235,181)(235,202)])
link(onEvent4,8927836:doColAction,[(228,188)(228,237)])
}
Add(GetDataEx,7508651,406,140)
{
Angle=3
link(Data,4874792:Var3,[])
}
Add(MST_ColAction,13273356,245,196)
{
Action=9
MaxColWidth=500
Index=-2
MSTControl="asd"
}
Add(GetDataEx,4874792,350,140)
{
link(Data,5150297:Result,[])
}
Add(InfoTip,7313851,91,392)
{
Info=#33:Location of Google Chrome history|10:Windows XP|100:C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default|106:C:\Documents and Settings\<username>\Local Settings\Application Data\Google\Chrome\User Data\Default\Cache|23:Windows Vista, 7, 8, 10|65:C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default|71:C:\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\Cache|8:Mac OS X|67:/Users/<username>/Library/Application Support/Google/Chrome/Default|60:/Users/<username>/Library/Caches/Google/Chrome/Default/Cache|10:Linux/Unix|46:/home/<username>/.config/google-chrome/Default|51:/home/<username>/.cache/google-chrome/Default/Cache|31:Format of Google Chrome history|9:Bookmarks|57:Chrome Bookmarks are stored in the 'Bookmarks' JSON file.|5:Cache|144:Chrome Cache is stored using an Index file ('index'), a number of Data Block files ('data_#'), and a number of separate data files ('f_######').|7:Cookies|87:Chrome Cookies are stored in the 'Cookies' SQLite database, within the 'cookies' table.|9:Downloads|119:Chrome Downloads are stored in the 'History' SQLite database, within the 'downloads' and 'downloads_url_chains' tables.|8:Favicons|234:Chrome Favicons are stored in the 'Favicons' SQLite database, within the 'favicons', 'favicon_bitmaps' and 'icon_mapping' tables. Older versions of Chrome stored Favicons in a 'Thumbnails' SQLite database, within the 'favicons' table.|12:Form History|176:Chrome Form History is stored in the 'Web Data' SQLite database, within the 'autofill' table. Older versions of Chrome stored associated dates within an 'autofill_dates' table.|6:Logins|162:Chrome Logins are stored in the 'Login Data' SQLite database, within the 'logins' table. Older versions of Chrome stored Logins in the 'Web Data' SQLite database.|8:Searches|163:Chrome Searches are stored in the 'History' SQLite database, within the 'keyword_search_terms' table. Associated URL information is stored within the 'urls' table.|12:Session Data|109:Chrome Session Data is stored in the 'Current Session', 'Current Tabs', 'Last Session' and 'Last Tabs' files.|10:Thumbnails|204:Chrome Thumbnails are stored in the 'Top Sites' SQLite database, within the 'thumbnails' table. Older versions of Chrome stored Thumbnails in a 'Thumbnails' SQLite database, within the 'thumbnails' table.|14:Website Visits|288:Chrome Website Visits are stored in the 'History' SQLite database, within the 'visits' table. Associated URL information is stored within the 'urls' table. Older versions of Chrome stored archived Website Visits in a separate 'Archived History' SQLite database, within the 'visits' table.|
HAlign=0
Width=1345
Height=501
Margin=10
}
Add(DSC_Query,13205430,518,119)
{
SQL="SELECT datetime(last_visit_time/1000000-11644473600,'unixepoch','localtime'),\r\n url \r\nFROM urls \r\nORDER BY last_visit_time DESC;"
DSManager="History"
}
Add(DSC_Query,1774469,518,161)
{
SQL="SELECT datetime(last_visit_time/1000000-11644473600,'unixepoch','localtime') AS 'date-time',\r\n url,\r\n title\r\nFROM urls\r\nWHERE date(last_visit_time/1000000-11644473600,'unixepoch','localtime') > date('now', '-1 day') \r\nORDER BY last_visit_time DESC;"
DSManager="History"
link(onQuery,9406249:doAddRow,[])
link(onColumns,9406249:doAddCols,[])
}
Add(MTStrTbl,8875967,777,203)
{
Width=923
Height=330
Align=5
Visible=1
Name="asdf"
Point(doVisible)
}
Add(TabControl,2629107,672,168)
{
Top=330
Width=923
Height=30
Align=4
Tabs=#23:История Chrome за сутки|21:Кол-во заходов на URL|
Bitmaps=[]
Bottom=0
link(onChange,10058744:doSet,[])
}
Add(MST_ColAction,8927836,245,231)
{
Action=9
MaxColWidth=500
Index=-2
MSTControl="asdf"
}
Add(Hub,4186973,469,161)
{
link(onEvent1,1774469:doQuery,[])
link(onEvent2,16391078:doQuery,[(508,174)(508,209)])
}
Add(MST_DB,9406249,567,161)
{
MSTControl="asd"
}
Add(MultiSetParam,10058744,721,168)
{
Parameters=#3:1;0|3:0;1|
Count=2
link(onSet1,7809938:doVisible,[])
link(onSet2,8875967:doVisible,[(767,181)(767,216)])
}
Add(StrCatDelim,13065512,294,168)
{
@Hint=#70:Если схема ничего не отображает измените путь к файлу History на свой.|
Str2="\Google\Chrome\User Data\Default\History"
link(onStrCatDlm,16151939:doCopy,[])
AddHint(99,150,197,26,@Hint)
}

карма: 16

0
394
Сообщение
...
Прикрепленные файлы
(файлы не залиты)