Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Euphoria. Π‘ΠΏΡ€Π°Π²ΠΎΡ‡Π½ΠΎΠ΅ руководство». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 20

Автор W Cat

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ:

Если Π‘ΠΈ-функция Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΠΎΠ΄Π°Ρ‡ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚ΠΎΠ³Π΄Π° ряд 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