Главная   
Форум по компилятору GAZ


Документация -- описание языка GAZ

Message('test_Arithmetic.gaz')
//+-*/ div mod shl shr ^ строка*число
StartStack=stack()

{ArithmeticCommands}
Message('OK='+((12+10)=22))
Message('OK='+((12-10)=2))
Message('OK='+((12*10)=120))
Message('OK='+((6/4)=1.5))
Message('OK='+((12 div 10)=1))
Message('OK='+((12 mod 10)=2))
Message('OK='+((3 shl 2)=12))
Message('OK='+((12 shr 2)=3))
Message('OK='+(4^3=64))
Message('OK='+(2*'father'='fatherfather'))

x=100
inc(x) Message('OK='+(x=101))
dec(x) Message('OK='+(x=100))
x++    Message('OK='+(x=101))
x--    Message('OK='+(x=100))
x+=5   Message('OK='+(x=105))
x-=5   Message('OK='+(x=100))

//Message('200')

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')












Message('test_break_continue_try_except_end_exit_return -- вложенные.gaz')
//try except end
//Break Continue
//Exit Return Halt

procedure P()
	for i=1 to 10 do begin
		SetException('OK=1')
	end
EndProcedure


for i=0 to 10 do begin
	try
		try
			for j=1 to 5 do begin
				P()
			end
		except
			if i+j=15 then Message(GetException())
		end
	except
	end
end

try
	P()
except
	Message(GetException())
end



StartStack=stack()

for t=1 to 1 do begin
	try

		i=0 x=0
		loop
			inc(i)
			inc(x)
			if i=5 then Break
		EndLoop
		Message('OK='+(x=5))
		

		i=0 x=0
		loop
			inc(i)
			inc(x)
			if i<5 then Continue
			Break
		EndLoop
		Message('OK='+(x=5))
	except
	end
end

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')





StartStack=stack()
for j=1 to 1 do begin
	try
		i=0 x=0
		repeat
			try
				inc(i)
				inc(x)
				if i=1 then Break
			except
			end
		until 0
		Message('OK='+(x=1))

		i=0 x=0
		repeat
			try
				inc(i)
				inc(x)
				if i<5 then Continue
				Break
			except
			end
		until 0
		Message('OK='+(x=5))
	except
	end
end
EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')




StartStack=stack()
for j=1 to 1 do begin
	try
		x=0
		for i=1 to 10 do begin
			try
				inc(x)
				if i=5 then Break
			except
			end
		end
		Message('OK='+(x=5))

		x=0
		for i=1 to 10 do begin
			try
				if i<5 then Continue
				inc(x)
			except
			end
		end
		Message('OK='+(x=6))
	except
	end
end
EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')






StartStack=stack()
for j=1 to 1 do begin
	try
		i=0 x=0
		while 1 do begin
			try
				inc(i)
				inc(x)
				if i=1 then Break
			except
			end
		end
		Message('OK='+(x=1))

		i=0 x=0
		while 1 do begin
			try
				inc(i)
				inc(x)
				if i<5 then Continue
				Break
			except
			end
		end
		Message('OK='+(x=5))
	except
	end
end
EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')












Message('test_Comments.gaz')
//какие бывают комментарии (первый тип комментария)
{второй тип комментария}
/*третий тип комментария*/
(*четвёртый тип комментария*)

StartStack=stack()


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_Config.gaz')
x=ConfigSelectI('c\c', 'data_verification')
Message(x)

ConfigUpdateI('c\c', 'data_verification', x+1)










Message('test_Console.gaz')
//ShowConsole HideConsole
//write writeln -- работа с консолью и с файлами
//readlninteger readlnfloat readlnstring -- для файлов и консоли
//readinteger readfloat readstring -- только для файлов
//assign rewrite reset close eof
StartStack=stack()


//проверка ввода пользователя из-под консоли
Message('Открываем консоль и выводим данные')
ShowConsole()
write('Введите "100", please: ')
x=readlninteger()
Message('OK='+(x=100))

writeln('Input "18.5", please!')
x=readlnfloat()
Message('OK='+(x=18.5))

writeln('Введите "строка", please!')
x=readlnstring()
Message('OK='+(x='строка'))

Message('Закрываем консоль')
HideConsole()



//проверка работы с файлами из-под консоли
assign(f, 'd:\test_console.txt')
rewrite(f)
writeln(f, 200)
writeln(f, 37.5)
writeln(f, 'stroka')
close(f)


reset(f)
x=readlninteger(f)
Message('OK='+(x=200))
x=readlnfloat(f)
Message('OK='+(x=37.5))
x=readlnstring(f)
Message('OK='+(x='stroka'))
close(f)


rewrite(f)
for i=1 to 10 do writeln(f, 100)
close(f)
reset(f) i=0
while not eof(f) do begin x=readlninteger(f) inc(i) end
close(f)
Message('OK='+(i=10))



rewrite(f)
write(f, 10) write(f, ' ')
write(f, 11.5) write(f, ' ')
write(f, 'battery')
close(f)
reset(f) i=0
x=readinteger(f) Message('OK='+(x=10))
x=readfloat(f)   Message('OK='+(x=11.5))
x=readstring(f)  Message('OK='+(x=' battery'))
close(f)














EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_Constants.gaz')
//CurrentPath PI e ExecuteFileWay PathRar
//SpaceSymbol TabSymbol LineBreak

StartStack=stack()

Message('CurrentPath='+CurrentPath)
Message('PI='+PI)
Message('e='+e)
Message('ExecuteFileWay='+ExecuteFileWay)
Message('PathRar='+PathRar)


Message('SpaceSymbol='+PascalViewString(SpaceSymbol))
Message('TabSymbol='+PascalViewString(TabSymbol))
Message('LineBreak='+PascalViewString(LineBreak))

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_Dialogs.gaz')
//Message Question InputInteger InputString ScreenMessage OutputArea
StartStack=stack()


Message('Команда Message!')

answer=Question('Выберите ответ "Да"','Да','Нет',1)
Message('OK='+(answer=1))
answer=Question('Выберите ответ "Нет"','Да','Нет',2)
Message('OK='+(answer=2))

x=InputInteger('Введите 77!')
Message('OK='+(x=77))
s=InputString('Введите строку 79!')
Message('OK='+(s='79'))

ScreenMessage('Экранное сообщение ScreenMessage')
OutputArea('Сообщение OutputArea')

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_Exceptions.gaz')
//try except end SetException GetException
StartStack=stack()

procedure P1()
	Message('OK='+(GetException()=''))
	try
		Message('OK='+(GetException()=''))
		try
			Message('OK='+(GetException()=''))
			SetException('Exception1')
		except
			Message('OK='+(GetException()='Exception1'))
			try
				Message('OK='+(GetException()=''))
				SetException('Exception2')
			except
				Message('OK='+(GetException()='Exception2'))
			end
			Message('OK='+(GetException()='Exception1'))
			SetException('Exception3')
		end
		Message('Произошла ошибка!')
	except
		Message('OK='+(GetException()='Exception3'))
	end
	SetException('Exception5')
EndProcedure

try
	P1()
except
		Message('OK='+(GetException()='Exception5'))
end

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')

Message('Сейчас должно высветиться: "Глобальный обработчик ошибок работает нормально!"')
SetException('Глобальный обработчик ошибок работает нормально! Тестирование завершено.')










Message('test_Files.gaz')
//проверка FileExists FileCreate FileClear FileCopy FileRename FileDelete FileRead FileWrite FileSize
//FileSelect
//FileSetDateTime FileSetReadOnly FileSetHidden FileSetArchive FileGetDateTime FileGetReadOnly FileGetHidden FileGetArchive
//FilePath FileName FileExt
//Rar UnRar
//LoadValues SaveValues MultiFileWrite MultiFileRead
StartStack=stack()



//делаем так, чтобы данных файлов небыло
name1='c:\1.txt'
name2='c:\2.txt'
name3='c:\3.txt'
if FileExists(name1) then FileDelete(name1)
if FileExists(name2) then FileDelete(name2)
if FileExists(name3) then FileDelete(name3)

Message('OK='+(not FileExists(name1)))
FileCreate(name1)
Message('OK='+FileExists(name1))

s=''
FileWrite(name1, '123')
FileRead(name1, s)
Message('OK='+(s='123'))

s=''
FileRename(name1, name2)
Message('OK='+(FileSize(name2)=3))
FileRead(name2, s)
Message('OK='+(s='123'))

s=''
FileCopy(name2, name3)
FileRead(name3, s)
Message('OK='+(s='123'))

FileClear(name3)
FileRead(name3, s)
Message('OK='+(s=''))

FileDelete(name2)
Message('OK='+(not FileExists(name2)))



FileSetDateTime(name3, Now()-10)
Message('OK='+(trunc(FileGetDateTime(name3))=trunc(Now()-10)))
FileSetReadOnly(name3, 1)
Message('OK='+(FileGetReadOnly(name3)=1))
FileSetHidden(name3, 1)
Message('OK='+(FileGetHidden(name3)=1))
FileSetArchive(name3, 1)
Message('OK='+(FileGetArchive(name3)=1))








FileDelete(name3)


FileCreate(name1)
Message('Выберите файл '+name1)
OK=FileSelect('c:',name)
Message('OK='+(LowerCase(name)=LowerCase(name1)))



Message('OK='+(FilePath('c:\temp\2.txt')='c:\temp'))
Message('OK='+(FileName('c:\temp\2.txt')='2'))
Message('OK='+(FileExt('c:\temp\2.txt')='txt'))




FileCreate('c:\1.txt')
Rar('c:\1.txt', 'c:\1.rar', 0)
UnRar('c:\1.rar', 'c:')


a[0]=100
a[1]=200
SaveValues('1', a[])

a[0]=143
a[1]=598
LoadValues('1', a[])
Message('OK='+(a[0]=100 and a[1]=200))

MultiFileWrite('1', 'hhh')
MultiFileRead('1', s)
Message('OK='+(s='hhh'))


try FileDelete('1.cfg') except end
try FileDelete('1.keep') except end
try FileDelete('1.sh0') except end
try FileDelete('1.sh1') except end
try FileDelete('1.sh2') except end


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_Firebird.gaz')



db=db_connect('c:\task1.fdb')
tr=tr_connect(db)
q=q_connect(tr)
q_open(q, 'select * from DIR_Units')

while not q_eof(q) do begin
	Message(q_val(q, 'name'))
	q_next(q)
end

Message(q_recordcount(q))

q_exec(q,'insert into Buf values(''125'')')
tr_commit(tr)

//tr_rollback(q)
GlobalHalt()









Message('test_Float.gaz')
//sin, cos, tan, cot, sec, csc, arcsin, arccos, arctan, sihh, cosh, tanh, coth, ln, lg, exp, sqrt, cuberoot, frac
//PI и e -- предопределённые константы
StartStack=stack()


sin(PI/6)
cos(PI/6)
tan(PI/6)
cot(PI/6)
sec(PI/6)
csc(PI/6)
arcsin(0.5)
arccos(0.5)
arctan(0.5)
sinh(1)
cosh(1)
tanh(1)
coth(1)
ln(e*e)
lg(100)
exp(1)
sqrt(81)

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_HotKeys.gaz')
//RegisterHotKey UnregisterHotKey GetHotKey InputHotKey
StartStack=stack()


InputHotKey('Введите горячую клавишу!', ctrl, alt, x)
Message('Вы ввели горячую клавишу: '+ctrl+'   '+alt+'   '+x)


RegisterHotKey(65003, 1, 0, 96+5) //статус ctrl=1 статус alt=0 клавиша=96+5 то есть 5 на цифровой клавиатуре
Message('Нажмите Ctrl+Num5 для проверки работы горячих клавиш!')

loop
	g=GetHotKey()
	if g<>0 then begin
		Message('Горячая клавиша была нажата!')
		UnRegisterHotKey(65003)
		halt
	end
EndLoop

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_Math.gaz')
//random(x) random Faktorial sqr cube abs sgn min max
StartStack=stack()


Message('OK='+(random(10)<10)) //целочисленный random
Message('OK='+(random()<1.0))  //вещественный random
Message('OK='+(Faktorial(6)=720))
Message('OK='+(sqr(-8)=64))
Message('OK='+(cube(-8)=-512))
Message('OK='+(abs(-8)=8))
Message('OK='+(sgn(-8)=-1))
Message('OK='+(min(2,7,3)=2))
Message('OK='+(max(2,7,3)=7))

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_Mouse.gaz')
//GetMousePos SetMousePos
StartStack=stack()


GetMousePos(x, y)
Message('Текущие координаты мыши: '+x+', '+y+'. Сейчас поставим мышь в позицию (100,100)')
SetMousePos(100,100)


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_OperatorsIfWhileRepeatForLoop.gaz')
//if while repeat for loop halt
StartStack=stack()


x=1
if x=1 then Message('OK=1')
else Message('OK=0')

x=0
if x=1 then begin Message('OK=0') end
else begin Message('OK=1') end

x=0 y=0
while x<>100 do begin
	inc(y)
	inc(x)
end
Message('OK='+(y=100))

x=0 y=0
repeat
	inc(y)
	inc(x)
until x=100
Message('OK='+(y=100))

y=0
for x=0 to 99 do begin
	inc(y)
end
Message('OK='+(y=100))


y=0
loop
	inc(y)
	if y=100 then halt //выход из программы
EndLoop


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_Paths.gaz')
//PathExists PathCreate PathSelect GetFiles DiskFree DiskSize
//PathCopy PathCopyFiles
//PathDelete PathClear PathSize
//GetPrevWay GetShortWay GetFullWay GetLevelWay
StartStack=stack()


disk=InputString('Введите букву диска для работы (ОДНА БУКВА)')
Message('Свободное место на диске '+disk+': '+floattostr(DiskFree(disk),0))
Message('Размер диска '+disk+': '+floattostr(DiskSize(disk),0))

name1=disk+':\temp1'
name2=disk+':\temp2'
name3=disk+':\temp3'

if PathExists(name1) then PathDelete(name1)
if PathExists(name2) then PathDelete(name2)
if PathExists(name3) then PathDelete(name3)
PathCreate(name1)
PathCreate(name2)
PathCreate(name3)

FileCreate(name1+'\1.txt')
FileCreate(name1+'\2.txt')
FileCreate(name1+'\3.txt')
FileWrite(name1+'\1.txt', '123')
FileWrite(name1+'\2.txt', '45')
FileWrite(name1+'\3.txt', '6')

Message('OK='+(round(PathSize(name1))=6))

PathCopyFiles(name1, name2)

Message('OK='+(round(PathSize(name2))=6))

PathCopy(name1, name2+'\'+FileName(name1))
Message('OK='+(round(PathSize(name2))=12))



PathClear(name1)
FileCreate(name1+'\1.txt')
FileCreate(name1+'\2.txt')
FileCreate(name1+'\3.txt')
PathClear(name1)
Message('OK='+(FileExists(name1+'\1.txt')=0))







Message('Сейчас отобразим информацию о файлах папки '+name2)
GetFiles(name2, CountFiles, Names[], IsFiles[], Sizes[], DateTimes[], ReadOnlys[], Hiddens[], Archives[])
for i=0 to min(CountFiles-1,3) do begin
	Message(
	'Имя: '+Names[i]+
	'   Это папка: '+IsFiles[i]+
	'   Размер: '+Sizes[i]+
	'   Дата: '+DateTimes[i]+
	'   ТолькоЧтение: '+ReadOnlys[i]+
	'   Скрытый: '+Hiddens[i]+
	'   Архивный: '+Archives[i])
end





Message('Выберите папку c:\windows (если её нет, создайте)')
OK=PathSelect('c:', name)
if LowerCase(name)='c:\windows' then Message('OK=1') else Message('OK=0')

Message('Сейчас откроется папка которую Вы выбрали!')
PathShow(name)




Message('OK='+(GetPrevWay('c:\temp\1.txt')='c:\temp'))
Message('OK='+(GetShortWay('c:\temp\1.txt')='1.txt'))
Message('OK='+(GetLevelWay('c:\temp\1.txt')=2))
Message('Текущая папка: '+GetFullWay(''))

EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')














Message('test_ProceduresArraysRecursionGlobalVariables.gaz')
//procedure function return global var x[] x[1] SetLength length
//= <> > < >= <= or and not in множества
StartStack=stack()


//процедуры функции рекурсия глобальные и локальные переменные, параметры процедуры, вызов процедур из процедур
//массивы
variable=0

function fak(x) //если не var-параметр, то всегда передаётся только значение, иначе весь массив
	if x=0 then res=1
	else res=x*fak(x-1)
	global.variable=res
	return res
EndFunction

x=fak(6)
Message('OK='+(variable=720))
Message('OK='+(x=720))




procedure Obnulator2(var x[])
	x[1]=2	
EndProcedure


procedure Obnulator(var x[]) //var-параметры всегда так передаются
	x[0]=1
	Obnulator2(x[])
EndProcedure

x[0]=1
x[1]=2
x[2]=3
Obnulator(x[])

Message('OK='+(x[0]=1 and x[1]=2 and x[2]=3))






procedure P02(x,y)
	Message('OK='+ ((x=123) and (y=189)) )
	x=1 y=2
	Message('OK='+ ((x=1) and (y=2)) )
EndProcedure



procedure P01(x,var y[])
	Message('OK='+ ((x=123) and (y=189)) )
	P02(x,y)
	Message('OK='+ ((x=123) and (y=189)) )
	x=3 y=4
	Message('OK='+ ((x=3) and (y[0]=4)) )
EndProcedure


procedure start(x,y)
	t=18
	q=19
	Message('OK='+ ((x=123) and (y=189)) )
	P01(x,y[])
	Message('OK='+ ((x=123) and (y=4)) )
EndProcedure

start(123,189)



y=100
SetLength(y[],3)
Message('OK='+ (length(y[])=3) )










x[]=[1,2,3.0,'4',5]
Message('OK='+(1 in x[]))
//Message('OK='+(1.0 in [1,2,3.0,'4',5]))


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_ProcessesWindows.gaz')
//GetProcesses GetWindows
//KillProcess HideWindow ShowWindow
//GetCurrentProcessId GetCurrentProcessName
//ProcessNameToProcessId ProcessIdToProcessName HandleWindowToProcessId NameWindowToHandleWindow HandleWindowToNameWindow
//ProcessExists
StartStack=stack()


//процессы
GetProcesses(Count, IDs[], Names[], Priorities[], CountsThreads[])
s='Информация о процессах: '#13#10
s=s+'Число процессов: '+Count+#13#10
for i=0 to Count-1 do
	s=s+(IDs[i]+'   '+Names[i]+'   '+Priorities[i]+'   '+CountsThreads[i])+#13#10
OutputArea(s)

//окна
GetWindows(Count, Handles[], Names[], Visibles[], ProcessIDs[], ProcessNames[], ProcessPriorities[], ProcessCountThreads[])
s='Информация об окнах: '#13#10
s=s+'Число окон: '+Count+#13#10
for i=0 to Count-1 do
	s=s+(Handles[i]+'   '+Names[i]+'   '+Visibles[i]+'   '+ProcessIDs[i]+'   '+
	ProcessNames[i]+'   '+ProcessPriorities[i]+'   '+ProcessCountThreads[i])+#13#10
OutputArea(s)


//процессы
process_id   = GetCurrentProcessId()
process_name = GetCurrentProcessName()
Message('Текущий процесс: ID='+process_id+'   Name='+process_name)
process_id=ProcessNameToProcessId('explorer.exe')
process_name='explorer.exe'
Message('OK='+(LowerCase(process_name)=LowerCase(ProcessIdToProcessName(process_id))))

//окна
i=0 repeat inc(i) until Names[i]<>''
window_handle = Handles[i]
window_name   = Names[i]
Message('Существует такое окно: Hanlde='+window_handle+'   Name='+window_name)
Message('ID процесса с данным окном: '+HandleWindowToProcessId(window_handle)+'   Name='+ProcessIdToProcessName(HandleWindowToProcessId(window_handle)))
Message('OK='+(window_handle=NameWindowToHandleWindow(window_name)))
Message('OK='+(LowerCase(HandleWindowToNameWindow(window_handle))=LowerCase(window_name)))


//скрыть окно/убить процесс
//KillProcess(312)
//KillProcess('StudyingEnglish.exe')
//HideWindow(197284)
//ShowWindow(197284)
//HideWindow('Sony Ericsson C702')
//ShowWindow('Sony Ericsson C702')


Message('OK='+(ProcessExists('explorer.exe')))


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_Screen.gaz')
//GetMaxX GetMaxY
//setcolor(r, g, b) line
StartStack=stack()


Message('GetMaxX='+GetMaxX()+'   GetMaxY='+GetMaxY())
setcolor(0, 255, 0) //зелёный
line(0, 0, GetMaxX(), GetMaxY())


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_String.gaz')
//LowerCase UpperCase MD5 MD6 LengthString SetLengthString getchar getchars pos SameStrings
//Trim PascalViewString StringDelete StringInsert StringReplace
//DosToWin WinToDos DosToUtf8 WinToUtf8
StartStack=stack()



Message('OK='+(LowerCase('fAtHEr')='father'))
Message('OK='+(UpperCase('fAtHEr')='FATHER'))
Message('OK='+(MD5('')='D41D8CD98F00B204E9800998ECF8427E'))
Message('OK='+(MD6('')='D41D8CD98F00B204E9800998ECF8427E'))

Message('OK='+(LengthString('123')=3))
s='' SetLengthString(s, 18)
Message('OK='+(LengthString(s)=18))

s='father'
Message('OK='+(getchar(s, 2)='a'))
Message('OK='+(getchars(s, 2, 4)='ath'))

Message('OK='+(pos('567', '123456789')=5))
Message('OK='+(pos('39', '123456789')=0))

Message('OK='+(SameStrings('father', 'father24')=87))

Message('OK='+(Trim('   167   ')='167'))
Message('OK='+(PascalViewString('''123''')='''''''123'''''''))

s='12345'
StringDelete(s, 2,2)
Message('OK='+(s='145'))
StringInsert('23',s,1)
Message('OK='+(s='23145'))

Message('OK='+(DosToWin(WinToDos('баБуШка'))='баБуШка'))
DosToUtf8('100')
WinToUtf8('100')

x='x100y'
StringReplace('100', '200', x)
Message('OK='+(x='x200y'))


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_Time.gaz')
//Now GetTicks DateTimeToString DateTimeToPathString GetDateTime DateTimeToString0
StartStack=stack()


Message('Текущее время: '+DateTimeToString0(Now(), 'H:0m'))
Message('Дата рождения: '+DateTimeToString(StringToDateTime('11.04.1985')))

Message('Текущее время: '+Now())
Message('Текущее время: '+Now())
Message('Текущее время: '+DateTimeToString(Now()))
//Message('Текущее время: '+DateTimeToPathString(Now()))

Message('Прошло тактов процессора с момента запуска компьютера: '+floattostr(GetTicks(),0))

GetDateTime(x1,x2,x3,x4,x5,x6,x7)
Message('Текущая дата/время: '+x1+' '+x2+' '+x3+' '+x4+' '+x5+' '+x6+' '+x7)


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')











Message('test_Types.gaz')
//IsInteger IsFloat IsString inttostr floattostr trunc round  chr integer float string
//strtoint strtofloat ord DateToString DateToPathString
//DateToString TimeToStringHM TimeToStringHMS  TimeToStringHMSH
StartStack=stack()



Message('OK='+(IsInteger(2.08)=0))
Message('OK='+(IsFloat(2.08)=1))
Message('OK='+(IsString(2.08)=0))
Message('OK='+(inttostr(-89)='-89'))
Message('OK='+(floattostr(PI,2)='3.14'))
Message('OK='+(trunc(2.68)=2))
Message('OK='+(round(2.68)=3))
Message('OK='+(chr(33)='!'))
Message('OK='+(integer('345')=345))
Message('OK='+(IsFloat(float('345'))=1))
Message('OK='+(string(345)='345'))
Message('OK='+(strtoint('189')=189))
Message('OK='+(strtofloat('189.5')=189.5))
Message('OK='+(ord('!')=33))

//Message(DateTimeToString(35000.0))

Message('OK='+(DateTimeToString(35000.0)='28.10.1995   0:00:00.00'))
//Message('OK='+(DateTimeToPathString(35000.0)='1995.10.28   00-00-00.00'))



//Message('OK='+(DateToString(35000.0)='28.10.1995'))

//time=(15+38/60+18/3600+1/360000)/24
//Message('OK='+(TimeToStringHM(time)='15:38'))
//Message('OK='+(TimeToStringHMS(time)='15:38:18'))
//Message('Текущее время: '+TimeToStringHMSH(time))


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')










Message('test_Windows.gaz')
//DisableTaskManager EnableTaskManager AddProgramToAutoload DelProgramFromAutoload
//DisableTaskPanel EnableTaskPanel OpenCdRom CloseCdRom
//GetDesktopPath GetMainMenuPath GetWindowsPath GetProgramFilesPath
//SetWallpaper
//Reboot ShutDown LockInput UnlockInput DisableLaunchButton EnableLaunchButton HideStartButton ShowStartButton
//GetComputerName GetUserName
//RegisterExtension
StartStack=stack()



DisableTaskManager() //запретить диспетчер задач
EnableTaskManager()  //разрешить диспетчер задач
way='' //путь к программе для автозагрузки
AddProgramToAutoload('111', way)
DelProgramFromAutoload('111')
DisableTaskPanel() //запретить панель задач
EnableTaskPanel()  //разрешить панель задач
letter='d' //буква сидерома для открытия
OpenCdRom(letter)
CloseCdRom(letter)
Message('Рабочий стол: '  + GetDesktopPath())
Message('Главное меню: '  + GetMainMenuPath())
Message('Папка Windows: ' + GetWindowsPath())
Message('Папка Program Files: ' + GetProgramFilesPath())
SetWallpaper('d:\1.bmp') //обои для рабочего стола
Message('Текущая заставка: '+GetWallpaper())

Message('Имя компьютера: '   + GetComputerName())
Message('Имя пользователя: ' + GetUserName())


Message('Блокируем клавиатуру и мышь')
LockInput()
delay(2)
UnlockInput()

Message('Кнопка ПУСК не будет нажиматься')
DisableLaunchButton()
delay(2)
EnableLaunchButton()

Message('Прячем кнопку ПУСК')
HideStartButton()
delay(2)
ShowStartButton()


Message('ПЕРЕЗАГРУЗКА И ВЫКЛЮЧЕНИЕ КОМПЬЮТЕРА')
if 0 then begin
	Reboot()
	ShutDown()
end

Message('Вы нажали клавишу с кодом: '+GetKeyCode('Нажмите клавишу для определения кода'))
KeyPress(13)

//RegisterExtension('gaz', 'c:\1.txt')


EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')






















Message('test_НовыеВозможности2.gaz')
//добавлен ГлобальныйМодуль global.gaz
Message('calc(1+1)='+calc(1+1))









Message('test_Сортировка и Обратная сортировка.gaz')
StartStack=stack()



x[]=[400,200,100,300,500]
Sort(0, 4, x[])
Message('OK='+(x[0]=100 and x[1]=200 and x[2]=300 and x[3]=400 and x[4]=500))

x[]=[400,200,100,300,500]
Sort(4, 0, x[])
Message('OK='+(x[0]=500 and x[1]=400 and x[2]=300 and x[3]=200 and x[4]=100))



EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')









Message('test_яНовыеВозможности.gaz')
//новые возможности версии 1.2

SetPriority(3) //теперь действительно работает, но только приоритеты -3,0,2,3

setcolor(255, 255, 255) //теперь работает
for j=0 to 50 do
   for i=0 to 50 do
      putpixel(2*i, 2*j)

FileSelect('', b, 'Выбери файл!') //новый интерфейс
PathSelect('', b, 'Выбери папку!') //новый интерфейс
//клики мышкой
SetMousePos(0, 1023)
LeftClick()
RightClick()
LeftClickDown()
LeftClickUp()
RightClickDown()
RightClickUp()

Message(InputArea('Введите сообщение!'))

//DOS('net send asu3 100') //Message(GetTicks())

Message('Папка МоиДокументы: '+GetDocumentsPath())




Message('Число параметров программы: '+ParamCount())

//Message(GetParam(1))  -- параметры программы

Compile() //получение файла bnz





//добавлено 11 сентября 2009 г.
StartTimer()
Message('Сейчас запустится калькулятор -- для продолжения работы его нужно закрыть')
sleep(100) //=delay(0.1)
Count=Search(GetWindowsPath(), 'calc.exe', M[])
Message('000')
ExecWait(M[0])
Message('7 xor 3='+(7 xor 3))
StopTimer()
pause('OK')



















OK=0

procedure M()
	Message('OK='+global.OK)
EndProcedure






OK=eval('return 1+1')=2
M()

//setnow(now()) -- установка текущего времени

OK=SpecialView(5)='5' and SpecialView(5.5)='5.500000000000000' and SpecialView('123')='''123'''
M()

//readln, read -- то же самое что и readlnstring и readstring -- только с приведением типа если это возможно

x=18
y=19
SetGlobal('x', 27)
OK=GetGlobal('x', 0)=27
M()

//создание ярлыка
name=GetDesktopPath()+'\ping.lnk'
CreateLink(name, 'ping', '127.0.0.1')
OK=FileExists(name)

Message('Текущий год: '+GetYear(Now()))
Message('Текущий месяц: '+GetMonth(Now()))
Message('Текущее число: '+GetDay(Now()))
Message('Текущий день недели: '+GetDayOfWeek(Now()))

s='paPa'
ToUpperCase(s)
OK=s='PAPA'
M()
ToLowerCase(s)
OK=s='papa'
M()


Message('Имя текущей программы: '+GazGetName()) //по умолчанию имя газ-программы такое же как имя закускаемого файла
GazSetName('1000') //изменили имя текущей программы
OK=GazGetName()='1000'
M()


//GazKillName -- убить газ-процесс с таким именем
//GazSetDieCry -- установить предсмертный крик данной программы, будет отображаться перед выходом, если убивают

Message('Интервал проверки: '+GazGetTimer()+' сек.')
GazSetTimer(10000)
OK=GazGetTimer()=10000
M()

Message('Используемая память: '+UsedMemory())


GetLogicalDrives(Drives[])
s=''
s+='Присутствуют такие логические диски: '#13#10
for i=0 to length(Drives[])-1 do begin
	if not Drives[i] then Continue
	tip=GetDriveType(i)
	letter=chr(ord('a')+i)
	s+=letter+': '
	if tip=drive_unknown then s+='неизвестный'
	else if tip=drive_no_root_dir then s+='no_root_dir'
	else if tip=drive_removable then s+='съёмный'
	else if tip=drive_fixed then s+='винт'
	else if tip=drive_remote then s+='сетевой'
	else if tip=drive_cdrom then s+='сидером'
	else if tip=drive_removable then s+='RAM-диск'
	s+='   '
end
Message(s)

Message('Программа трассируется='+IsDebuggerPresent())

//GlobalHalt -- процедура для прерывания программы -- прервёт всю программу даже внутри eval()

Message('Глобальные переменные программы: '+globals())











Message('TestNull.gaz')
//Message(null)

db=db_connect('localhost:c:\task1.fdb')
tr=tr_connect(db)
q=q_connect(tr)

q_open(q,'select current_timestamp x from dir_goods')

v=q_val(q,'x')

if v=null then Message('null')
else if IsInteger(v) then Message('i'+v)
else if IsFloat(v) then Message('f'+v)
else if IsString(v) then Message('s'+v)










Message('test_OTHERS')
//dos NetSend exec delay #13#10 -- хороший разделитель строк
//SetPriority Sort Tormoza stack Ping
StartStack=stack()


//команда copy почему-то не работает; вместо rename будет ren
FileCreate('c:\1.txt')
dos('xcopy c:\1.txt c:\2.txt') //выполнить команду как в командной строке (второй необязательный параметр -- видимость)



hostname=GetComputerName()
try
	NetSend(hostname, 'Сообщение по сети') //или имя компьютера или его адрес (например, 127.0.0.1)
except
	Message(GetException())
end
exec('F:\Program Files\Audacity\Audacity.exe', 'params', 1) //0 или 1 --видимость окна запускаемой программы
delay(1.000) //подождать секунду
SetPriority(2) //приоритет текущей программы -3 0 2 3 -- 4 варианта могут быть


M[] = [0,  20.0, 10]
v[] = [30, 20,   10]
Sort(0, 2, M[], v[])

Message(M[0]+'   '+M[1]+'   '+M[2]+'   (должно быть 0 10 20.00000)')
Message(v[0]+'   '+v[1]+'   '+v[2]+'   (должно быть 30 10 20)')



Tormoza(0) //запустить тормоза от 0 до 12
Message('Заполненность стека: ='+stack())

ping('127.0.0.1')



EndStack=stack()
if EndStack=StartStack then Message('СО СТЕКОМ ВСЁ В ПОРЯДКЕ') else Message('СО СТЕКОМ НЕ ВСЁ В ПОРЯДКЕ!')
Message('Тестирование завершено!')


s='123'
SetClipboard(s)
s2=GetClipboard()
if s=s2 then Message('OK')






//простая и удобная работа с горячими клавишами
x=RegisterHotKey3(1, 1, 'num5')
y=RegisterHotKey3(1, 1, 'f1')


loop
   HK=GetHotKey()
   if HK=x then begin
      Message('100')
      halt
   end
   else if HK=y then begin
      Message('200')
      halt
   end
endloop





//выполнение теста процедуры в псевдопотоке

Procedure Draw()
   for i=1 to 10 do line(random(100), random(100), random(100), random(100))
EndProcedure



ExecuteProcedureParallel('Draw')
GEval(GetProcedureText('Draw'))
GEval('for i=1 to 10 do line(random(100), random(100), random(100), random(100))')



ExecuteThread('Draw') //использование настоящего потока

Message('OK')



Rambler's Top100 HotLog