玉米
沙茶 豬油 花生 糯米 芝麻 薑 麥芽糖 蜂蜜
玉米粉 豬皮 洋蔥粉 芥末醬 蔥乾 魚乾 蒜頭
南瓜 香菇 洋蔥 沙茶醬 魚皮 生薑 蒜頭 九層塔 鹽 醬油 冰糖 胡椒粉 黑麻油
白芝麻醬 香菇素蠔油 細砂糖 奶油 蒜末
魚露 蚝油 鮮雞粉 冰糖 甘草粉
2021年12月28日 星期二
Framework for 2D and isometric games development
Framework for 2D and isometric games development in BlitzMax.
https://gcup.ru/load/gamedev_lib/dwlab/18-1-0-342
Официальный сайт: http://code.google.com/p/dwlab/
Русскоязычная группа ВКонтакте: http://vk.com/dwlab
Digital Wizard's Lab Framework for 2D and isometric games development in BlitzMax.
https://www.moddb.com/engines/blitz-max/images/the-windows-ide-hosting-an-intense-session-of-rock
https://creatools.gameclassification.com/EN/index.html
https://www.syntaxbomb.com/blitzmax-blitzmax-ng/modules-list/
thought I'd repost my modules/apps list here to help get things going. This version allows you to browse by category.
Thanks for making this a sticky Qube. Additions and corrections are most welcome.
Module Collections
2d Frameworks
2d Drivers
3d Engines
2d Audio
3d Audio
Particles
3d Libraries
3d Physics
GUI
GUI Builders
GUI Gadgets
GUI Drivers
Networking
Database
File Formats
Controllers
Open Source Games
Applications
IDEs
« Last Edit: June 21, 2017, 13:20:13 by markcwm »
https://forum.ragezone.com/f921/delphi-visual-gm-handtool-v2-834829/
[Delphi] Visual GM HandTool v2 (for any version)
-Rewrite dump code now it load faster than previous version.
-Add supports GMS,KMS,EMS,MSEA.
-Full Equipment's details/information.
-100% Ids.Auto copy ID to clipboard when select cell.
Github:
https://github.com/Elem8100/GM-HandTool
Download(EXE):
https://github.com/Elem8100/GM-HandTool/releases
gif animation web Visualize effect Trip mathematical geometrico 圖形 藝術 視覺化 數據
gif animation web Visualize effect Trip mathematical geometrico
Webgraph directed graph Network Algorithms hover drifting
Tulip Graph visualization
webgraph gif animation hover 3d Script web Visualize
webgraph gif animation hover Spider web Visualize
drift hover animation gif
drift hover animation gif Physics
Digital Wizard's Lab - Библиотеки разработки игр - Файлы для игроделов - Всё о создании игр https://gcup.ru/load/gamedev_lib/dwlab/18-1-0-342
Digital Wizard's Lab - Библиотеки разработки игр - Файлы для игроделов - Всё о создании игр https://gcup.ru/load/gamedev_lib/dwlab/18-1-0-342
https://forum.ragezone.com/f921/delphi-visual-gm-handtool-v2-834829/
game engines delphi Asphyre
https://gcup.ru/load/gamedev_lib/dwlab/18-1-0-342
https://gcup.ru/load/engines/vizard/3-1-0-2119
https://gcup.ru/load/engines/blitzplus/3-1-0-2111
https://gcup.ru/load/engines/exgine/3-1-0-1398
http://delphi.org/page/26/
https://github.com/Cooler2/ApusGameEngine
https://kzread.info/dron/vRbcBEoUfapUVFuwrOXN4Q.html
Components > Miscellaneous > Games. Torry's Delphi Pages
https://torry.net/pages.php?id=259
https://github.com/marquitospt/tulip
https://www.gamedev.net/forums/topic/622395-medevpascal-new-ide-for-free-pascal/
http://www.osalternative.com/p/medevpascal-alternative-and-similar-open-source-projects-67600.html
https://www.pascalgamedevelopment.com/content.php?330-PGD-News-Round-up-for-March-April-2012&styleid=5
http://www.osalternative.com/p/medevpascal-alternative-and-similar-open-source-projects-67600.html
delphi physics engine library
Thundax Delphi Physics Engine
https://awesomeopensource.com/project/JordiCorbilla/thundax-delphi-physics-engine
https://opensourcelibs.com/libs/physics-engine
https://jordicorbilla.github.io/thundax-delphi-physics-engine/
https://github.com/BeRo1985/kraft
Kraft Physics Engine is an open source Object Pascal physics engine library that can be used in 3D games. Author : Benjamin 'BeRo' Rosseaux Compatible with: Delphi 7-XE7 (but not with the Android and iOS targets), FreePascal >= 2.6.2 (with almost all FPC-supported targets including Android and iOS)
https://wiki.freepascal.org/Game_Engine
2021年12月27日 星期一
Navigation Menu window container PANEL control folding
window container PANEL control folding
https://stackoverflow.com/questions/19524787/dynamic-collapse-panel-creation-in-windows-forms-c-sharp
https://www.codeproject.com/Articles/18248/Navigation-Menu-for-Windows-Forms-Outlook-Bar-Styl
https://www.codeproject.com/Tips/834853/How-to-Create-a-Simple-Expandable-Collapsible-Pane
https://www.codeproject.com/Tips/834853/How-to-Create-a-Simple-Expandable-Collapsible-Pane
https://docs.microsoft.com/en-us/windows/win32/uxguide/ctrl-tree-views
https://www.codeproject.com/Articles/389515/Column-based-selection-in-rich-edit-control
https://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting-2
https://stackoverflow.com/questions/3840898/treeview-to-control-panels
window frame exe inside panel SetParent ProcessWindowStyle
window frame exe inside panel SetParent ProcessWindowStyle
https://www.codeproject.com/Articles/53318/C-Custom-Control-Featuring-a-Collapsible-Panel
C# Custom Control Featuring a Collapsible Panel
ASP.NET AJAX CollapsiblePanel control extender and finding it practical CollapsiblePanel
https://www.codeproject.com/Articles/8905/ByPass-difficult-Automation-and-add-applications-q
ByPass difficult Automation and add applications "as is" in your .NET application
Fed up with automation? Need to add components as is to your application? Try this out.
Main functions which are used in this case are from user32. That are SetParent, ShowWindow and SetForegroundWindow. Rest of the help is provided by managed Process, ProcessInfo and SendKeys classes.
https://foxlearn.com/windows-forms/how-to-execute-powershell-script-in-csharp-444.html
http://www.authorcode.com/open-command-prompt-window-within-a-panel-control-in-c/
http://www.java2s.com/Code/CSharp/GUI-Windows-Form/AgentTryout.htm
http://www.nullskull.com/q/10351064/how-to-get-search-box-in-windows-applicationcnet.aspx
TCustomCanvas Notifiable Persistent Lock LockCount Unlock TNotifiablePersistent: BeginUpdate UpdateCount
https://graphics32.github.io/Docs/Units/GR32/Classes/TThreadPersistent/_Body.htm
TThreadPersistent - Graphics32
https://graphics32.github.io/Docs/Units/GR32_OrdinalMaps/Classes/TWordMap/_Body.htm
BeginUpdate() EndUpdate for a UserControl
UserControl ContainerControl painted WindowsForms UserControl)
similar to BeginUpdate() - EndUpdate()
https://stackoverflow.com/questions/487661/how-do-i-suspend-painting-for-a-control-and-its-children
class DrawingControl
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, Int32 wMsg, bool wParam, Int32 lParam);
private const int WM_SETREDRAW = 11;
public static void SuspendDrawing( Control parent )
SendMessage(parent.Handle, WM_SETREDRAW, false, 0);
public static void ResumeDrawing( Control parent )
SendMessage(parent.Handle, WM_SETREDRAW, true, 0);
parent.Refresh();
https://graphics32.github.io/Docs/Units/GR32/Classes/TThreadPersistent/_Body.htm
TThreadPersistent
Hierarchy
TPersistent
|
TNotifiablePersistent
Lock LockCount
Unlock
In TNotifiablePersistent:
BeginUpdate UpdateCount OnChange
Changed
Create
Destroy
EndUpdate
https://searchcode.com/file/11603740/uSimpleGraph.pas/
http://objecteda.googlecode.com/
/uSimpleGraph.pas
TSimpleGraph v1.542 }
4{ by Kambiz R. Khojasteh }
5{ }
6{ kambiz@delphiarea.com }
7{ http://www.delphiarea.com
https://docwiki.embarcadero.com/Libraries/Sydney/en/Vcl.Graphics.TCustomCanvas.Lock
Vcl.Graphics.TCustomCanvas.Lock
LockCount
TryLock
Unlock
Locking Objects
http://theprofessionalspoint.blogspot.com/2013/12/locking-and-unlocking-mechanism-in.html
Locking and Unlocking mechanism in Delphi
The implementation for the lock pattern applied to a class TBag is: (only pattern related code is shown)
This article provides a mechanism to temporarily lock and unlock some aspects of a class. We will discuss locking and unlocking patterns in Delphi with a simple example.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-lockwindowupdate
Windows GDI Winuser.h LockWindowUpdate function
LockWindowUpdate function (winuser.h)
BeginPaint
GetDC
GetDCEx
Painting and Drawing Functions
Painting and Drawing Overview
WM_PAINT
https://coderedirect.com/questions/594614/multi-threading-delphi-synchronization-using-critical-sections-between-a-timer-a
Multi-threading Delphi synchronization using Critical Sections between a Timer and other threads
2021年12月26日 星期日
2021年12月25日 星期六
Thread Programmierung
Thread Programmierung unter Windows mit Delphi
1 Thread Programmierung unter Windows mit Delphi Michael Puff
oder dem von ExitThread oder TerminateThread festgelegten Wert, ... Mit dem Gegenstück zu SetThreadPriority, GetThreadPriority, lässt sich die aktuelle ...
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Classes.TThread.Terminate
https://stackoverflow.com/questions/12475395/delphi-threading
Thread Delphi SetThreadPriority GetThreadPriority SetThreadPriorityBoost GetThreadPriorityBoost ExitThread TerminateThread GetExitCodeThread CloseHandle
SwitchToThread 切換到另一個可排程執行緒 CreateThread 建立執行緒 CreateRemoteThread 建立遠端執行緒 GetCurrentThread 獲取執行緒控制代碼 GetCurrentThreadId 獲取執行緒ID OpenThread 開啟一個現有執行緒物件 SetThreadPriority 設定執行緒優先順序 GetThreadPriority 獲取執行緒優先順序 SetThreadPriorityBoost 設定開關–系統動態提升該執行緒的優先順序 GetThreadPriorityBoost 獲取~開關 ExitThread 線上程的執行過程中終止 TerminateThread 線上程的外面終止 GetExitCodeThread 獲取一個已中止執行緒的退出程式碼 SuspendThread 暫停執行緒 ResumeThread 恢復執行緒 SetThreadStackGuarantee 要求系統在丟擲EXCEPTION_STACK_OVERFLOW異常的時候,保證仍然有指定大小的空閒區可以用 WaitForSingleObject 阻塞,直到等到訊號 CloseHandle 關閉控制代碼
Yield SpinWait Sleep SwitchToThread SuspendThread ResumeThread
System.Threading mscorlib.dll, netstandard.dll Thread.dll Thread.Interrupt
https://coderoad.ru/12751031/%D0%9A%D0%B0%D0%BA%D0%BE%D0%B9-%D0%BC%D0%B5%D1%82%D0%BE%D0%B4-%D0%BE%D0%B6%D0%B8%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B2%D1%8B%D0%B7%D0%B2%D0%B0%D1%82%D1%8C-%D0%B2-%D0%B1%D0%B5%D1%81%D0%BA%D0%BE%D0%BD%D0%B5%D1%87%D0%BD%D0%BE%D0%BC-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%B5-%D0%BE%D0%B6%D0%B8%D0%B4%D0%B0%D0%BD%D0%B8%D1%8F-%D0%B4%D0%BB%D1%8F-Delphi-XE2
unit ThreadPool;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, contnrs, syncobjs;
type
TpooledTask=class(TObject)
private
FonComplete:TNotifyEvent;
protected
Fparam:TObject;
procedure execute; virtual; abstract;
public
constructor create(onComplete:TNotifyEvent;param:TObject);
end;
TThreadPool=class(TObjectQueue)
private
access:TcriticalSection;
taskCounter:THandle;
threadCount:integer;
public
constructor create(initThreads:integer);
procedure addTask(aTask:TpooledTask);
end;
TpoolThread=class(Tthread)
private
FmyPool:TThreadPool;
protected
procedure Execute; override;
public
constructor create(pool:TThreadPool);
end;
implementation
{ TpooledTask }
constructor TpooledTask.create(onComplete: TNotifyEvent; param: TObject);
begin
FonComplete:=onComplete;
Fparam:=param;
end;
{ TThreadPool }
procedure TThreadPool.addTask(aTask: TpooledTask);
begin
access.acquire;
try
push(aTask);
finally
access.release;
end;
releaseSemaphore(taskCounter,1,nil); // release one unit to semaphore
end;
constructor TThreadPool.create(initThreads: integer);
begin
inherited create;
access:=TcriticalSection.create;
taskCounter:=createSemaphore(nil,0,maxInt,'');
while(threadCount<initThreads) do
begin
TpoolThread.create(self);
inc(threadCount);
end;
end;
{ TpoolThread }
constructor TpoolThread.create(pool: TThreadPool);
begin
inherited create(true);
FmyPool:=pool;
FreeOnTerminate:=true;
resume;
end;
procedure TpoolThread.execute;
var thisTask:TpooledTask;
begin
while (WAIT_OBJECT_0=waitForSingleObject(FmyPool.taskCounter,INFINITE)) do
begin
FmyPool.access.acquire;
try
thisTask:=TpooledTask(FmyPool.pop);
finally
FmyPool.access.release;
end;
thisTask.execute;
if assigned(thisTask.FonComplete) then thisTask.FonComplete(thisTask);
end;
end;
end.
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.Threading.TTask
System.Threading
TTask
TParallel
TFuture
TThreadPool
TWorkStealingQueue
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SyncObjs
SyncObjs
TMutex
TCriticalSection
TSemaphore
TEvent
TThread
THandleObject
TConditionVariableCS
TConditionVariableMutex
TConditionVariableHelper
TCriticalSectionHelper
https://www.modernescpp.com/index.php/tasks
https://blog.marcocantu.com/blog/2017-november-explaining-tasks-ppl-too-many.html
https://www.embarcaderoacademy.com/p/anonymous-methods-in-delphi/
https://www.embarcaderoacademy.com/p/master-modern-delphi-language-techniques
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_Critical_Sections
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_Critical_Sections
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Locking_Objects
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_the_Main_VCL_Thread
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Using_the_Multi-read_Exclusive-write_Synchronizer
https://www.informit.com/articles/article.aspx?p=30382&seqNum=6
https://github.com/pocoproject/poco
https://docs.microsoft.com/zh-tw/dotnet/standard/threading/pausing-and-resuming-threads
https://docwiki.embarcadero.com/RADStudio/Sydney/en/Service_Threads
SparkyThread.Suspend; SparkyThread.Resume;
https://docwiki.embarcadero.com/Libraries/Alexandria/en/Vcl.SvcMgr.TService.OnExecute
https://docwiki.embarcadero.com/Libraries/Sydney/en/System.SyncObjs
https://stackoverflow.com/questions/67246114/delphi-what-happens-when-the-app-terminates-while-a-thread-is-waiting-on-an-even
https://www.freepascal.org/docs-html/rtl/classes/tthread.html
delphi System Threading Thread.Interrupt AutoResetEvent Wait Set
kernel32 Thread Scheduling Yield setThreadPriority SetThreadPriority(pi.hThread, THREAD_PRIORITY_IDLE); ResumeThread(pi.hThread);
https://docwiki.embarcadero.com/CodeExamples/Sydney/en/TThreadYield_(Delphi)
Game Development in Delphi
https://stackoverflow.com/questions/8203166/game-development-in-delphi
Game Development in Delphi
http://delphi.org/2011/10/pascal-game-development/
48 – Pascal Game Development with Jason McMillen
Pascal eXtended Library
FPC produce COFF files. AFAIK, Delphi won't link to ELF files.
https://stackoverflow.com/questions/48714279/using-fpc-o-files-in-delphi-2010
https://www.agner.org/optimize/#objconv
AsphyreSphinx framework to draw 2D DirectX scene on form canvas.
Asphyre Sphinx
https://asphyre.net/products/legacy/7-asphyresphinx
https://www.pascalgamedevelopment.com/content.php
pascalgamedevelopment.com
http://delphi.org/2011/10/pascal-game-development/
http://www.pp4s.co.uk/
https://github.com/GLScene/GLScene
https://github.com/sszczep/ray-casting-in-2d-game-engines
https://castle-engine.io/
Castle Game Engine
Cross-platform (desktop, mobile, console) 3D and 2D game engine supporting many asset formats (glTF, X3D, Spine...) and using modern Object Pascal
https://sourceforge.net/projects/andorra/
Andorra 2D
http://zengl.org/
ZenGL - cross-platform game development library written in Pascal, designed to provide necessary functionality for rendering 2D-graphics, handling input, sound output, etc. More details can be found here.
https://delphigl.com/
http://www.clootie.ru/
Clootie graphics pages
DirectX 10 SDK for Delphi / FreePascal update.
Updated Direct3D10 / D3DX10 headers to March-2009 SDK. Now with Direct3D 10.1 support.
http://www.zgameeditor.org/
ZGameEditor
Create games that have a redistributable size of only 64kb or less using procedural content. The game engine use OpenGL for graphics and a real time synthesizer for audio. ZGE is Free Open Source Software.
https://gcup.ru/load/engines/asphyre/3-1-0-105
Asphyre Sphinx 3
Скачать удаленно (17 Мб.) Скриншот 30 Июня 2008, 19:02
Логотип Asphyre Sphinx
Жанровая направленность: 2D/3D-игры любого жанра и типа;
Платформа: 32/64-bit Windows XP/Vista/7, 32/64-bit Linux и Mac OS X, iOS;
DGLEngine
ZenGL
Ogre3D
GLScene
HiAsm
3DCakeWalk
Unigine
CAST II
SpriteCraft
Digital Wizard's Lab
LKI-Creator
LKI-Creator 3D
Nytro Game Engine
K5Engine
Axiom Engine
eXgine
WindMill
Kochol
Urho3D
OpenBlox
fibonacci spiral art illustrator 黃金螺線 黃金分割線 黃金比例 黃金矩形 黃金三角形
Interior and exterior design. Forged items. The fence is
metal. Artistic forging Gate Forged Metal Grill Artistic Forging
ratio geometric concept. Fibonacci spiral Golden ratio.Geometric shapes Scalable vector illustration
Classic Black Decorative Metal Scroll Motif Wall Hanging Serafina Metal Scroll Wall Art Rectangular
Stratton Decor Traditional Scroll Sculpture
Яндекс.Картинки: поиск изображений в интернете, поиск по изображению
Scroll Bending Machine - Ellsen Scroll Machines
Practical Geometry for Builders and Architects Metal Bender
https://en.wikipedia.org/wiki/Golden_spiral
fibonacci spiral art illustrator
黃金螺線
黃金分割線
黃金比例
黃金矩形
黃金三角形
2021年12月24日 星期五
Xbase Programming Language Family
https://en.wikipedia.org/wiki/Embedded_database
https://en.wikipedia.org/wiki/XHarbour
xHarbour is a free multi-platform extended Clipper compiler, offering multiple graphic terminals (GTs), including console drivers, GUIs, and hybrid console/GUIs. xHarbour is backward-compatible with Clipper and supports many language syntax extensions, greatly extended run-time libraries, and extensive third party support.
Xbase Programming Language Family
Visual FoxPro dBASE Xharbour Harbour xBase Clipper FoxPro 2 Flagship Compiler xBase++
dBase DBFree Clipper Visual Objects FoxPro Visual FoxPro Harbour Project XBase++ FlagShip xHarbour Vulcan.NET CLIP MaxScript VP-Info XSharp PWCT (software)
HBIDE dBase Visual Objects XIDE
https://en.wikipedia.org/wiki/Category:XBase_programming_language_family
Harbour GUI libraries and tools
qtcontribs
PTSource
HwGUI
Harbour MiniGUI
Harbour MiniGUI Extended Edition
OOHG - Object Oriented (x)Harbour GUI
Marinas-GUI
xBaseScript ActiveScript
https://en.wikipedia.org/wiki/FlagShip
https://en.wikipedia.org/wiki/PWCT_(software)
https://en.wikipedia.org/wiki/Visual_Objects
https://en.wikipedia.org/wiki/PWCT_(software)#Visual_Languages
https://en.wikipedia.org/wiki/Visual_programming_language
Data warehousing / business intelligence
Ab Initio
Alteryx Designer
Apache NiFi
Informatica
Visual language Data warehousing business intelligence Visual programming language
https://www.edureka.co/blog/interview-questions/power-bi-interview-questions/
https://www.sqlshack.com/things-you-should-avoid-when-designing-a-data-warehouse/
2021年12月23日 星期四
employee employeeID DepartmentID national identity
employee employeeID DepartmentID national identity
National Identification Number
national identity card number database
National Identification Number (NIN)
National Identity Card (NIC)
National IDs Around the World — Interactive map
National ID Card
https://en.wikipedia.org/wiki/National_identification_number
https://en.wikipedia.org/wiki/Belgian_identity_card
https://en.wikipedia.org/wiki/Lithuanian_identity_card
https://en.wikipedia.org/wiki/Passport
Entity Framework 4: Then and Now
https://daveswersky.wordpress.com/2010/05/26/entity-framework-4-then-and-now/
https://docs.oracle.com/cd/E18727_01/doc.121/e13542/T229841T229878.htm
Architecture Hierarchy
Inventory Management Software
Input Inventory
Stock Control
Barkeep
Inventory Tracker HD
Inventory Tracking Software for a Small Business
https://www.hyperoffice.com/blog/2018/09/10/microsoft-access-databases-examples/
https://smallbusiness.chron.com/create-inventory-list-1685.html
https://www.nerdwallet.com/article/small-business/inventory-management-apps
Track and sync inventory and sales.
Category, subcategory and location details.
Automated purchase orders.
Create and fill purchase orders.
Stock alerts.
Barcode scanning.
Profit and loss reporting.
Discounted shipping.
printing labels, parcel tracking and barcode scanner picking for packaging sales.
https://www.g2.com/categories/relational-databases/small-business
古代食譜
《食珍錄》 南北朝 作者是餘姚人虞悰 已佚,現存《食珍錄》收於《說郛》 《說郛》,元末陶宗儀編纂
《清異錄》 北宋人陶谷撰 通行本是在元代孫道明的映雪齋殘抄本和明代《說郛》抄本
《食經》 謝諷著的成書於隋代 並非崔浩所寫。據《魏書·崔浩傳》所收崔浩寫的《食經敍》
《本心齋食譜》 宋代 宋代陳達叟,因為室名本心齋
《山家清供》 南宋 閩食譜。中國南宋時人,林洪撰。
《飲膳正要》 元代 元至順元年 作者為忽思慧 現在存有明經廠刊本
《飲食須知》 元代 《飲食須知》八卷,元人賈銘(約1269~1374)撰
《雲林堂飲食制度集》元代 作者 倪瓚,元四家之首。
《易牙遺意》 元明之際的韓奕撰 以齊桓公時代的名廚易牙之名
《隨園食單》 清代 乾隆五十七年 袁枚 字子才 號簡齋,別號隨園老人
《本味篇》《呂氏春秋》呂不韋 編
《遵生八箋》《飲饌服食箋》 明朝文人高濂所著,萬曆十九年
《老饕賦》 宋仁宗嘉祐 蘇軾
《閑情偶寄》 清代 李漁
《多能鄙事》 明代 劉基 伯溫
《醒園錄》 清代李化楠撰
2021年12月22日 星期三
Delphi al Límite: La librería Synapse
https://delphiallimite.blogspot.com/2010/05/la-libreria-synapse-y-5.html
Delphi al Límite: La librería Synapse (y 5)
https://www.pool.ntp.org/zone/europe
pool.ntp.org: NTP Servers in Europe, europe.pool.ntp.org
In most cases it's best to use pool.ntp.org to find an NTP server (or 0.pool.ntp.org, 1.pool.ntp.org, etc if you need multiple server names). The system will try finding the closest available servers for you. If you distribute software or equipment that uses NTP, please see our information for vendors.
IPv4
https://es.wikipedia.org/wiki/Network_Time_Protocol
La librería Synapse Delphi al Límite
delphiallimite blogspot libreria synapse
https://pjo2.github.io/tftpd64/
Synapse librería THiloServidor
Ararat Synapse project
https://github.com/Dikoy/ararat_synapse
Ararat Synapse project fork (http://synapse.ararat.cz/). Checked out from (svn://svn.code.sf.net/p/synalist/code/trunk synalist-code).
Synapse Library
https://github.com/dimmaq/delphi-synapse
The TMemo Component | Inside Delphi 2006 (Wordware Delphi Developers Library)
https://flylib.com/books/en/1.228.1.107/1/
The TMemo Component | Inside Delphi 2006 (Wordware Delphi Developers Library)
The TMemo component is a multiline text box that enables us to load, edit, and save plain text files. The contents of the text file are stored in the Lines property.
Listing 15-4 shows how to use the TMemo and TListBox components to emulate Delphi's Code Editor and its code completion feature.
Development Serial Null-modem emulator Null-modem emulator COM port
Development Serial Null-modem emulator
Null-modem emulator
https://sourceforge.net/projects/com0com/
The Null-modem emulator (com0com) is a kernel-mode virtual serial port driver for Windows. You can create an unlimited number of virtual COM port pairs and use any pair to connect one COM port based application to another. The HUB for communications (hub4com) allows to receive data and signals from one COM or TCP port, modify and send it to a number of other COM or TCP ports and vice versa.
2021年12月21日 星期二
high DPI displays standard-DPI displays
high DPI displays
standard-DPI displays
https://docs.microsoft.com/zh-tw/windows/uwp/get-started/universal-application-platform-guide
Windows Universal Platform (UWP)
https://docs.microsoft.com/zh-tw/archive/blogs/askcore/display-scaling-in-windows-10
Display Scaling in Windows 10
display scale factor scale factor
display scaling is > 100% “System DPI Awareness.” System DPI Awareness
https://docs.microsoft.com/zh-tw/archive/blogs/askcore/display-scaling-changes-for-the-windows-10-anniversary-update
Display Scaling changes for the Windows 10 Anniversary Update
https://docs.microsoft.com/zh-tw/windows/win32/api/winuser/nf-winuser-setthreaddpiawarenesscontext?redirectedfrom=MSDN
SetThreadDpiAwarenessContext function (winuser.h)
Classic desktop applications scaled to 100%, 125%, 150%, 200% and 250%; Store apps scaled to 100%, 140% and 180%. As a result, when running different apps side by side in productivity scenarios,
~450% 23” 8K desktop
applications to dynamically scale and where Windows was limited in this regard. One of the main lessons learned was that, even for simple applications, the model of registering an application as being either System DPI Aware or Per-Monitor-DPI Aware
https://docs.microsoft.com/zh-tw/windows/win32/dlgbox/common-dialog-box-library?redirectedfrom=MSDN
(ComDlg32, for example Common Item Dialog ) that didn’t scale on a per-DPI basis.
DPI_AWARENESS_CONTEXT and the SetThreadDpiAwarenessContext API
DPI _ 感知 _ 內容控制碼 https://docs.microsoft.com/zh-tw/windows/win32/hidpi/dpi-awareness-context
SetThreadDpiAwarenessContext function (winuser.h)
The old DPI_AWARENESS_CONTEXT for the thread.
If the dpiContext is invalid,
the thread will not be updated and the return value will be NULL ...
https://docs.microsoft.com/zh-tw/windows/win32/hidpi/wm-dpichanged-beforeparent
https://docs.microsoft.com/zh-tw/windows/win32/hidpi/wm-getdpiscaledsize
WM_DPICHANGE message
https://docs.microsoft.com/zh-tw/windows/win32/api/winuser/nf-winuser-setwindowpos?redirectedfrom=MSDN
SetWindowPos function (winuser.h)
EnableNonClientDpiScaling API to get Notepad’s non-client area to automatically DPI scale properly.
https://docs.microsoft.com/zh-tw/windows/win32/api/winuser/nf-winuser-enablenonclientdpiscaling?redirectedfrom=MSDN
WM_NCCREATE
https://docs.microsoft.com/zh-tw/windows/win32/api/winuser/nf-winuser-getdpiforwindow?redirectedfrom=MSDN
GetDpiForWindow function (winuser.h)
FontStruct.lfHeight = -MulDiv(iPointSize, GetDpiForWindow(hwndNP), 720);
https://docs.microsoft.com/en-us/previous-versions/windows/desktop/legacy/ms646914(v=vs.85)?redirectedfrom=MSDN
ChooseFont dialog was not per-monitor DPI aware
DPI_AWARENESS_CONTEXT previousDpiContext = SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_SYSTEM_AWARE);
BOOL cfResult = ChooseFont(cf);
SetThreadDpiAwarenessContext(previousDpiContext);
DPI_AWARENESS_CONTEXT_SYSTEM_AWARE
DPI_AWARENESS_CONTEXT_UNAWARE
FontStruct.lfHeight = -MulDiv(cf.iPointSize, GetDpiForWindow(hwndNP), 720);
SetThreadDpiAwarenessContext
DPI_AWARENESS_CONTEXT
AdjustWindowRectExForDpi
GetDpiForSystem
GetDpiForWindow
GetSystemMetricForDpi
SystemParametersInfoForDpi
GetDpiForSystem GetDC GetDeviceCaps
EnableNonClientDpiScaling
SetThreadDpiAwarenessContext
https://github.com/Microsoft/Windows-classic-samples/tree/main/Samples/DPIAwarenessPerWindow
https://docs.microsoft.com/zh-tw/windows/win32/hidpi/high-dpi-improvements-for-desktop-applications?redirectedfrom=MSDN
https://blogs.windows.com/windowsdeveloper/2016/10/24/high-dpi-scaling-improvements-for-desktop-applications-and-mixed-mode-dpi-scaling-in-the-windows-10-anniversary-update/
https://blogs.windows.com/windowsdeveloper/2017/05/19/improving-high-dpi-experience-gdi-based-desktop-apps/
Improving the high-DPI experience in GDI based Desktop Apps
https://docs.microsoft.com/zh-tw/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows?redirectedfrom=MSDN
Manifest File
The most common way to declare an application as DPI aware is through the application manifest file. There are two settings that you can use - <dpiAware> and <dpiAwareness>. Here is a small table that describes the different states that you can use with each setting.
DPI Mode <dpiAware> <dpiAwareness>
<description>Microsoft Management Console</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
<gdiScaling>true</gdiScaling>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
ode Sample:
[code lang=”csharp”]
LRESULT WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
…
case WM_PAINT:
{
PAINTSTRUCT ps;
// Get a paint DC for current window.
// Paint DC contains the right scaling to match
// the monitor DPI where the window is located.
HDC hdc = BeginPaint(hWnd, &ps);
RECT rect;
GetClientRect(hDlg, &rect);
UINT cx = (rect.right – rect.left);
UITN cy = (rect.bottom – rect.top);
// Create a compatible bitmap using paint DC.
// Compatible bitmap will be properly scaled in size internally and
// transparently to the app to match current monitor DPI where
// the window is located.
HBITMAP memBitmap = CreateCompatibleBitmap(hdc, cx, cy);
// Create a compatible DC, even without a bitmap selected,
// compatible DC will inherit the paint DC GDI scaling
// matching the window monitor DPI.
HDC memDC = CreateCompatibleDC(hdc);
// Selecting GDI scaled compatible bitmap in the
// GDI scaled compatible DC.
HBTIMAP oldBitmap = (HBITMAP)SelectObject(memDC, memBitmap);
// Setting some properties in the compatible GDI scaled DC.
SetTextColor(memDC, GetSysColor(COLOR_INFOTEXT));
SetBkMode(memDC, TRANSPARENT);
SelectObject(memDC, g_hFont);
// Drawing content on the compatible GDI scaled DC.
// If the monitor DPI was 150% or 200%, text internally will
// be draw at next integral scaling value, in current example
// 200%.
DrawText(memDC, ctx.balloonText, -1, &rect,
DT_NOCLIP | DT_LEFT | DT_NOPREFIX | DT_WORDBREAK);
// Copying the content back from compatible DC to paint DC.
// Since both compatible DC and paint DC are GDI scaled,
// content is copied without any stretching thus preserving
// the quality of the rendering.
BitBlt(hdc, 0, 0, cx, cy, memDC, 0, 0);
// Cleanup.
SelectObject(memDC, oldBitmap);
DeleteObject(memBitmap);
DeleteDC(memDC);
// At this time the content is presented to the screen.
// DWM (Desktop Window Manager) will scale down if required the
// content to actual monitor DPI.
// If the monitor DPI is already an integral one, for example 200%,
// there would be no DWM down scaling.
// If the monitor DPI is 150%, DWM will scale down rendered content
// from 200% to 150%.
// While not a perfect solution, it’s better to scale-down content
// instead of scaling-up since a lot of the details will be preserved
// during scale-down.
// The end result is that with GDI Scaling enabled, the content will
// look less blurry on screen and in case of monitors with DPI setting
// set to an integral value (200%, 300%) the vector based and text
// content will be rendered natively at the monitor DPI looking crisp
// on screen.
EndPaint(hWnd, &ps);
}
break;
…
}
}
[/code]
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
Native API
There are three native API calls that can set awareness now:
SetProcessDpiAware - Windows Vista or later
SetProcessDpiAwareness - Windows 8.1 or later
SetProcessDpiAwarenessContext - Windows 10, version 1607 or later
The latest API offers PerMonitorV2 support, so it is the currently recommend one.
https://www.telerik.com/blogs/winforms-scaling-at-large-dpi-settings-is-it-even-possible-
New events for handling dynamic DPI changes – DpiChanged, DpiChangedAfterParent, DpiChangedBeforeParent.
New methods – DeviceDpi, ScaleBitmapLogicalToDevice, LogicalToDeviceUnits.
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
ivate void workbookTestButton_Click(object sender, EventArgs e)
{
SetProcessDpiAwareness(_Process_DPI_Awareness.Process_DPI_Unaware);
Workbook wb = new Workbook();
}
[DllImport("shcore.dll")]
static extern int SetProcessDpiAwareness(_Process_DPI_Awareness value);
enum _Process_DPI_Awareness
{
Process_DPI_Unaware = 0,
Process_System_DPI_Aware = 1,
Process_Per_Monitor_DPI_Aware = 2
}
Delphi VCL Applications with mixed DPI
https://www.uweraabe.de/Blog/2021/08/28/delphi-vcl-applications-with-mixed-dpi/
add a second VCL form to the application and drop some controls on to it, so we can distinguish the form instances by its display quality on a high DPI monitor. I just assume that the second form class is named TForm2.
Now we get back to the first form and drop two buttons on the form and double click each to fill their event handlers. The first button gets the single line:
procedure TForm1.Button1Click(Sender: TObject);
begin
TForm2.Create(Self).Show;
end;
Make sure that the unit containing TForm2 is added to the uses clause.
The OnClick event of the second button needs a bit more code:
procedure TForm1.Button2Click(Sender: TObject);
var
previousDpiContext: DPI_AWARENESS_CONTEXT;
myForm: TForm;
begin
previousDpiContext := SetThreadDpiAwarenessContext(DPI_AWARENESS_CONTEXT_UNAWARE);
try
myForm := TForm2.Create(Self);
finally
SetThreadDpiAwarenessContext(previousDpiContext);
end;
myForm.Show;
end;
So we temporarily change the DPI awareness of the current thread to unaware, create the form and restore the context to its previous state before finally showing the form.
https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-improvements-for-desktop-applications
https://question-it.com/questions/736123/kak-konvertirovat-declare_handle-i-posledujuschie-konstanty-iz-windefh-v-delphi
DECLARE_HANDLE(DPI_AWARENESS_CONTEXT);
#define DPI_AWARENESS_CONTEXT_UNAWARE ((DPI_AWARENESS_CONTEXT)-1)
#define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((DPI_AWARENESS_CONTEXT)-2)
#define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((DPI_AWARENESS_CONTEXT)-3)
NativeUInts:
DPI_AWARENESS_CONTEXT_UNAWARE = 16;
DPI_AWARENESS_CONTEXT_SYSTEM_AWARE = 17;
DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE = 18;
SetThreadDpiAwarenessContext
https://docs.microsoft.com/zh-tw/windows/win32/hidpi/setting-the-default-dpi-awareness-for-a-process
https://github.com/MicrosoftDocs/visualstudio-docs.zh-tw/blob/live/docs/extensibility/addressing-dpi-issues2.md
https://docs.microsoft.com/zh-tw/visualstudio/extensibility/addressing-dpi-issues2?view=vs-2022
https://docs.microsoft.com/zh-tw/dotnet/api/microsoft.visualstudio.platformui.dpihelper?view=visualstudiosdk-2022
https://www.visualstudioextensibility.com/2015/02/01/visual-studio-extensions-and-dpi-awareness/
Winapi.MultiMon.MonitorFromPoint GetDpiForMonitor GetScaleFactorForMonitor delphi
https://www.sql.ru/forum/1317197/getscalefactorformonitor-nevernoe-znachenie
procedure CallSetProcessDPIAware;
var
SetProcessDPIAware: function: Boolean; stdcall;
H: THandle;
begin
H := GetModuleHandle('User32.dll');
if H > 0 then
begin
@SetProcessDPIAware := GetProcAddress(H, 'SetProcessDPIAware');
if Assigned(SetProcessDPIAware) then
SetProcessDPIAware();
end;
end;
http://yamatyuu.net/computer/program/vc2013/gmonitorinfo/index.html
WMIを使用してディスプレイサイズ,接続方法を取得(Windows 10高DPI対応)
Launch Notepad
https://coderoad.ru/6645426/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0-%D0%B1%D0%BB%D0%BE%D0%BA%D0%BD%D0%BE%D1%82%D0%B0-%D0%B2-delphi
Проблема блокнота в delphi
привет, мы используем версию Delphi 5. Мы получаем проблему при открытии блокнота в delphi. Мы хотим открыть блокнот по щелчку кнопки и передать ему данные, чтобы Блокнот мог отображать эти данные. Я не хочу его спасать. пожалуйста, помогите мне в этом. спасибо.
uses
Clipbrd;
procedure LaunchNotepad(const Text: string);
var
SInfo: TStartupInfo;
PInfo: TProcessInformation;
Notepad: HWND;
NoteEdit: HWND;
ThreadInfo: TGUIThreadInfo;
begin
ZeroMemory(@SInfo, SizeOf(SInfo));
SInfo.cb := SizeOf(SInfo);
ZeroMemory(@PInfo, SizeOf(PInfo));
CreateProcess(nil, PChar('Notepad'), nil, nil, False,
NORMAL_PRIORITY_CLASS, nil, nil, sInfo, pInfo);
WaitForInputIdle(pInfo.hProcess, 5000);
Notepad := FindWindow('Notepad', nil);
// or be a little more strict about the instance found
// Notepad := FindWindow('Notepad', 'Untitled - Notepad');
if Bool(Notepad) then begin
NoteEdit := FindWindowEx(Notepad, 0, 'Edit', nil);
if Bool(NoteEdit) then begin
SendMessage(NoteEdit, WM_SETTEXT, 0, Longint(Text));
// To force user is to be asked if changes should be saved
// when closing the instance
SendMessage(NoteEdit, EM_SETMODIFY, WPARAM(True), 0);
end;
end
else
begin
ZeroMemory(@ThreadInfo, SizeOf(ThreadInfo));
ThreadInfo.cbSize := SizeOf(ThreadInfo);
if GetGUIThreadInfo(0, ThreadInfo) then begin
NoteEdit := ThreadInfo.hwndFocus;
if Bool(NoteEdit) then begin
Clipboard.AsText := Text;
SendMessage(NoteEdit, WM_PASTE, 0, 0);
end;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
LaunchNotepad('test string');
end;
藝術鍛造 鑄鐵 欄杆 大門 鍛造
http://vorotauzabora.ru/vorota-i-kalitki/kovanye-vorota-svoimi-rukami.html
Делаем кованые ворота своими руками: инструкция от специалистов Перед непосредственной сваркой потребуется лишь чертеж, который можно создать самостоятельно или же срисовать с понравившегося готового варианта.
Выбор элементов для кованых ворот
Кованые ворота
https://www.google.com/search?client=firefox-b-d&q=%D0%9E%D0%B1%D1%8A%D1%8F%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F+%D0%BF%D0%BE+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D1%83+%C2%AB%D0%BA%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B%D0%B5+%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%B0%C2%BB+%D0%B2+%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D0%B8
https://kuznica-msk.ru/eskiz-vorota-kalitki
https://www.google.com/search?q=%D0%9C%D0%B5%D1%82%D0%B0%D0%BB%D0%BB.+%D0%9C%D0%B5%D1%82%D0%B0%D0%BB%D0%BB%D0%BE%D0%BF%D0%BB%D0%B0%D1%81%D1%82%D0%B8%D0%BA.+%D0%98%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D1%8F%D0%9A%D0%9E%D0%92%D0%90%D0%9D%D0%AB%D0%95+%D0%98%D0%97%D0%94%D0%95%D0%9B%D0%98%D0%AF.+%D0%9B%D0%95%D0%A1%D0%A2%D0%9D%D0%98%D0%A6%D0%AB.+%D0%9E%D0%93%D0%A0%D0%90%D0%96%D0%94%D0%95%D0%9D%D0%98%D0%AF.+%D0%92%D0%9E%D0%A0%D0%9E%D0%A2%D0%90+%D0%A1%D0%95%D0%92%D0%90%D0%A1%D0%A2%D0%9E%D0%9F%D0%9E%D0%9B%D0%AC++%D0%90%D1%80%D1%82%D0%B5%D0%BB%D1%8C+%D0%BA%D1%83%D0%B7%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D1%85,+%D0%BB%D0%B8%D1%82%D0%B5%D0%B9%D0%BD%D1%8B%D1%85+%D0%B8+%D1%81%D0%BB%D0%B5%D1%81%D0%B0%D1%80%D0%BD%D1%8B%D1%85+%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9&client=firefox-b-d&sxsrf=AOaemvLr7RzL0mhNrTHmFI5SEK-aLxVgwg:1640037292674&source=lnms&tbm=isch&sa=X&ved=2ahUKEwiarf2Br_P0AhUrL6YKHdyKDrYQ_AUoAXoECAEQAw&biw=1536&bih=778&dpr=1.25#imgrc=dfUmNDzB20S1RM
https://www.google.com/search?q=%D0%90%D1%80%D1%82%D0%B5%D0%BB%D1%8C+%D0%BA%D1%83%D0%B7%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D1%85,+%D0%BB%D0%B8%D1%82%D0%B5%D0%B9%D0%BD%D1%8B%D1%85+%D0%B8+%D1%81%D0%BB%D0%B5%D1%81%D0%B0%D1%80%D0%BD%D1%8B%D1%85+%D1%82%D0%B5%D1%85%D0%BD%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D0%B9&client=firefox-b-d&sxsrf=AOaemvKdlhHzpsN1RZgZCvP7ICqI0mA_7g:1640036084301&source=lnms&tbm=isch&sa=X&ved=2ahUKEwikseTBqvP0AhUKGKYKHYDfBw0Q_AUoAXoECAEQAw&biw=1536&bih=778&dpr=1.25#imgrc=dfUmNDzB20S1RM&imgdii=fdRRfwjmJDUBeM
https://www.google.com/search?q=%D0%98%D0%B7%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BA%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B%D1%85%20%D0%B2%D0%BE%D1%80%D0%BE%D1%82%20%20%20%D1%80%D1%83%D0%BA%D0%B0%D0%BC%D0%B8:%20%D0%B8%D0%B7%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%2C%20%D1%8D%D1%81%D0%BA%D0%B8%D0%B7%D1%8B%20%D0%92%D1%8B%D0%B1%D0%B8%D1%80%D0%B0%D0%B5%D0%BC%20%D0%B7%D0%B0%D0%B1%D0%BE%D1%80%D1%8B%20%D0%B8%20%20%D0%B4%D0%BB%D1%8F%20%D0%92%D0%B0%D1%88%D0%B5%D0%B3%D0%BE%20%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BA%D0%B0%20%20%C2%AB%D0%9F%D0%B8%D0%BA%D0%B0%C2%BB%20%D0%B2%20%D0%B0%D1%81%D1%81%D0%BE%D1%80%D1%82%D0%B8%D0%BC%D0%B5%D0%BD%D1%82%D0%B5%20%D0%9E%D0%9E%D0%9E%20%D0%91%D0%B5%D0%BB%D0%B1%D0%B5%D1%82%D0%BE%D0%BD%20%20%D1%81%20%D0%BA%D0%B0%D0%BB%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B8%20%D0%B2%D0%BE%D1%80%D0%BE%D1%82%20%D1%84%D0%BE%D1%82%D0%BE%20%D1%86%D0%B5%D0%BD%D0%B0%20%D0%BA%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%BC%D0%BE%D0%B4%D0%B5%D1%80%D0%BD%20%D1%87%D0%B5%D1%80%D1%82%D0%B5%D0%B6:%208%20%D1%82%D1%8B%D1%81%20%D0%B8%D0%B7%D0%BE%D0%B1%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9%20%D0%BD%D0%B0%D0%B9%D0%B4%D0%B5%D0%BD%D0%BE%20%D0%B2%20%D0%AF%D0%BD%D0%B4%D0%B5%D0%BA%D1%81.%D0%9A%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D0%BA%D0%B0%D1%85%20%7C%20%D0%9A%D1%83%D0%B7%D0%BD%D0%B5%D1%87%D0%BD%D1%8B%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B%2C%20%D0%94%D0%B5%D0%BA%D0%BE%D1%80%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%B0%D1%80%D1%82%D0%B8%D0%BD%D1%8B%2C%20%D0%9E%D0%BA%D0%BE%D0%BD%D0%BD%D1%8B%D0%B5%20%D1%80%D0%B5%D1%88%D0%B5%D1%82%D0%BA%D0%B8%20%D0%9A%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B%D0%B5%20%D0%B2%D0%BE%D1%80%D0%BE%D1%82%D0%B0:%20%D1%8D%D1%81%D0%BA%D0%B8%D0%B7%D1%8B%2C%20%D0%B8%D0%B7%D0%B3%D0%BE%D1%82%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B8%20%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20%D0%B8%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D1%8F%20%20%D0%92-025%20-%20%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%D0%B2%20%D0%A2%D1%8E%D0%BC%D0%B5%D0%BD%D0%B8%20-%20233%20%D0%93%D0%BE%D1%82%D0%BE%D0%B2%D1%8B%D0%B5%20%D1%8D%D1%81%D0%BA%D0%B8%D0%B7%D1%8B%20%D0%B8%20%D1%87%D0%B5%D1%80%D1%82%D0%B5%D0%B6%D0%B8%20%D0%B2%D0%BE%D1%80%D0%BE%D1%82%20%D1%81%20%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80%D0%B0%D0%BC%D0%B8%20%D0%A6%D0%B5%D0%BD%D0%B0%20%D0%BD%D0%B0%20%D0%BA%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B%D1%85%20%D0%B2%D0%BE%D1%80%D0%BE%D1%82%20%D0%B4%D0%BB%D1%8F%20%D0%B4%D0%B0%D1%87%D0%B8%2C%20%D0%BA%D1%83%D0%BF%D0%B8%D1%82%D1%8C%20%20%D0%B2%20%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B5%20%20%D0%B8%20%D0%BA%D0%B0%D0%BB%D0%B8%D1%82%D0%BA%D0%B8%20(%D0%AD%D1%81%D0%BA%D0%B8%D0%B7%D1%8B)%20-%20%D0%9A%D0%BE%D0%B2%D0%B0%D0%BD%D1%8B%D0%B5%20%D0%B8%D0%B7%D0%B4%D0%B5%D0%BB%D0%B8%D1%8F%20%20%D0%BC%D0%B5%D1%82%D0%B0%D0%BB%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B5%20%D1%81%20%D0%BA%D0%B0%D0%BB%D0%B8%D1%82%D0%BA%D0%BE%D0%B9%20%E2%80%93%20%D0%BA%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F%2C%20%D1%87%D0%B5%D1%80%D1%82%D0%B5%D0%B6%D0%B8&tbm=isch&tbs=rimg:CXep0Hr3nrc5YajrvEmJXEBEsgIGCgIIARAA&client=firefox-b-d&hl=zh-TW&sa=X&ved=0CBsQuIIBahcKEwiwyOTrrPP0AhUAAAAAHQAAAAAQBg&biw=1519&bih=778