PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)


Вопросы новичка (продолжение…)

Сообщений 751 страница 780 из 961

751

radan написал(а):

Это не помогло. Наверное вопрос из разряда невыполнимых хотелок...

На WinXP такой код нормально работает.

Код:
  If OpenWindow(0, 0, 0, 400, 100, "Timer Example", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    AddWindowTimer(0, 123, 250)
    
    CatchImage(0, ?ImageSaveFile, ?ImageSaveFileend-?ImageSaveFile)
    CatchImage(1, ?RecentString, ?End_RecentString-?RecentString)
    
    Value = 0
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #PB_Event_Timer And EventTimer() = 123
        Value + 1
        If Value & 1
          SendMessage_(WindowID(0), #WM_SETICON, #False, ImageID(1))
        Else
          SendMessage_(WindowID(0), #WM_SETICON, #False, ImageID(0))
        EndIf
      EndIf    
      
    Until Event = #PB_Event_CloseWindow
  EndIf

  DataSection
    ImageSaveFile:
    Data.b $00,$00,$01,$00,$01,$00,$10,$10,$00,$00,$01,$00,$04,$00,$28,$01,$00,$00,$16,$00
    Data.b $00,$00,$28,$00,$00,$00,$10,$00,$00,$00,$20,$00,$00,$00,$01,$00,$04,$00,$00,$00
    Data.b $00,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    Data.b $00,$00,$00,$00,$00,$00,$80,$00,$00,$00,$00,$80,$00,$00,$80,$80,$00,$00,$00,$00
    Data.b $80,$00,$80,$00,$80,$00,$00,$80,$80,$00,$C0,$C0,$C0,$00,$80,$80,$80,$00,$FF,$00
    Data.b $00,$00,$00,$FF,$00,$00,$FF,$FF,$00,$00,$00,$00,$FF,$00,$FF,$00,$FF,$00,$00,$FF
    Data.b $FF,$00,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$11,$18,$88,$88,$81
    Data.b $11,$00,$01,$99,$97,$11,$FF,$71,$19,$10,$01,$99,$9F,$11,$FF,$71,$19,$10,$01,$99
    Data.b $9F,$11,$FF,$71,$19,$10,$01,$99,$97,$F7,$7F,$71,$19,$10,$01,$99,$99,$99,$99,$99
    Data.b $99,$10,$01,$99,$99,$99,$99,$99,$99,$10,$01,$9F,$FF,$FF,$FF,$FF,$F9,$10,$01,$9F
    Data.b $FF,$FF,$FF,$FF,$F9,$10,$01,$9F,$F7,$77,$77,$7F,$F9,$10,$01,$9F,$FF,$FF,$FF,$FF
    Data.b $F9,$10,$01,$9F,$F7,$77,$77,$7F,$F9,$10,$01,$9F,$FF,$FF,$FF,$FF,$F9,$10,$00,$17
    Data.b $77,$77,$77,$77,$71,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$00,$00,$C0,$03
    Data.b $00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$80,$01
    Data.b $00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$80,$01
    Data.b $00,$00,$80,$01,$00,$00,$80,$01,$00,$00,$C0,$03,$00,$00,$FF,$FF,$00,$00
    ImageSaveFileend:
    
    RecentString: ; 318
    Data.b $00,$00,$01,$00,$01,$00,$10,$10,$00,$00,$01,$00,$04,$00,$28,$01,$00,$00,$16,$00
    Data.b $00,$00,$28,$00,$00,$00,$10,$00,$00,$00,$20,$00,$00,$00,$01,$00,$04,$00,$00,$00
    Data.b $00,$00,$80,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    Data.b $00,$00,$00,$00,$00,$00,$80,$00,$00,$00,$00,$80,$00,$00,$80,$80,$00,$00,$00,$00
    Data.b $80,$00,$80,$00,$80,$00,$00,$80,$80,$00,$C0,$C0,$C0,$00,$80,$80,$80,$00,$FF,$00
    Data.b $00,$00,$00,$FF,$00,$00,$FF,$FF,$00,$00,$00,$00,$FF,$00,$FF,$00,$FF,$00,$00,$FF
    Data.b $FF,$00,$FF,$FF,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    Data.b $99,$00,$00,$01,$90,$00,$00,$09,$90,$00,$00,$99,$00,$00,$00,$99,$00,$00,$09,$90
    Data.b $00,$00,$09,$90,$00,$00,$99,$00,$00,$00,$09,$90,$00,$00,$99,$00,$00,$00,$00,$99
    Data.b $00,$00,$09,$90,$00,$00,$00,$08,$90,$00,$00,$89,$00,$00,$00,$00,$79,$00,$00,$07
    Data.b $90,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
    Data.b $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$00,$00,$FF,$FF
    Data.b $00,$00,$FF,$FF,$00,$00,$F0,$E1,$00,$00,$E1,$C3,$00,$00,$C3,$87,$00,$00,$87,$0F
    Data.b $00,$00,$0E,$1F,$00,$00,$0E,$1F,$00,$00,$87,$0F,$00,$00,$C3,$87,$00,$00,$E1,$C3
    Data.b $00,$00,$F0,$E1,$00,$00,$FF,$FF,$00,$00,$FF,$FF,$00,$00,$FF,$FF,$00,$00
    End_RecentString:
    
  EndDataSection

0

752

Пётр написал(а):

Для добавления строки используется команда #LVM_INSERTITEM http://msdn.microsoft.com/en-us/library … p/bb761107(v=vs.85).aspx

Спасибо за подсказку, а то я setitem увидел, а insertitem нет.

Пётр написал(а):

Для достижения того же результата, можно временно отключив прорисовку гаджета.

Задействовал данный вариант, спасибо. Смысл всех этих вопросов в том, что я загружаю в listicon значение из mdb файла и при больших количествах данных время загрузки очень велико. По-этому я рассматривал вариант временной таблицы для хранения данных и их копирования в целях увеличения скорости вывода. А с виртуальной таблицей я решил пока не заморачиваться, потому как вряд ли у меня будет большой объем данных загружаться. Думаю больше максимум до 5 тысяч.

Отредактировано ldir (23.08.2012 16:30:58)

0

753

В PB OpenWindow() создает окно с классом "WindowClass_0". Как можно изменить этот класс (задать собственное имя)?

0

754

Нужно написать аналог функции OpenWindow().

Код:
Import "window.lib" 
  CompilerIf #PB_Compiler_Unicode 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent_UNICODE@16" 
  CompilerElse 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent@16" 
  CompilerEndIf 
  
  PB_Window_Icon
  PB_Window_Cursor
  PB_Window_Objects
EndImport

Procedure NewOpenWindow(id,x,y,cx,cy,title.s,flags,parent=0) 
  Protected wnd.wndclass 
  Protected classname.s = "MyClass" 
  Protected *WinObj.integer 
  Protected hWnd.i, hinst
  Protected rc.rect 
  
   hinst = GetModuleHandle_(0) 
  With wnd 
    \style          = #CS_HREDRAW|#CS_VREDRAW 
    \lpfnWndProc    = @_PB_Window_ProcessEvent() 
    \hInstance      = hinst
    \hIcon          = PB_Window_Icon 
    \hCursor        = PB_Window_Cursor 
    \lpszClassName  = @classname 
    \hbrBackground  = #COLOR_WINDOW 
    \cbWndExtra     = 0 
    \cbClsExtra     = 0 
  EndWith 
  
  If RegisterClass_(wnd) 
    
    SetRect_(rc,0,0,cx,cy) 
    
    If x = #PB_Ignore Or y = #PB_Ignore 
      x = #CW_USEDEFAULT 
      y = #CW_USEDEFAULT 
    EndIf 
    
    hWnd = CreateWindowEx_(#WS_EX_WINDOWEDGE|#WS_EX_CONTROLPARENT,classname,title,flags,x,y,rc\right-rc\left,rc\bottom-rc\top,parent,0,hinst,0) 
    If hWnd 
      *WinObj   = PB_Object_GetOrAllocateID(PB_Window_Objects,id) 
      *WinObj\i = hWnd 
      
      If id = #PB_Any 
        SetProp_(hWnd,"Pb_WindowID",*WinObj+1) 
      Else 
        SetProp_(hWnd,"Pb_WindowID",id+1) 
      EndIf 
      
    Else 
      UnregisterClass_(hinst,classname) 
    EndIf 
    
  EndIf 
  
  If id = #PB_Any 
    id = *WinObj 
  Else 
    id = hWnd 
  EndIf 
  
  ProcedureReturn id 
EndProcedure

0

755

Пётр написал(а):

Нужно написать аналог функции OpenWindow().

Компилятор жалуется на 44 строку, мол PB_Object_GetOrAllocateID() не функция и все остальное (PB 4.61), как исправить?

0

756

Код:
Import "window.lib" 
  CompilerIf #PB_Compiler_Unicode 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent_UNICODE@16" 
  CompilerElse 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent@16" 
  CompilerEndIf 
  

  PB_Window_Icon
  PB_Window_Cursor
  PB_Window_Objects
EndImport

Import ""
  PB_Gadget_Objects
  PB_Gadget_Globals
  PB_Object_GetThreadMemory(*PB_Object)
  PB_Object_GetOrAllocateID(*PB_Object, ID)
  PB_Gadget_SendGadgetCommand(hwnd, EventType)
EndImport

Procedure NewOpenWindow(id,x,y,cx,cy,title.s,flags,parent=0) 
  Protected wnd.wndclass 
  Protected classname.s = "MyClass" 
  Protected *WinObj.integer 
  Protected hWnd.i, hinst
  Protected rc.rect 
  
   hinst = GetModuleHandle_(0) 
  With wnd 
    \style          = #CS_HREDRAW|#CS_VREDRAW 
    \lpfnWndProc    = @_PB_Window_ProcessEvent() 
    \hInstance      = hinst
    \hIcon          = PB_Window_Icon 
    \hCursor        = PB_Window_Cursor 
    \lpszClassName  = @classname 
    \hbrBackground  = #COLOR_WINDOW 
    \cbWndExtra     = 0 
    \cbClsExtra     = 0 
  EndWith 
  
  If RegisterClass_(wnd) 
    
    SetRect_(rc,0,0,cx,cy) 
    
    If x = #PB_Ignore Or y = #PB_Ignore 
      x = #CW_USEDEFAULT 
      y = #CW_USEDEFAULT 
    EndIf 
    
    hWnd = CreateWindowEx_(#WS_EX_WINDOWEDGE|#WS_EX_CONTROLPARENT,classname,title,flags,x,y,rc\right-rc\left,rc\bottom-rc\top,parent,0,hinst,0) 
    If hWnd 
      *WinObj   = PB_Object_GetOrAllocateID(PB_Window_Objects,id) 
      *WinObj\i = hWnd 
      
      If id = #PB_Any 
        SetProp_(hWnd,"Pb_WindowID",*WinObj+1) 
      Else 
        SetProp_(hWnd,"Pb_WindowID",id+1) 
      EndIf 
      
    Else 
      UnregisterClass_(hinst,classname) 
    EndIf 
    
  EndIf 
  
  If id = #PB_Any 
    id = *WinObj 
  Else 
    id = hWnd 
  EndIf 
  
  ProcedureReturn id 
EndProcedure

OpenWindow(0,0,0,0,0,"")

0

757

NewOpenWindow() вызывает ошибку:

POLINK: fatal error: File not found: 'window.lib'.

Код:
Import "window.lib" 
  CompilerIf #PB_Compiler_Unicode 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent_UNICODE@16" 
  CompilerElse 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent@16" 
  CompilerEndIf 
  

  PB_Window_Icon
  PB_Window_Cursor
  PB_Window_Objects
EndImport

Import ""
  PB_Gadget_Objects
  PB_Gadget_Globals
  PB_Object_GetThreadMemory(*PB_Object)
  PB_Object_GetOrAllocateID(*PB_Object, ID)
  PB_Gadget_SendGadgetCommand(hwnd, EventType)
EndImport

Procedure NewOpenWindow(id,x,y,cx,cy,title.s,flags,parent=0) 
  Protected wnd.wndclass 
  Protected classname.s = "MyClass" 
  Protected *WinObj.integer 
  Protected hWnd.i, hinst
  Protected rc.rect 
  
   hinst = GetModuleHandle_(0) 
  With wnd 
    \style          = #CS_HREDRAW|#CS_VREDRAW 
    \lpfnWndProc    = @_PB_Window_ProcessEvent() 
    \hInstance      = hinst
    \hIcon          = PB_Window_Icon 
    \hCursor        = PB_Window_Cursor 
    \lpszClassName  = @classname 
    \hbrBackground  = #COLOR_WINDOW 
    \cbWndExtra     = 0 
    \cbClsExtra     = 0 
  EndWith 
  
  If RegisterClass_(wnd) 
    
    SetRect_(rc,0,0,cx,cy) 
    
    If x = #PB_Ignore Or y = #PB_Ignore 
      x = #CW_USEDEFAULT 
      y = #CW_USEDEFAULT 
    EndIf 
    
    hWnd = CreateWindowEx_(#WS_EX_WINDOWEDGE|#WS_EX_CONTROLPARENT,classname,title,flags,x,y,rc\right-rc\left,rc\bottom-rc\top,parent,0,hinst,0) 
    If hWnd 
      *WinObj   = PB_Object_GetOrAllocateID(PB_Window_Objects,id) 
      *WinObj\i = hWnd 
      
      If id = #PB_Any 
        SetProp_(hWnd,"Pb_WindowID",*WinObj+1) 
      Else 
        SetProp_(hWnd,"Pb_WindowID",id+1) 
      EndIf 
      
    Else 
      UnregisterClass_(hinst,classname) 
    EndIf 
    
  EndIf 
  
  If id = #PB_Any 
    id = *WinObj 
  Else 
    id = hWnd 
  EndIf 
  
  ProcedureReturn id 
EndProcedure

;OpenWindow(0,0,0,0,0,"")
NewOpenWindow(0, 0, 0, 0, 0, "", 0, 0)

0

758

Надо вызвать хоть одну функцию из window.lib.

Код:
Import "window.lib" 
  CompilerIf #PB_Compiler_Unicode 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent_UNICODE@16" 
  CompilerElse 
    _PB_Window_ProcessEvent(a,b,c,d) As "_PB_Window_ProcessEvent@16" 
  CompilerEndIf 
  

  PB_Window_Icon
  PB_Window_Cursor
  PB_Window_Objects
EndImport

Import ""
  PB_Gadget_Objects
  PB_Gadget_Globals
  PB_Object_GetThreadMemory(*PB_Object)
  PB_Object_GetOrAllocateID(*PB_Object, ID)
  PB_Gadget_SendGadgetCommand(hwnd, EventType)
EndImport

Procedure NewOpenWindow(id,x,y,cx,cy,title.s,flags,parent=0) 
  Protected wnd.wndclass 
  Protected classname.s = "MyClass" 
  Protected *WinObj.integer 
  Protected hWnd.i, hinst
  Protected rc.rect 
  
   hinst = GetModuleHandle_(0) 
  With wnd 
    \style          = #CS_HREDRAW|#CS_VREDRAW 
    \lpfnWndProc    = @_PB_Window_ProcessEvent() 
    \hInstance      = hinst
    \hIcon          = PB_Window_Icon 
    \hCursor        = PB_Window_Cursor 
    \lpszClassName  = @classname 
    \hbrBackground  = #COLOR_WINDOW 
    \cbWndExtra     = 0 
    \cbClsExtra     = 0 
  EndWith 
  
  If RegisterClass_(wnd) 
    
    SetRect_(rc,0,0,cx,cy) 
    
    If x = #PB_Ignore Or y = #PB_Ignore 
      x = #CW_USEDEFAULT 
      y = #CW_USEDEFAULT 
    EndIf 
    
    hWnd = CreateWindowEx_(#WS_EX_WINDOWEDGE|#WS_EX_CONTROLPARENT,classname,title,flags,x,y,rc\right-rc\left,rc\bottom-rc\top,parent,0,hinst,0) 
    If hWnd 
      *WinObj   = PB_Object_GetOrAllocateID(PB_Window_Objects,id) 
      *WinObj\i = hWnd 
      
      If id = #PB_Any 
        SetProp_(hWnd,"Pb_WindowID",*WinObj+1) 
      Else 
        SetProp_(hWnd,"Pb_WindowID",id+1) 
      EndIf 
      
    Else 
      UnregisterClass_(hinst,classname) 
    EndIf 
    
  EndIf 
  
  If id = #PB_Any 
    id = *WinObj 
  Else 
    id = hWnd 
  EndIf 
  
  ProcedureReturn id 
EndProcedure

NewOpenWindow(0, 100, 100, 100, 100, "1234", #WS_VISIBLE)

Repeat
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

0

759

Известно, что, открывая какой-либо файл, мы инициализируем программу работающую с ним. То есть сразу при запуске в программку передаётся путь к файлу, и она может его (файл) обработать.
Как можно собрать такую программку?

0

760

Тигрёнок написал(а):

Как можно собрать такую программку?

Это называется ассоциация файла. Делается путем записи соответствующих данных в реестр. Возможно понадобятся права администратора.

Тут написано как это сделать просто - при помощи библиотеки Droopy

А это полный пример:

Код:
Procedure SetKey(fold,Key$,Subkey$,Type,Adr,len)
  If RegCreateKeyEx_(fold, Key$, 0, 0, #REG_OPTION_NON_VOLATILE, #KEY_ALL_ACCESS, 0, @NewKey, @KeyInfo) = #ERROR_SUCCESS
    RegSetValueEx_(NewKey, Subkey$, 0, Type,  Adr, len)
    RegCloseKey_(NewKey)
  EndIf
EndProcedure
Procedure AssociateFileEx(ext$,ext_description$,programm$,Icon$,prgkey$,cmd_description$,cmd_key$)
  cmd$=Chr$(34)+programm$+Chr$(34)+" "+Chr$(34)+"%1"+Chr$(34)
  If GetVersion_() & $ff0000  ; Windows NT/XP
    SetKey(#HKEY_CLASSES_ROOT, "Applications\"+prgkey$+"\shell\"+cmd_description$+"\command","",#REG_SZ    ,@cmd$,Len(cmd$)+1)
    If ext_description$
      Key$=ext$+"_auto_file"
      SetKey(#HKEY_CLASSES_ROOT  ,"."+ext$           ,"",#REG_SZ,@Key$,Len(Key$)+1)
      SetKey(#HKEY_CLASSES_ROOT  ,Key$               ,"",#REG_SZ,@ext_description$,Len(ext_description$)+1)
      If Icon$
        SetKey(#HKEY_CLASSES_ROOT,Key$+"\DefaultIcon","",#REG_SZ,@Icon$,Len(Icon$)+1)
      EndIf
    EndIf
    SetKey(#HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\."+ext$,"Application",#REG_SZ,@prgkey$         ,Len(prgkey$)+1)
  Else ;Windows 9x
    SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\."+ext$                        ,"",#REG_SZ,@prgkey$         ,Len(prgkey$)+1)
    If ext_description$
      SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$                   ,"",#REG_SZ,@ext_description$,Len(ext_description$)+1)
    EndIf
    If Icon$
      SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\DefaultIcon"    ,"",#REG_SZ,@Icon$           ,Len(Icon$)+1)
    EndIf
    If cmd_description$<>cmd_key$
      SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\shell\"+cmd_key$,"",#REG_SZ,@cmd_description$,Len(cmd_description$)+1)
    EndIf
    SetKey(#HKEY_LOCAL_MACHINE,"Software\Classes\"+prgkey$+"\shell\"+cmd_key$+"\command","",#REG_SZ,@cmd$   ,Len(cmd$)+1)
  EndIf
EndProcedure
Procedure AssociateFile(ext$,ext_description$,programm$,Icon$)
  AssociateFileEx(ext$,ext_description$,programm$,Icon$,GetFilePart(programm$),"open","open") 
EndProcedure

;Пррмер использования
AssociateFile("pb","Pure Basic Source","C:\Programme\PureBasic\PureBasic.exe","F:\icon.bmp,0")
;and now an addition context-item
AssociateFileEx("pb","","F:\alternate rich\jaPBe.exe","","PureBasic.exe","Open with jaPBe","open_with_japbe")

Отредактировано ВиниПур (11.09.2012 06:49:08)

0

761

Я имел ввиду следующее:
Взять, к примеру, какую-нибудь консольную программку, например, компилятор PureBasic.exe, и запустить её через командную строку так:

Код:
PureBasic.exe Example.pb /PORTABLE

Компилятору передаётся путь к файлу "Example.pb" и ключ "/PORTABLE". Так вот, как сделать так, чтобы моя программка тоже могла принимать и обрабатывать такие параметры?

П. С. Пример с ассоциацией тоже будет полезен)

0

762

Тигрёнок написал(а):

Я имел ввиду следующее:

Я уж и правда думал вопрос :D
Смотри в справке  Result$ = ProgramParameter([Index]) и Result = CountProgramParameters()
или тут

Отредактировано ВиниПур (11.09.2012 19:22:53)

+1

763

имеется например вот такой код

Код:
OpenWindow(0, 450, 200, 410, 410, "Window",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

Global tt = 0

Procedure LocalTT()
    
    ttt + 1
    ProcedureReturn ttt
EndProcedure

While Not WindowEvent() = #PB_Event_CloseWindow
    tt+1
    SetWindowTitle(0,"TT = "+Str(tt)+" "+"TTT = "+Str(LocalTT()))
Wend

а вопрос звучит так 8-)  можно ли как-то заставить процедуру работать как переменная tt, без использования глобальной переменной? то есть, при вызове её в основном цикле программы  локальная переменная ttt наращивалась. Я подозреваю что без глобальной ни как, так как постоянно создается новая переменная. Может есть выход?

Отредактировано владимир123 (17.09.2012 09:40:38)

0

764

владимир123 написал(а):

Может есть выход?

Код:
OpenWindow(0, 450, 200, 410, 410, "Window",#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

tt = 0

Procedure LocalTT()
  Static ttt
  ttt + 1
  ProcedureReturn ttt
EndProcedure

While Not WindowEvent() = #PB_Event_CloseWindow
  tt+1
  
  SetWindowTitle(0,"TT = "+Str(tt)+" "+"TTT = "+Str(LocalTT()))
Wend

Не помешает прочитать этот материал. http://pure-basic.narod.ru/docs/books/6.htm

0

765

Хм.. А можно ли заставить процедуру работать как целый массив? Понятно, что PureBasic предоставляет много возможностей структурировать данные. А если нужен массив с новой системой системой индексирования? В какую сторону копать? (Это я так.. философствую  :rolleyes: )

0

766

Тигрёнок написал(а):

А можно ли заставить процедуру работать как целый массив?

Не понял вопроса?
Массив это одно, а процедура другое.

0

767

Процедуру как массив (в грубой форме) можно описать так:

Код:
Procedure ProcArray(N)
  Select N
    Case 3
      Result=10
    Case 52
      Result=195
    Case 17
      Result=2
      
      ...
    Default
      Result=0
  EndSelect
  ProcedureReturn Result
EndProcedure

То есть, передавая в такую процедуру индекс, на выходе получим значение соответствующее этому индексу. Внешне, вызов "настоящего" массива выглядит также. Но хочется отполировать новую схему, чтобы блестела:) , чтобы можно было свободнее менять содержимое и т.д.

Отредактировано Тигрёнок (18.09.2012 18:32:28)

0

768

Всем привет.
Возможно ли програмно узнать уровень заряда АКБ нет/ноутбука?

0

769

max написал(а):

Всем привет.
Возможно ли програмно узнать уровень заряда АКБ нет/ноутбука?

Через WinAPI — да.

Вот тут почитайте:
http://www.zahodi-ka.ru/stat/program/za … arei.shtml

0

770

А есть что-нибудь на Пурике?

0

771

max написал(а):

А есть что-нибудь на Пурике?

Подключаем библиотеку Droopy и наслаждаемся

Код:
If GetPowerStatus()
  MessageRequester("Status","Online")
Else
  MessageRequester("Status","Offline")
  MessageRequester("Percent",Str(GetBatteryLifePercent()))
  If GetBatteryLifeTime()<>-1 
    MessageRequester("Battery Life Time",FormatDate("%hh:%ii:%ss", GetBatteryLifeTime()))
  EndIf
  
  If GetBatteryFullLifeTime()<>-1
    MessageRequester("Battery Full Life Time",FormatDate("%hh:%ii:%ss", GetBatteryFullLifeTime()))
  EndIf
EndIf
  
If GetBatteryChargeStatus() & 1
  MessageRequester("Charge Status","High")
EndIf
  
If GetBatteryChargeStatus() & 2
  MessageRequester("Charge Status","Low")
EndIf
  
If GetBatteryChargeStatus() & 4
  MessageRequester("Charge Status","Critical")
EndIf
  
If GetBatteryChargeStatus() & 128
  MessageRequester("Charge Status","No System Battery")
EndIf

Или из исходников этой библиотеки выпиливаем код, который нужен.

+1

772

Спасибо.

0

773

Доброго времени!!!Подскажите....кто нибудь  пробовал писать программу Лога для радиолюбителей?

0

774

Nik написал(а):

программу Лога для радиолюбителей

А по подробней можно?

0

775

Точнее для радио наблюдателей....В сети нормальных заточенных для наблюдений не нашел.
Это "база данных " примерно такая как...вот сдесь....v 1.1
http://www.r9j.ru/soft/swl-contest-logger/
только некоторые функции и поля нужно добавить.....
Сам не программист...но наверно придется осваивать на старости лет...
Язык вроде можно попытаться освоить....да и может кто делал какие наработки.....вот и обратился сюда

0

776

Nik написал(а):

только некоторые функции и поля нужно добавить.....

Я не против программирования в целом, но в данном случае там написано:

Буду признателен если вы напишите отзыв и пожелания по совершенствованию программы, а также о замеченных ошибках на мой адрес:

Так что было бы логичнее связаться с автором и утрясти все вопросы. Тем более, что программы свежие и наверняка ещё поддерживаются.
Просто начинать всё с нуля это не быстрая затея. Тем более, что нужен не просто программист, а именно радиолюбитель, знающий все тонкости соревнования.
Но если есть желание и время терпит, то почему бы и нет?
P.S.
Кстати, есть на дружественном форуме заядлый радист и по совместительству Пурик знает, может свяжетесь: http://pbasic.spb.ru/phpBB2/profile.php … amp;u=4648

0

777

С автором  данной программы велась переписка....но судя по ответам...делать Лог для наблюдателей у него нет желания...Да и программа написана на "ДЕЛЬФЯХ".....а это как китайская грамота....
А то что это не быстрая затея...это понятно. Да и программа нужна не для соревнований ,а для ведения повседневной базы наблюдения...
Ладно небольшой вопрос..При создании "лица " программы в Pure FORM  данные копируем в Редактор и при компиляции строки отвечающие за цветовую окраску кнопок не компилируются и Редактор указывает на ошибки.....Что может быть причиной....или может какие нибудь библиотеки не установлены?

0

778

Nik написал(а):

троки отвечающие за цветовую окраску кнопок

На сколько помню в PureForm для этого используется авторская либа PureCOLOR, можно найти на том же сайте, что и сам PureForm - http://gnozal.ucoz.com/

0

779

ВиниПур     Спасибо за подсказку....скачал установил...все ОК.   Еще маленький вопрос..Гаджет DATE есть в Pure FORM...а как вывести текущее время в определенное место "лица" программы.......?Код архив смотрел...мозгулятор не соображает как вставить в программу...

0

780

Nik написал(а):

.а как вывести текущее время в определенное место "лица" программы

Второй и третий аргументы функции DateGadget() отвечают за позицию в окне.

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Вопросы новичка (продолжение…)