purebasic.info

PureBasic forum
Текущее время: Чт янв 18, 2018 6:23 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Мелкие вопросы
СообщениеДобавлено: Пт мар 22, 2013 10:50 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Вот разобрал мелкие вопросы, чтобы искать долго не нужно было:

Категории:
API (2)
Array & Linked List (2)
DLL (1)
File (3)
Gadget (4)
Image (1)
Math (1)
Mouse & Keyboard (2)
Network (1)
Program (1)
System (5)
UserLib (1)
Varibles, Pointers & MemoryAdress (6)
Window (1)
Графика (3)

API
1. Возможно ли создать процедуру, которая может принимать в параметре переменные разного типа? Как, например, SendMessage_(), которая в параметре IParam может принимать и числа, и строки (например, сообщение #EM_REPLACESEL)
Цитата:
а ты задумывался каким образом в СендМессадж передается строка? Там не строка, а указатель на нее.


2. Как установить/изменить заголовок окна через API?
Цитата:
SetWindowText_(WindowID(#Main), text$)



Array & Linked List
3. Добрый вечер! Возможно ли в выбранном элементе структ.связ.списка как-то сравнить все поля по-порядку с эталоном с помощью цикла?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Structure Speed 
    Speed1.l
    Speed2.l
    Speed3.l
EndStructure
 
NewList Speedometr.Speed()
 
AddElement(Speedometr())
Speedometr()\Speed1 = 60
Speedometr()\Speed2 = 20
Speedometr()\Speed3 = 40
 
AddElement(Speedometr())
Speedometr()\Speed1 = 30
Speedometr()\Speed2 = 40
Speedometr()\Speed3 = 80
 
AddElement(Speedometr())
Speedometr()\Speed1 = 70
Speedometr()\Speed2 = 90
Speedometr()\Speed3 = 10
 
SelectElement(Speedometr(), 1)
 
For i = 0 To 2
  If ...(i) = 100
    Debug "Совпадение"
  EndIf
Next



Цитата:
Тогда лучше в структуре данные хранить в статическом массиве.

Код:
1
2
3
4
5
6
7
8
9
10
Structure Speed 
  Speed.l[3]
EndStructure
 
NewList Speedometr.Speed()
 
AddElement(Speedometr())
Speedometr()\Speed[0] = 60
Speedometr()\Speed[1] = 20
Speedometr()\Speed[2] = 40




4.
Код:
1
2
3
4
5
6
7
Procedure arr_proc(Array arr()) 
EndProcedure
Dim arr(3)
arr(0)=0
arr(!)=1
arr(2)=2
arr(3)=3



[b]как его в процедуру запихать
он у меня пихается, только по одному элементу
[/b]
Код:
1
Procedure arr_proc(Array arr(1))



Цитата:
Так как есть, так и запихать.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Procedure arr_proc(Array arr(1)) 
  arr(0)=0
  arr(1)=1
  arr(2)=2
  arr(3)=3
EndProcedure
 
Dim arr(3)
 
arr_proc(arr())
 
For i=0 To 3
  Debug arr(i)
Next



m0t0d0r писал(а):
он у меня пихается, только по одному элементу

Число обозначает не количество элементов, а многомерность массива.


DLL
5. "Если вы хотите возвратить строку из DLL, строка перед использованием должна быть объявлена как Global."
Скажите, почему даже не обьявляя переменные как global - строку (указатель) процедура, спокойно возвращает?
У меня в библиотеке 9 процедур, половину из них возвращают указатель на строку. Но ничего не обьявлено как global. Пример:


Код:
1
2
3
4
5
6
7
ProcedureDLL.s sys_getUser() 
  Protected name.s=Space(500)
  Protected nameLen
  nameLen=Len(name)
  GetUserName_(@Name,@NameLen)
  ProcedureReturn name
EndProcedure



Цитата:
Потому что это не твоя функция, а системная API и как там что объявлено, ты не знаешь. Твоя функция возвращает не строку, а указатель (по сути число).

Цитата:
Если ты не в курсе, то код пурика транслируется в ассемблер а потом уже линкуется и компилится. Та строка которую ты НЕ объявляешь как глобальную, записывается в .data? секцию, которая просто резервирует память под данные, но не инициализирует их при старте. Чтобы вернуть из функции dll строку, нужно чтобы данные были инициализированны, собственно для этого и существует секция .data. Оператор Global это всего лишь макрос(псевдомакрос?) который помещает данные в .data, все что не global по дефолту помещается в .data?.


File
6. Есть файл такого содержания:
Цитата:
string ....
"string" ....

Как функцией FindString(String$, "string" ,1) найти не первый string а тот что в кавычках

Цитата:
Код:
1
FindString(String$, Chr(34)+"string"+Chr(34),1)




7. Какой командой удалить строку в файле?

Цитата:
1 Считать файл в память любым способом ( рекомендую для простоты считывать построчно. В этом случае п.2 не выполнять, если не считывать не нужную строку.)
2 Удалить не нужную строку из памяти.
3 Переписать файл с новым содержанием.

Способов кроме перезаписи не существует.


8. Можно ли читать побайтово открытый файл, не записывая его в буфер, но используя только Peek*? Постоянно менять позицию с fileseek не удобно, а записывать в буфер долго - файл большой

Цитата:
Так можно считать часть файла в буфер.
ReadData(#File,Buffer,Lenght)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 11:22 am 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Gadget
9. Подскажите, как сделать плоские кнопки с рамкой, на пример, как у PEID? #WS_EX_CLIENTEDGE почему-то не работает.

Цитата:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
If OpenWindow(0, 0, 0, 222, 80, "ButtonGadgets", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
   hFB1 = ButtonGadget(0, 10, 10, 200, 25, "FLAT Button 1")
   hFB2 = ButtonGadget(1, 10, 40, 200, 25, "FLAT Button 2")
   
   SetWindowLong_(hFB1, #GWL_EXSTYLE, GetWindowLong_(hFB1, #GWL_EXSTYLE) | #WS_EX_CLIENTEDGE)
   SetWindowPos_(hFB1, 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_NOZORDER | #SWP_FRAMECHANGED)
   
   SetWindowLong_(hFB2, #GWL_EXSTYLE, GetWindowLong_(hFB2, #GWL_EXSTYLE) | #WS_EX_CLIENTEDGE)
   SetWindowPos_(hFB2, 0, 0, 0, 0, 0, #SWP_NOMOVE | #SWP_NOSIZE | #SWP_NOZORDER | #SWP_FRAMECHANGED)
   ;**************************************
   SetWindowTheme_(GadgetID(0), @"", @"") ; отключаем тему у кнопки
   SetWindowTheme_(GadgetID(1), @"", @"") ; отключаем тему у кнопки
   ;**************************************
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
 EndIf



10. Как в редакторе включить показ слева номеров строк?
Цитата:
В EditorGadget? Там нет такой возможности. Юзай Scintill'у


11. Как трафик WebGadget() можно пустить через прокси?
Цитата:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Structure Internet_Proxy_Info
  dwAccessType.l
  *lpszProxy
  *lpszProxyBypass
EndStructure
 
#INTERNET_OPTION_PROXY=38
#INTERNET_OPEN_TYPE_PROXY = 3
#INTERNET_OPEN_TYPE_DIRECT = 1
 
Import "Urlmon.lib"
  UrlMkSetSessionOption(Option, *Buff, Size, Reserved)
EndImport
 
Procedure NewIE_Proxy(Proxy.s, Port, State.c)
ProxyServer.s=Proxy+":"+Str(Port)
 
If State=1
  Flags=#INTERNET_OPEN_TYPE_PROXY
Else
  Flags=#INTERNET_OPEN_TYPE_DIRECT
EndIf
 
PIInfo.Internet_Proxy_Info
PIInfo\dwAccessType    = Flags
PIInfo\lpszProxy        = @ProxyServer
PIInfo\lpszProxyBypass    = @""
If UrlMkSetSessionOption(#INTERNET_OPTION_PROXY, @PIInfo, SizeOf(Internet_Proxy_Info), 0)=#S_OK
  x=1
Else
  x=0
EndIf
ProcedureReturn x
EndProcedure
 
NewIE_Proxy("119.70.40.101", 8080, 1) ; Прокси рабочий, но очень медленый!
 
If OpenWindow(0, 0, 0, 800, 600, "WebGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
    WebGadget(0, 10, 10, 780, 580, "www.2ip.ru")
   
    Repeat
       Event=WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
EndIf
 
NewIE_Proxy("", 0, 0) ; Отключаем работу с прокси



12. Как сделать элемент TreeGadget жирным?
Цитата:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
#Window = 0 
#Tree = 0
OpenWindow(#Window,0,0,400,300,"")
TreeGadget(#Tree, 6, 3, 266, 295, #PB_Tree_CheckBoxes)
AddGadgetItem(#Tree,-1,"InternetExplorer",0,0)
tvi.TV_ITEM
tvi\hItem=GadgetItemID(#Tree, 0)
tvi\mask=#TVIF_STATE
tvi\state=#TVIS_BOLD
tvi\stateMask=#TVIS_BOLD
SendMessage_(GadgetID(#Tree),#TVM_SETITEM,0,@tvi)
Repeat:Until WaitWindowEvent() = #PB_Event_CloseWindow




Image
13.
Код:
1
2
3
4
5
6
7
DataSection 
  img:
    IncludeBinary "img\fon.png"
  end_img:
EndDataSection
#img = 5
If CatchImage(#img, ?img, ?end_img-?img): :Else:Debug "error":EndIf



Что это? В debug выходит error

Цитата:
DataSection
datas_img : IncludeBinary "img\fon.png"
EndDataSection

#img = 5

UsePNGImageDecoder()

Debug CatchImage(#img, ?datas_img)


Math
14.Как можно округлять дробное число, отбрасывая лишние числа после запятой?
Например, получается число 2,5428, а нужно преобразовать его в 2,54.


Цитата:
Debug StrF(2.5428,2)


Mouse & Keyboard
15. Как реагировать на оборот колесика мыши?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#WM_MOUSEWHEEL = $20A 
 
Procedure.w MouseWheelDelta()
  x.w = ((EventwParam()>>16)&$FFFF)
  ProcedureReturn -(x / 120)
EndProcedure
 
OpenWindow(0,0,0,400,400,"Mouse Wheel z00m",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  CreateGadgetList(WindowID(0))
  StringGadget(0,0,0,450,400,"20")
 
#zoomspeed = 4
Wheel = 20
SetGadgetFont(0,LoadFont(0,"Arial",Wheel))
 
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow: End
    Case #WM_MOUSEWHEEL
      Wheel + MouseWheelDelta() * #zoomspeed
      If Wheel < 8:Wheel = 8:EndIf
      SetGadgetFont(0,LoadFont(0,"Arial",Wheel))
      SetGadgetText(0,Str(Wheel))
  EndSelect
ForEver



16. Можно ли в окно, которое не в фокусе посылать информацию, буд-то в этом окне жмется определенная клавиша?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
hwin.l 
  hwin = FindWindow_("Notepad", NULL)
  If hwin <> 0
    SetWindowText_(hwin, "Хе-хе... ")
    hedit=FindWindowEx_(hwin,0,"Edit",0)
    PostMessage_(hedit,#WM_KEYDOWN, #VK_S,1)
    PostMessage_(hedit,#WM_KEYDOWN, #VK_E,1)
    PostMessage_(hedit,#WM_KEYDOWN, #VK_R,1)
    PostMessage_(hedit,#WM_KEYDOWN, #VK_E,1)
    PostMessage_(hedit,#WM_KEYDOWN, #VK_Z,1)
    PostMessage_(hedit,#WM_KEYDOWN, #VK_A,1)
  EndIf



Network
17. Подскажите, как в клиенте отловить закрытие подключения со стороны сервера?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Temp=0
DisableDebugger
SendNetworkData(Connect, @Temp, 0)
ErrCode = WSAGetLastError_()
EnableDebugger
If ErrCode
  *Mem = AllocateMemory(1024)
  If *Mem
    FillMemory(*Mem, 1024, 0)
    Len=FormatMessage_(#FORMAT_MESSAGE_FROM_SYSTEM, 0, ErrCode, 0, *Mem, 1024, 0)
    If Len>0
      Debug PeekS(*Mem, Len)
    EndIf
    FreeMemory(*Mem)
  EndIf
EndIf



Program
18. Доброго времени суток. Ребят, подскажите, пожалуйста, если средства в PB для работы со строкой запуска? Или отлько АПИ операционки использовать?
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
EnableExplicit 
 
#param_1 = "-hi"
#param_2 = "-hello"
#param_3 = "-test"
#param_4 = "pew-pew"
 
Define countpp.i = CountProgramParameters() - 1
If countpp >= 0
  Define countpp_counter.i
  For countpp_counter = 0 To countpp
    Define current_pp.s = ProgramParameter(countpp_counter)
    If current_pp = #param_1
      Debug "Обнаружен параметр #1 (" + #param_1 + ")"
    ElseIf current_pp = #param_2
      Debug "Обнаружен параметр #2 (" + #param_2 + ")"
    ElseIf current_pp = #param_3
      Debug "Обнаружен параметр #3 (" + #param_3 + ")"
    ElseIf current_pp = #param_4
      Debug "Обнаружен параметр #4 (" + #param_4 + ")"
    EndIf
  Next
EndIf



System
19. Как можно узнать высоту панели Пуск?
Код:
1
2
3
hWnd = FindWindow_("Shell_TrayWnd", 0)
GetWindowRect_(hWnd, @Size.RECT)
Debug Size\bottom - Size\top



20. Можно ли определить язык виндовса? Русская или английская, или английская, с натянутым русификатором.
Код:
1
Debug GetUserDefaultLCID_()



21. Как выкрутится с определением пути до эксплорера? в случае 64 битной системы путь C:\Program Files\Internet Explorer\IEXPLORE.EXE запустит 64 битный эксплорер. но мне нужен 32. значит путь будет несколько иной:
C:\Program Files (86)\Internet Explorer\IEXPLORE.EXE
существует ли универсальная ветка реестра где во всех виндах, для 6-7-8 эксплорера об этом написано?

Код:
1
Debug GetEnvironmentVariable("ProgramFiles") + "\Internet Explorer\IEXPLORE.EXE"



22. Как определить разрядность винды?

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Procedure.l IsWindows64bit() 
 
  Protected P_Back.l
  Protected *P_Adresse
  Protected P_LID.l = OpenLibrary( #PB_Any, "KERNEL32.DLL")
 
  If P_LID
    *P_Adresse = GetFunction( P_LID, "IsWow64Process")
    If *P_Adresse
      If CallFunctionFast( *P_Adresse, GetCurrentProcess_(), @P_Back ) = 0 : P_Back = #False : EndIf
    EndIf
    CloseLibrary( P_LID )
  EndIf
  ProcedureReturn P_Back
EndProcedure
; Проверка
If IsWindows64bit()
  Debug "64-Bit"
Else
  Debug "32-Bit"
EndIf



23. Как отключить монитор?
Код:
1
SendMessage_(#HWND_BROADCAST, #WM_SYSCOMMAND, #SC_MONITORPOWER, 2)



UserLib
24. Подскажите, можно ли как-нибудь перекомпилировать либу для версии 4.00 под 4.51?
Объясню в чем проблема: есть либа PureTTS в том формате который понимает пурик, с версией 4.51 она не работает по причине отсутствия какой-то либы string чего-то там.
Исходников самой либы нет, но думаю что можно ее хотя бы на старой версии перегнать в *.lib.

Цитата:
Нет исходников - нечего компилировать!
Да сделай DLL и не мучайся. Я себе делал для VB6, работает нормально.
Тем более, что DLL ку можно из памяти использовать, так что фактически нет разницы.


Varibles, Pointers & MemoryAdress
25. Есть DataSection, в ней порядка ста катинок(пока), как можно в цикле загрузить их с помощью CatchImage?
Цитата:
Я столкнувшись с такой же задачей, сделал немного по другому.
Упаковал все файлы с один, функцией PackMemory().
Этот файл уже поместил в DataSection.
При запуске программы, данные распаковываются функцией UnpackMemory() и разделяются на инфу отдельных файлов.


26. Сколько байт занимает константа по умолчанию, или по другому - какой тип у константы?
Цитата:
Я думаю сколько "весит", столько и занимает
Код:
1
2
3
4
5
6
i.b = #ABM_REMOVE ; = 1   помещается в байт 
Debug i
y.w = #ACM_OPEN ; = 1124  помещается в word
Debug y
x.l = #ACCESS_SYSTEM_SECURITY ; = 16777216  только dword
Debug x


Да, сейчас скомпилил и глянул под отладчиком
Код:
1
2
3
00401042 | C605 EA304000 01       | mov byte ptr ds:[4030EA],1 
00401049 | 66:C705 E8304000 6404  | mov word ptr ds:[4030E8],464
00401052 | C705 E4304000 00000001 | mov dword ptr ds:[4030E4],1000000



27. Имеем костанту два байта и переменная два байта. Нужно на стороне сервера склеить эти два значения, и передать их клиенту(за один "присест"), клиент должен принять и разделить на две переменные. Думаю надо как-то через | или & и сдвиг <<,>> - покажите как склеить и разделить?
Цитата:
Код:
1
2
3
4
5
6
7
8
9
10
11
#const=$1234 
Var.w=$4321
 
Long.l=(#const<<16)|Var
Debug Hex(Long, #PB_Long)
 
w.w=Long & $FFFF
Debug Hex(w, #PB_Word)
 
w=Long >> 16
Debug Hex(w, #PB_Word)


Хотя проще и понятнее через структуру.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#const=$1234 
Var.w=$4321
 
Structure Word_2
  w1.w
  w2.w
EndStructure
 
w.Word_2
w\w1 = #const
w\w2 = Var
 
Long.l = PeekL(@w)
Debug Hex(Long, #PB_Long)
 
*x.Word_2 = @w
 
Debug Hex(*x\w1, #PB_Word)
 
Debug Hex(*x\w2, #PB_Word)



28. Как получить флоат из набора байтов? типа 5729.9229 из 62 0F B3 45
Код:
1
2
float_var = $45B30F62 
Debug PeekF(@float_var)



29. Объясните, пожалуйста, как обрабатывать переданную КОМБИНАЦИЮ констант в процедуре? Например, в процедуру передали следующее:
Код:
1
2
3
4
5
6
#Const1 = 1 
#Const2 = 2
#Const3 = 3
Procedure Func(Flags)
EndProcedure
Func(#Const1|#Const2|#Const3)

Как в процедуре обработать эту комбинацию? Просто немогу понять оператор "ИЛИ"

Цитата:
В процедуре этой комбинации не будет. Компилятор сначала выполнит #Const1|#Const2|#Const3 и в exe' шнике в процедуру попадет одно число, в твоем случае 3
Это то же самое что
Код:
Func(1+2+3)
в процедуру попадет 6


Window
30. Такой вопрос - при использовании SetWindowCallback() в настройках компилятора нужно устанавливать опцию "безопасный поток"?
Цитата:
Нет, Callback функция выполняется в основном потоке. При ее создании дополнительных потоков не возникает


Графика
31. есть ли способ "притормозить" вывод на экран, если используется OpenGL? слегка непривычно, хотелось бы посмотреть, как движется..
Цитата:
SetFrameRate() попробуй. FPS лимит ставит.


32. Как в пурбейсике выводить анимированное изображение?
Пример: имеется картинка 100*150 из 20 фреймов - итого вся картинка 100*3000.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Structure SpriteCalculations 
XStart.l
YStart.l
XEnd.l
YEnd.l
Loop.l
NextFrame.l
EndStructure
 
Procedure AnimateSprite(Sprite, ClipWidth, ClipHeight, FramesPerRow, StartFrame, EndFrame, FpsDelay)
 
Static Dim Sprites.SpriteCalculations(99)
 
  Sprites(Sprite)\Loop + 1
 
If Sprites(Sprite)\Loop = 1
 
     Sprites(Sprite)\XStart = ((StartFrame % FramesPerRow) * ClipWidth) - ClipWidth
      If XStart = 0 - ClipWidth
          XStart = (ClipWidth * FramesPerRow) - ClipWidth
      EndIf
     Sprites(Sprite)\YStart = Round((StartFrame / FramesPerRow), #PB_Round_Down) * ClipHeight
 
     Sprites(Sprite)\XEnd = ((EndFrame % FramesPerRow) * ClipWidth)
      If XEnd = 0 - ClipWidth
          XEnd = (ClipWidth * FramesPerRow) - ClipWidth
      EndIf
     Sprites(Sprite)\YEnd = Round((EndFrame / FramesPerRow), #PB_Round_Down) * ClipHeight
     
EndIf
 
  ClipSprite(Sprite, Sprites(Sprite)\XStart, Sprites(Sprite)\YStart, ClipWidth, ClipHeight)
 
If Sprites(Sprite)\NextFrame = FpsDelay
 
  If EndFrame > StartFrame
     Sprites(Sprite)\XStart + ClipWidth
  EndIf
   
   If Sprites(Sprite)\XStart = ClipWidth * FramesPerRow
       Sprites(Sprite)\XStart = 0
       Sprites(Sprite)\YStart + ClipHeight
   EndIf
   
   If Sprites(Sprite)\XStart >= Sprites(Sprite)\XEnd And Sprites(Sprite)\YStart >= Sprites(Sprite)\YEnd
       Sprites(Sprite)\Loop = 0
   EndIf
 
     Sprites(Sprite)\NextFrame = 0
 
 Else
     
     Sprites(Sprite)\NextFrame + 1
 
EndIf
 
EndProcedure



33. Как из RGB получить 16-битный оттенок серого?
Код:
1
Debug ((red+green+blue)/3) << 8 


_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 4:50 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Вот, наконец-то какой-то чел, а именно Никита Однороб, начал разгребать Авгиевы конюшни (маленькие, мелкие, микро, нано вопросы)
Еще внимательно не смотрел, но эта, пять за инициативу. Никита продолжай. Тока оформить бы как-то по другому

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 4:59 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Спасибо :) . А вот на счёт оформления - да, как-то надо, но как :?: :?:

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт мар 22, 2013 5:19 pm 
Не в сети
профессор

Зарегистрирован: Ср янв 14, 2009 4:12 pm
Сообщений: 2002
Благодарил (а): 12 раз.
Поблагодарили: 101 раз.
Пункты репутации: 43
Никита Однороб писал(а):
как-то надо, но как

Все что ниже, мое имхо
Никита, парень ты молодой, не женатый, времени у тебя вагон и маленькая тележка. Это преамбула. Далее, все эти конюшни лучше бы оформить в CHM (справка) с разбиением по категориям и пр. Т.к. парень ты молодой (см. выше) неплохо бы рецензирование со стороны сообщества (опытной братвы). Для этого, оставить созданный раздел, в нем ты будешь добавлять решения из конюшен, братва, если че поправит и этот код попадает в CHM (справка)
PS Я еще раз скажу - "Мелкие вопросы" это кладезь, там стоко всего...
PPS Да, и еще скажу, если ты Никита доведешь этот проект до логического завершения, ну памятник не памятник, но бюст из гипса тебе точно отольют :D

_________________
Всё должно быть просто, настолько просто, насколько возможно, но не проще. (c) Альберт Эйнштейн
Изображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: Вт май 20, 2014 7:58 pm 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Сделал такой вариант, пробуйте.


Вложения:
question.zip [11.6 KiB]
Скачиваний: 154
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: Вт май 20, 2014 8:22 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
Респект :)

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: Вт май 20, 2014 9:07 pm 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Спасибо, Никита.
Будет что добавлять, добавлю.

Чтобы тему не запинали, её нужно закрепить.
А то ведь уползёт потихоньку, и мало кто найдёт.
Вещь полезная. ИМХО


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: Ср май 21, 2014 2:01 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Пт янв 27, 2012 7:12 pm
Сообщений: 880
Откуда: Кустанай
Благодарил (а): 27 раз.
Поблагодарили: 13 раз.
Пункты репутации: 7
newJS писал(а):
Чтобы тему не запинали, её нужно закрепить.
А то ведь уползёт потихоньку, и мало кто найдёт.
Вещь полезная. ИМХО

Это плохая идея, так уже делали, теперь Никита разбирает по полочкам. Лучше назначтье Никиту старшим, в этой теме и если хотите что то добавить в неё, то ему в ЛС, а он отредактирует, у него и права модера есть, а тему лучше закрыть. По сути дела и я тут уже флудю, а это лишнее и будет отвлекать

_________________
Детям нельзя в интернет. От детей интернет тупеет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: Ср май 21, 2014 2:22 pm 
Не в сети
PureBasic Coder
Аватар пользователя

Зарегистрирован: Чт ноя 10, 2011 10:50 am
Сообщений: 4049
Откуда: Ростов-на-Дону
Благодарил (а): 70 раз.
Поблагодарили: 80 раз.
Пункты репутации: 24
m0t0d0r, просто нужно это оформить по другому, по хорошему надо бы расфасовать по темам отдельные сообщения. Но пока времени нет, экзамены на носу. Потом займусь

_________________
Пурик - лучший язык программирования


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Мелкие вопросы
СообщениеДобавлено: Пн окт 26, 2015 6:42 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 540
Благодарил (а): 53 раз.
Поблагодарили: 15 раз.
Пункты репутации: 5
Цитата:
33. Как из RGB получить 16-битный оттенок серого?

Приведённый код возвращает некий цвет, но не оттенок серого.

Яндекс выдал единственный адрес с правильным ответом, да и то для делфи.
это на делфи, как есть
Код:
1
2
3
4
5
6
7
 function GetGreyScale(red, blue, green: TColor): TColor;
 var
    Color: Integer;
 begin
   Color := Round(red * 0.56 + green * 0.33 + blue * 0.11);
   Result := RGB(Color, Color, Color);
 end;




нас интересуют эти две строки, вот они возвращают действительно серый тон, я себе это в прогу встроил
Код:
1
2
   Color = Round(red * 0.56 + green * 0.33 + blue * 0.11);
   Result = RGB(Color, Color, Color);





P.S.
поиск по форуму отказался искать 16-битный, хорошо хоть честно сказал об этом
кто нить знает почему? где тут криминал
спрашиваю чтобы понимать как не надо искать


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB