Показать сообщение отдельно
Старый 10.11.2011, 16:22   #96
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,372
Написано 2,478 полезных сообщений
(для 6,866 пользователей)
Ответ: Вопрос-Ответ (для новичков BlitzMax)

По поводу семпла бегло могу сказать сразу:


Function Add(X:Int, I:Int, Text:String, Source:String = " ")
	Local NewData:TCustomType = New TCustomType;
		NewData.X = X;
		NewData.Y = Y;
Параметр I в конструкторе ошибочен - внутри конструктора Y остаётся вновь созданной нетронутой переменной с нулём.

While Not KeyDown(KEY_ESCAPE)
Local LObj:TCustomType;
Local I:Int;
Опрашивать клавиатуру нечем. Окна то нет.

	Method Destroy()
		ObjList.Remove(Self) ;
		X = Null;
		Y = Null;
		Text = Null;
		GCCollect;
	End Method
Я понимаю стремление всё контролировать, но обнулять переменные не надо. Это сделает Garbage collector сам. Всё кроме ObjList.Remove(Self) и GCCollect можно убрать из деструктора.


Написал семпл:
SuperStrict
Framework brl.basic
Import brl.glmax2d
Import brl.random
Import brl.threads

Type TTest
	Field x:Float, y:Float, z:Float
EndType

Function MySexyThread:Object(obj:Object)
		Local tst:TTest
		Try
			tst.x = 7
			tst.y = 8
		Catch e:Object
			Print "Gotcha! " + e.ToString()
		EndTry
EndFunction


Global SexyThread:TThread = New TThread

SeedRnd(MilliSecs())


Local endtime:Int = MilliSecs() + (1000 * 60)
While (MilliSecs() < endtime)
	If Not SexyThread.Running() Then SexyThread = CreateThread(MySexyThread, Null)
	Delay(1)
Wend
Работает как положено. На протяжении минуты плюёт экскепты.
Твой код с указанными выше правками тоже работает.

SuperStrict
Framework brl.basic
Import brl.glmax2d
Import brl.random
Import brl.threads

Local img:TImage

Try
	DrawImage(img, 10, 10)
Catch e:Object
	Print "Wft? " + e.ToString()
End Try
Тоже вполне работает.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Greymem (11.11.2011)