ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄Π°ΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΡΡΠ΄ s Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΡΡΠ΄ΠΎΠΌ {}.
ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π²Ρ ΠΏΠΎΠ΄Π°ΡΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ Π‘ΠΈ, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠΊΡΡΠ³Π»Π΅Π½ Π² ΡΡΠΎΡΠΎΠ½Ρ Π½ΡΠ»Ρ, Ρ.Π΅. 5.9 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π°Π½ΠΎ ΠΊΠ°ΠΊ 5, Π° -5.9 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π°Π½ΠΎ ΠΊΠ°ΠΊ -5.
Π€ΡΠ½ΠΊΡΠΈΡ Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΠΎΡΡΠ°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ .dll ΠΈΠ»ΠΈ .so, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠΌ Ρ Euphoria Π½Π° Π‘ΠΈ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΄Π°Π²Π°Π΅ΠΌΠ°Ρ Π΅Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Π° ΠΌΠΎΠ³Π»Π° Π±Ρ Π±ΡΡΡ ΡΠΈΠΏΠ° Π°ΡΠΎΠΌ ΠΈΠ»ΠΈ ΡΡΠ΄ Euphoria. ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ Π‘ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡΡ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΠΈΠ»ΠΈ, Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π°ΡΠΎΠΌΡ (ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ ΠΏΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΡ IEEE).
ΠΡΠΈΠΌΠ΅Ρ:
atom user32, hwnd, ps, hdc
integer BeginPaint
-- ΠΎΡΠΊΡΡΡΡ user32.dll - ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ BeginPaint
user32 = open_dll("user32.dll")
-- Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ BeginPaint ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠ° C int ΠΈ
-- ΡΠΈΠΏΠ° C pointer, ΠΈ Π²ΡΠ΄Π°ΡΡ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ ΡΠΈΠΏΠ° C int Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°:
BeginPaint = define_c_func(user32, "BeginPaint",
{C_INT, C_POINTER}, C_INT)
-- Π²ΡΠ·Π²Π°ΡΡ BeginPaint, ΠΏΠΎΠ΄Π°Π²Π°Ρ hwnd ΠΈ ps Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²,
-- ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ hdc:
hdc = c_func(BeginPaint, {hwnd, ps})
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
c_proc, define_c_func, open_dll, platform_r.htm
c_proc
ΠΠ»Π°ΡΡΠΎΡΠΌΠ°:
WIN32, Linux, FreeBSD
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
c_proc(i, s)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ·ΡΠ²Π°Π΅Ρ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (Π½ΠΎΠΌΠ΅Ρ) ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ i. ΠΡΠ³ΡΠΌΠ΅Π½Ρ i Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π²ΡΠ΄Π°Π½Π½ΡΠΌ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ define_c_proc(). ΠΡΠ³ΡΠΌΠ΅Π½Ρ s ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ΠΎΠΌ Π΄Π»ΠΈΠ½Ρ n, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ), Π³Π΄Π΅ n - ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ).
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄Π°ΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΡΡΠ΄ s Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΡΡΠ΄ΠΎΠΌ {}.
ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° Π²Ρ ΠΏΠΎΠ΄Π°ΡΡΠ΅ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄ΡΠΎΠ±Π½ΡΡ ΡΠ°ΡΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΡΠΈΠΏ Π‘ΠΈ, Π°ΡΠ³ΡΠΌΠ΅Π½Ρ Π±ΡΠ΄Π΅Ρ ΠΎΠΊΡΡΠ³Π»Π΅Π½ Π² ΡΡΠΎΡΠΎΠ½Ρ Π½ΡΠ»Ρ, Ρ.Π΅. 5.9 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π°Π½ΠΎ ΠΊΠ°ΠΊ 5, Π° -5.9 Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄Π°Π½ΠΎ ΠΊΠ°ΠΊ -5.
Π€ΡΠ½ΠΊΡΠΈΡ Π‘ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π² ΡΠΎΡΡΠ°Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ .dll ΠΈΠ»ΠΈ .so, ΡΠΎΠ·Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠΎΠΌ Ρ Euphoria Π½Π° Π‘ΠΈ.
ΠΡΠΈΠΌΠ΅Ρ:
atom user32, hwnd, rect
integer GetClientRect
-- ΠΎΡΠΊΡΡΡΡ user32.dll - Π·Π΄Π΅ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ GetClientRect
user32 = open_dll("user32.dll")
-- GetClientRect - ΡΡΠΎ Π‘ΠΈ-ΡΡΠ½ΠΊΡΠΈΡ ΡΠΈΠΏΠ° VOID, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄Π²Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° - ΡΠΈΠΏΠ° C int
-- ΠΈ ΡΠΈΠΏΠ° C pointer:
GetClientRect = define_c_proc(user32, "GetClientRect",
{C_INT, C_POINTER})
-- ΠΏΠΎΠ΄Π°ΡΡ hwnd ΠΈ rect Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ²
c_proc(GetClientRect, {hwnd, rect})
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
c_func, call, define_c_proc, open_dll, platform_r.htm
call_func
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
x = call_func(i, s)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Euphoria-ΡΡΠ½ΠΊΡΠΈΡ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ (Π½ΠΎΠΌΠ΅ΡΠΎΠΌ) ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ i. ΠΡΠ³ΡΠΌΠ΅Π½Ρ i Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ (Π½ΠΎΠΌΠ΅ΡΠΎΠΌ), Π²ΡΠ΄Π°Π½Π½ΡΠΌ routine_id(). ΠΡΠ³ΡΠΌΠ΅Π½Ρ s ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ΠΎΠΌ Π΄Π»ΠΈΠ½Ρ n, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π·Π°Π½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ, Π³Π΄Π΅ n - ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π½ΠΎΠΌΠ΅Ρ i. ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ x Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π²ΡΠ΄Π°Π½Π½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Π½ΠΎΠΌΠ΅Ρ i.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π½ΠΎΠΌΠ΅Ρ i Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄Π°ΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΡΡΠ΄ s Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΡΡΠ΄ΠΎΠΌ {}.
ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ:
demo\csort.ex
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
call_proc, routine_id
call_proc
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
call_proc(i, s)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Euphoria-ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ (Π½ΠΎΠΌΠ΅ΡΠΎΠΌ) ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ i. ΠΡΠ³ΡΠΌΠ΅Π½Ρ i Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Π½ΡΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ (Π½ΠΎΠΌΠ΅ΡΠΎΠΌ), Π²ΡΠ΄Π°Π½Π½ΡΠΌ routine_id(). ΠΡΠ³ΡΠΌΠ΅Π½Ρ s ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΄ΠΎΠΌ Π΄Π»ΠΈΠ½Ρ n, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π·Π°Π½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, Π³Π΄Π΅ n - ΡΠΈΡΠ»ΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΡΠ΅Π±ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ i.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π½ΠΎΠΌΠ΅Ρ i Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄Π°ΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ², ΡΠΎΠ³Π΄Π° ΡΡΠ΄ s Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΡΡΡΠΌ ΡΡΠ΄ΠΎΠΌ {}.
ΠΡΠΈΠΌΠ΅Ρ:
global integer foo_id
procedure x()
call_proc(foo_id, {1, "Hello World\n"})
end procedure
procedure foo(integer a, sequence s)
puts(a, s)
end procedure
foo_id = routine_id("foo")
x()
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
call_func, routine_id
chdir
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include file.e
i = chdir(s)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ (Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΡΠΎΠ»Π΄Π΅Ρ, ΠΏΠ°ΠΏΠΊΡ) ΠΏΠΎ ΠΏΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π΄Π°Π½ ΡΡΠ΄ΠΎΠΌ s. ΠΡΠ³ΡΠΌΠ΅Π½Ρ s Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΈΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π½Π° Π΄Π°Π½Π½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅. Π ΡΠ»ΡΡΠ°Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° chdir() Π²ΡΠ΄Π°ΡΡ 1. ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π² Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ, chdir() Π²ΡΠ΄Π°ΡΡ 0.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Ρ Π² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ Π²Π°ΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈ Π΄Π΅Π»Π°Ρ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΈΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, Π±Π΅Π· ΡΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΈ ΠΊ ΡΡΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ.
Π€ΡΠ½ΠΊΡΠΈΡ current_dir() Π²ΡΠ΄Π°ΡΡ ΠΈΠΌΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
ΠΠΎΠ΄ DOS32 ΠΈ WIN32 ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠΈΠΌ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ΅ (Ρ.Π΅. ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ ΠΠ‘).
ΠΠΎΠ΄ Linux/FreeBSD Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ Π½ΡΠΆΠ΄, Π½ΠΎ ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄ΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΡΡΡ ΠΊ ΡΠ΅ΠΊΡΡΠ΅ΠΌΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Ρ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΡΠΈΠΌΠ΅Ρ:
if chdir("c:\\euphoria") then
f = open("readme.doc", "r")
else
puts(1, "ΠΡΠΈΠ±ΠΊΠ°: ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ euphoria?\n")
end if
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
current_dir
check_break
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
include file.e
i = check_break()
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ΄Π°ΡΡ ΡΠΈΡΠ»ΠΎ Π½Π°ΠΆΠ°ΡΠΈΠΉ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ control-c ΠΈΠ»ΠΈ control-Break, ΠΈΠΌΠ΅Π²ΡΠΈΡ ΠΌΠ΅ΡΡΠΎ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π²ΡΠ·ΠΎΠ²Π° check_break(), ΠΈΠ»ΠΈ Ρ Π½Π°ΡΠ°Π»Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅ΡΠ»ΠΈ ΡΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΠΏΠ΅ΡΠ²ΡΠΉ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠ°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½Π°, Π΅ΡΠ»ΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π±ΡΠ»Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° allow_break(0), ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°ΠΏΡΠ΅ΡΠ°Π΅Ρ ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ control-c ΠΈ control-Break. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ check_break(), ΡΡΠΎΠ±Ρ Π²ΡΡΡΠ½ΠΈΡΡ, Π½Π΅ Π½Π°ΠΆΠΈΠΌΠ°Π» Π»ΠΈ Π²ΡΡ-ΡΠ°ΠΊΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ΄Π½ΠΎ ΠΈΠ· ΡΡΠΈΡ Π°Π²Π°ΡΠΈΠΉΠ½ΡΡ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΉ ΠΊΠ»Π°Π²ΠΈΡ. ΠΠ°ΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΡ ΡΠΎ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄Π»Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ Π±Π΅Π·ΠΎΡΠΈΠ±ΠΎΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±Π΅Π· ΠΌΠ°Π»Π΅ΠΉΡΠ΅Π³ΠΎ ΡΠΈΡΠΊΠ° ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° Π΄ΠΈΡΠΊΠ΅.
Π ΡΡΠΈΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π½ΠΈ control-c, Π½ΠΈ control-Break Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠ΄Π°Π½Ρ ΠΊΠ°ΠΊ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π²Ρ ΡΠΈΡΠ°Π΅ΡΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ. ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡ, ΡΡΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ ΡΠΎΡΡΠΎΡΠ»ΠΈΡΡ, Π²ΡΠ·Π²Π°Π² check_break().
ΠΡΠΈΠΌΠ΅Ρ:
k = get_key()
if check_break() then
temp = graphics_mode(-1)
puts(1, "ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ ...")
save_all_user_data()
abort(1)
end if
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
allow_break, get_key
clear_screen
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
clear_screen()
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠΈΡΠ°Π΅Ρ ΡΠΊΡΠ°Π½, Π·Π°ΠΏΠΎΠ»Π½ΡΡ Π΅Π³ΠΎ ΡΠ΅ΠΊΡΡΠΈΠΌ ΡΠΎΠ½ΠΎΠ²ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ (ΡΡΠΎΡ ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΡ bk_color()) ΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Ρ ΠΊΡΡΡΠΎΡ Π² Π»Π΅Π²ΡΠΉ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ³ΠΎΠ» ΡΠΊΡΠ°Π½Π°.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ ΠΈ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ .
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
bk_color, graphics_mode
close
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
close(fn)
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΠ°ΠΊΡΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ» ΠΈΠ»ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, Π·Π°Π²Π΅ΡΡΠΈΠ² Π²ΡΠ²ΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΅ΡΡ ΠΎΡΡΠ°Π²Π°Π»ΠΈΡΡ Π² Π±ΡΡΠ΅ΡΠ΅ ΠΊ Π΄Π°Π½Π½ΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
ΠΠΎΠ³Π΄Π° Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌ Π΅Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠΈ, Π²ΡΠ΅ ΠΎΡΠΊΡΡΡΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π°ΠΊΡΡΠ²Π°ΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, Π΅ΡΠ»ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π·Π°ΠΊΡΡΡΡ ΡΠ°Π½Π΅Π΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ close(fn).
Π‘ΠΌ. ΡΠ°ΠΊΠΆΠ΅:
open, flush
command_line
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
s = command_line()
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅:
ΠΡΠ΄Π°ΡΡ ΡΡΠ΄, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΡΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΡΠΎΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ»ΠΎΠ²ΠΎΠΌ, Π²Π²Π΅Π΄ΡΠ½Π½ΡΠΌ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΡΡΡΠΎΠΊΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ»Π° Π·Π°ΠΏΡΡΠ΅Π½Π° Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΠΎΠ²Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Euphoria ex.exe, exw.exe ΠΈΠ»ΠΈ exu, ΠΈΠ»ΠΈ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ»ΠΎΠ²Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΠ»ΠΈ ΠΈΠΌΡ Π²Π°ΡΠ΅Π³ΠΎ Euphoria .ex ΡΠ°ΠΉΠ»Π°, ΠΈΠ»ΠΈ (ΠΎΠΏΡΡΡ ΠΆΠ΅) ΠΏΡΡΡ ΠΊ Π²Π°ΡΠ΅ΠΌΡ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ ΡΠ°ΠΉΠ»Ρ. ΠΠ°ΡΠ΅ΠΌ Π±ΡΠ΄ΡΡ ΠΈΠ΄ΡΠΈ Π²ΡΠ΅ ΡΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΠΎΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ Π²Π°ΠΌΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠ»ΠΎΠ²Π° Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π΄Π°Π²Π°Ρ ΡΠΎΡ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΉ ΡΠ΅ΠΆΠΈΠΌ Π΅Ρ ΡΠ°Π±ΠΎΡΡ. Π‘Π΅ΡΠΈΠΈ ΡΠ»ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π±ΠΈΡΠ°ΡΡ Π² ΠΊΠ°Π²ΡΡΠΊΠΈ, ΡΡΠΎΠ±Ρ ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΡΡ ΡΠ΅ΡΠΈΡ ΡΠ»ΠΎΠ² Π² Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ.
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ:
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΡ Euphoria Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ. ΠΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π»ΡΠ±ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈ Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊ Π²ΠΈΠ΄Ρ .exe Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ½Π΄Π΅ΡΠ° ΠΈΠ»ΠΈ ΡΡΠ°Π½ΡΠ»ΡΡΠΎΡΠ°, Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΠΎΡΡΠ°Π»ΠΈΡΡ ΡΠ΅ΠΌΠΈ ΠΆΠ΅ ΡΠ°ΠΌΡΠΌΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΡΡ Π΄Π²ΡΡ , Ρ ΠΎΡΡ Π²Π°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΆΠ΅ Π½Π΅ Π²Π²ΠΎΠ΄ΠΈΡ "ex" Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅ (ΡΠΌ. ΠΏΡΠΈΠΌΠ΅ΡΡ Π½ΠΈΠΆΠ΅).
ΠΡΠΈΠΌΠ΅Ρ 1:
-- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π²Π²ΠΎΠ΄ΠΈΡ: ex myprog myfile.dat 12345 "the end"
cmd = command_line()
-- cmd Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π½ΠΎ:
{"C:\EUPHORIA\BIN\EX.EXE",
"myprog",
"myfile.dat",
"12345",
"the end"}
ΠΡΠΈΠΌΠ΅Ρ 2:
-- ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠΊΡΡΠ°Π½Π°, Π΅Ρ ΠΈΠΌΡ "myprog.exe",
-- ΠΈ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ c:\myfiles