- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
Procedure ArrDataToRawImage(Ptr: PRGB32; Size: TPoint; out RawImage: TRawImage);
Begin
RawImage.Init; { Calls raw.Description.Init as well }
RawImage.Description.PaletteColorCount:=0;
RawImage.Description.MaskBitsPerPixel:=0;
RawImage.Description.Width := Size.X;
RawImage.Description.Height:= Size.Y;
RawImage.Description.Format := ricfRGBA;
RawImage.Description.ByteOrder := riboLSBFirst;
RawImage.Description.BitOrder:= riboBitsInOrder; // should be fine
RawImage.Description.Depth:=24;
RawImage.Description.BitsPerPixel:=32;
RawImage.Description.LineOrder:=riloTopToBottom;
RawImage.Description.LineEnd := rileDWordBoundary;
RawImage.Description.RedPrec := 8;
RawImage.Description.GreenPrec:= 8;
RawImage.Description.BluePrec:= 8;
RawImage.Description.AlphaPrec:=0;
RawImage.Description.RedShift:=16;
RawImage.Description.GreenShift:=8;
RawImage.Description.BlueShift:=0;
RawImage.DataSize := RawImage.Description.Width * RawImage.Description.Height
* (RawImage.Description.bitsperpixel shr 3);
RawImage.Data := PByte(Ptr);
End;
with ... do? Не. не слышал.
guest 01.12.2014 20:08 # 0
guest 02.12.2014 12:29 # 0
roman-kashitsyn 02.12.2014 13:05 # 0
bormand 02.12.2014 13:20 # 0
А оно надо?
kipar 03.12.2014 16:17 # 0
guest 15.01.2015 23:25 # +2
так как он только проблемы создает!
1) при отладке не позволяет легко производить мониторинг переменных
2) казалось бы должен легко читаться, но в тоже время может вызвать путаницу типа параметр Width к чему относится к форме или можету у RawImage.Description тоже есть такой же параметр..... (это для читаемости кода другим программистом)
Вобщем мое мнение таково, что после написание кода убирать нафиг with!
Lokich 01.12.2014 22:09 # +2
inkanus-gray 01.12.2014 22:23 # 0
bormand 02.12.2014 06:59 # +3
3.14159265 02.12.2014 13:22 # +3
bormand 02.12.2014 14:56 # 0
Cynicrus 02.12.2014 15:51 # −1
bormand 02.12.2014 16:02 # +1
Или "никогда и ни при каких обстоятельствах не обращаться к локальным переменным внутри with" это и есть "использовать с умом"?
guest 02.12.2014 16:21 # +1
bormand 02.12.2014 16:27 # +4
Т.е. все локальные переменные должны начинаться с какого-то префикса, чтобы их имена гарантированно не конфликтанули с тем, что вывалилось из with? Нахуй так жить...
P.S. Приведи пример локальной переменной, названной в соответствии с выбранным тобой соглашением.
3.14159265 02.12.2014 16:58 # +4
С таким успехом можно написать:
bormand 02.12.2014 17:00 # 0
И только паскалисты готовы продать душу, обменяв надежность на сиюминутное удобство.
3.14159265 02.12.2014 17:01 # +1
Ха! Во-первых, это js. Ибо присваивание = и нет автовывода типов.
И руками указывать в паскалике для временной переменной тип особенно с женериком - заёб.
А во-вторых, в js работает hoisting все объявления переменных тоже переносятся в самый верх функции. Только автоматически.
Так что аналогия определённая прослеживается.
Cynicrus 02.12.2014 17:16 # +1
Cynicrus 02.12.2014 16:23 # 0
bormand 02.12.2014 16:44 # +1
Вы серьезно не понимаете, в чем заключается проблема потери контроля над локальным скопом, и каковы ее последствия?
Cynicrus 02.12.2014 16:53 # 0
bormand 02.12.2014 16:56 # 0
bormand 02.12.2014 17:09 # 0
Раз в году и палка стреляет.
P.S. Или у вас в паскале всё покрыто тестами, и подобный косяк сразу же обнаружится?
Анонимус 02.12.2014 19:19 # 0
звучит как "dependency injection в коболе"
bormand 02.12.2014 19:24 # 0
- Нету!
- А если найду?
Cynicrus 02.12.2014 21:21 # 0
bormand 02.12.2014 21:23 # 0
> FPC
На ideone как раз выбран fpc, и он всё собрал. Может опции какие-то надо...
Qwertiy 02.12.2014 18:48 # 0
bormand 02.12.2014 18:58 # +4
Которую надо выпилить нахуй и не смешить людей. В жс и без этой говнофичи хватает подводных камней.
TarasB 02.12.2014 16:47 # +2
bormand 02.12.2014 16:48 # +1
TarasB 03.12.2014 23:22 # 0
bormand 04.12.2014 07:34 # +1
Только для паскаля, но никак не для жс. Кстати, какой-нибудь из компиляторов паскаля его выдаёт (пример можешь взять на ideone в одном из моих постов выше)?
3.14159265 02.12.2014 16:54 # +1
Edit: Оказывается разрешено. Надо было просто запретить.
3.14159265 02.12.2014 17:14 # 0
. - 1й уровень вложенности
.. 2й уровень
итд
Но на мой вкус излишне сахарно.
В сиране жабах как убогая замена with юзается инициализатор.
Однако лично я не рекомендую такой способ инициализации.
По одной простой причине.
Анонимный класс, наследующий RawImage будет содержать неявные поля (покопайтесь javap в классе с $), захваченных из контекста переменных, всякие чужие thisы, и прочее.
Объект будет на 4/8/12 байт больше чем чистый RawImage, в зависимости от вложенности, если потом он будет хранится в памяти и попадёт в oldgen (я с таким сталкивался) возможны просадки пирфоманса.
Qwertiy 02.12.2014 18:49 # 0
Вот бы ещё With Using у них выпросить ^_^
bormand 02.12.2014 18:57 # 0
Qwertiy 02.12.2014 19:17 # 0
Это в паскале как-то хитро дополняет, насколько я помню.
Qwertiy 02.12.2014 19:25 # 0
Результат:
3.14159265 02.12.2014 19:31 # +1
Qwertiy 02.12.2014 19:34 # +2
Smth!SmthElse
Smth("SmthElse")
Ну и шарповариант:
Smth["SmthElse"]
inkanus-gray 04.12.2014 16:25 # 0
Анонимус 04.12.2014 22:39 # 0
bormand 02.12.2014 19:25 # 0
Годнота!