<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<atom:link href="https://purebasic.mybb.ru/export.php?type=rss" rel="self" type="application/rss+xml" />
		<title>PureBasic - форум</title>
		<link>https://purebasic.mybb.ru/</link>
		<description>PureBasic - форум</description>
		<language>ru-ru</language>
		<lastBuildDate>Thu, 29 Oct 2026 01:35:13 +0300</lastBuildDate>
		<generator>MyBB/mybb.ru</generator>
		<item>
			<title>Собственное шифрование</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13254#p13254</link>
			<description>&lt;p&gt;У меня была похожая проблема при шифровании текстов - размер файла рос из-за кодировки. В итоге перешел на работу с байтами напрямую, как в Aes. Хотя если чисто текст шифруешь и работает - переделывать не стоит, пока не появится реальная необходимость.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (romanyan78)</author>
			<pubDate>Thu, 29 Oct 2026 01:35:13 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13254#p13254</guid>
		</item>
		<item>
			<title>Расширенный буфер обмена</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13253#p13253</link>
			<description>&lt;p&gt;Официальный форум что-то тупит, поэтому здесь выложу.&lt;br /&gt;Поигрался я со своим старым исходником, а причина того, что есть подозрение что автор CLCL недолюбливает русских. Поэтому я решил продолжить делать свой вариант.&lt;br /&gt;1. Я нагуглил как отслеживать изменение буфера обмена с помощью WM_CLIPBOARDUPDATE, т.е. мне не нужно делать проверку по таймеру.&lt;br /&gt;2. Спросил у гугла как сделать глобальный хоткей, он мне выдал пример с WM_HOTKEY и я просто вспомнил, что у меня есть уже пример и проги, поэтому я встроил и это.&lt;br /&gt;3. В общем то основные проблемы побеждены. Хотел ещё Dark-стиль но нагугленные 2 варианта один не сработал, второй делает меню чёрным и почему-то в чёрном режиме не отображает выделенный пункт, тупо всё меню чёрное, без возможности сделать не совсем чёрный, тупо полная чернота - 0 и всё (текст белый, норм).&lt;br /&gt;4. Хотел встроить подсказку WM_MENUSELECT позволяет реагировать на изменение выбора пункта и в списке первая строка, а всплывающая подсказка для не полных строк могла бы показать что будет вставлено. Но не смог добиться позиционировать справа от меню, то есть я получаю координаты прямоугольника (GetMenuItemRect) и всё время получаю какие то проблемы с позиционированием. И самое интересное заметил, что если текст начинается с пробелов и переносов, то он просто не отображается или отображается какая то точка, как будто он отсекает все что после переносов и пробелы считает пустышками и делает квадратик из 3x3 пиксела, еле заметил, учитывая ещё его хаотичное расположение. Пробовал координаты от GetCursorPos но они перекрывают часть меню, добавил к &amp;quot;x + 200&amp;quot;, но кроме корявого отображения были косяки, когда меню загружается из файла, то нормально, добавишь пару клипов и всё съехало на 1, подкорректируешь &amp;quot;-1&amp;quot;, тогда при старте сдвиг. Привязки через связанный параметр Data нет, значит придётся искать проблему, хотя частично она понятна при запуске проги если буфер обмена совпадает с тем же что был первым в списке, то удаляю первый элемент, потому что при тесте буфер тот же и при запуске он же из истории и он же из текущего буфера и всегда дублировался при тесте на перезапуске, решил исправить и наверно надо исправлять проблему индексов на границе. Вставляется пока нормально. Косяк был с MoveElement(), если перемещать последний на позицию последнего, то MoveElement() вызывает сбой, то есть надо ещё проверять что переносимый не последний.&lt;br /&gt;5. Ну ещё сохранение истории сделал, примитивно, не стал базу данных подключать, просто сделал разделитель Chr(1), он и не текст и не 0, не пришлось с бинаром возится, обычный сплит сделал.&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;;- TOP
; AZJIO 

EnableExplicit


;- # Constants
#HK_ID = 1001
#Win_Main  = 0
#Menu  = 0
#SysTrayIcon = 0
#WM_CLIPBOARDUPDATE = $031D

Macro MakeLong(loWord, hiWord)
  ( hiWord &amp;lt;&amp;lt; 16 | loWord )
EndMacro

Structure m1m2
	m1.s ; отображается в меню
	m2.s ; если многострочный текст, то сюда, так как пункт меню не может помещать многострочный текст
EndStructure


; XIncludeFile &amp;quot;func.pbi&amp;quot;
UseGIFImageDecoder() ; модуль GIF на150кб легче чем модуль PNG


;- &amp;#9679; Declare
Declare ShowMenu()
Declare SaveList()
Declare ReadHistoryToList()
Declare AddedItem()
Declare ReadHistoryToList()
Declare GetModKey(MOD)
Declare MainWindowCallback(hWnd, uMsg, wParam, lParam)
Declare.s LTrimChar(String$, TrimChar$ = #CRLF$ + #TAB$ + #FF$ + #VT$ + &amp;quot; &amp;quot;)


;- &amp;#9679; Global
Global HotkeyCode, VirtKey, ModKey
Global hwnd, tmp
Global NumClipboard = 0

Global NewList HistoryClipboard.m1m2()
Global Last, ignore_flag


Define tmp$, EM

XIncludeFile &amp;quot;SendKey.pbi&amp;quot;


DataSection
	ItemTray_png:
	IncludeBinary &amp;quot;images/ItemTray.gif&amp;quot;
	ItemTray_pngend:
	Tray24_png:
	IncludeBinary &amp;quot;images/Tray.gif&amp;quot;
	Tray24_pngend:
	exit_png:
	IncludeBinary &amp;quot;images/exit.gif&amp;quot;
	exit_pngend:
EndDataSection

; https://www.purebasic.fr/english/viewtopic.php?p=647787#p647787
CompilerIf #PB_Compiler_Processor = #PB_Processor_x64
  ; x64: отсутствие stdcall
  Import &amp;quot;user32.lib&amp;quot;
    AddClipboardFormatListener(hWnd.i)
    RemoveClipboardFormatListener(hWnd.i)
  EndImport
CompilerElse
  ; x86: stdcall
  Import &amp;quot;user32.lib&amp;quot;
    AddClipboardFormatListener(hWnd.i)    As &amp;quot;_AddClipboardFormatListener@4&amp;quot;
    RemoveClipboardFormatListener(hWnd.i) As &amp;quot;_RemoveClipboardFormatListener@4&amp;quot;
  EndImport
CompilerEndIf



ReadHistoryToList()

;-&amp;#9484;&amp;#9472;&amp;#9472;&amp;#9472;GUI&amp;#9472;&amp;#9472;&amp;#9472;&amp;#9488;
If OpenWindow(#Win_Main, 0, 0, 99, 99, &amp;quot;-CB-&amp;quot;, #PB_Window_SystemMenu | #PB_Window_Invisible)
	; 	Создаём картинки для трея и пунктов меню
	CatchImage(0, ?Tray24_png)
	CatchImage(1, ?ItemTray_png)
	CatchImage(2, ?exit_png)
	AddSysTrayIcon(#SysTrayIcon, WindowID(#Win_Main), ImageID(0)) ; иконка в трее
	SysTrayIconToolTip(#SysTrayIcon, &amp;quot;Clipboard-AZJIO&amp;quot;) ; Название проги в подсказке
	HotkeyCode = MakeLong(#PB_Shortcut_B, #HOTKEYF_ALT)

    VirtKey = HotkeyCode &amp;amp; $FFFF ; LoWord
    ModKey = GetModKey(HotkeyCode &amp;gt;&amp;gt; 16)
    If Not RegisterHotKey_(WindowID(#Win_Main), #HK_ID, ModKey, VirtKey)
        Debug &amp;quot;Не удалось зарегистрировать горячую клавишу&amp;quot;
    EndIf
    
    SetWindowCallback(@MainWindowCallback())
  ; Регистрируем окно программы для реакции на изменение буфера обмена
    AddClipboardFormatListener(WindowID(#Win_Main))
  
    
    
;-&amp;#9484;&amp;#9472;&amp;#9472;&amp;#9472;Loop&amp;#9472;&amp;#9472;&amp;#9472;&amp;#9488;
	Repeat
    Select WaitWindowEvent()
;- &amp;#9500; SysTray Events
    	Case #PB_Event_SysTray
        Select EventType()
        	Case #PB_EventType_LeftClick, #PB_EventType_RightClick
            ShowMenu()        ; показ вспывающего меню при левом/правом клике в трее
        EndSelect
        
;- &amp;#9500; Menu events
    	Case #PB_Event_Menu        ; кликнут элемент всплывающего Меню
        
        EM = EventMenu()
        Select EM
        	Case 0
            SaveList()
            RemoveClipboardFormatListener(WindowID(#Win_Main))
            End
        	Case 1
            ShowMenu()
        	Case 2 To Last
            tmp = Last - EM
            SelectElement(HistoryClipboard(), tmp)
            If tmp &amp;lt; Last ; если переносить последний элемент, то MoveElement() выдаёт ошибку.
            	MoveElement(HistoryClipboard(), #PB_List_Last)
            EndIf
            ignore_flag = 1
            If Asc(HistoryClipboard()\m2)
            	SetClipboardText(HistoryClipboard()\m2)
            Else
            	SetClipboardText(HistoryClipboard()\m1)
            EndIf
            SetForegroundWindow_(hwnd) ; возвращаем фокус на предыдущее окно
            Delay(200)
            SendKey(#VK_INSERT, #MOD_LSHIFT, 0)

        EndSelect

;- &amp;#9500; WM_HOTKEY Events
            Case #WM_HOTKEY
                Select EventwParam()
                	Case #HK_ID
                    hwnd = GetForegroundWindow_()
                    ShowMenu()
                EndSelect
            Case #PB_Event_CloseWindow
            	SaveList()
        End
        
    EndSelect
	ForEver
EndIf


Procedure MainWindowCallback(hWnd, uMsg, wParam, lParam)
	Protected ID
	; Flags = wParam &amp;gt;&amp;gt; 16 ; HiWord
	Select uMsg
;     Case #WM_EXITMENULOOP
;     	SendMessage_(TTip, #TTM_TRACKACTIVATE, #False, @ti) ; закрываем  подсказку если закрывается меню
;     Case #WM_MENUSELECT
;     	ID = wParam &amp;amp; $FFFF ; LoWord
;     	If ID &amp;gt; 2 And ID &amp;lt; Last
;         SelectElement(HistoryClipboard(), Last - ID)
;         If Asc(HistoryClipboard()\m2)
;         	BalloonTip2(LTrimChar(HistoryClipboard()\m2))
;         Else
;         	SendMessage_(TTip, #TTM_TRACKACTIVATE, #False, @ti)
;         EndIf
;     	EndIf
    Case #WM_CLIPBOARDUPDATE
;     	Debug 1
    	AddedItem()
    	ProcedureReturn 0
	EndSelect
	ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure

Procedure SplitLCB(String.s, List StringList.m1m2(), Separator.s = &amp;quot; &amp;quot;)
	Protected S.String, *S.Integer = @S
	Protected.i p, slen
	Protected tmp$, pos
	slen = Len(Separator)
	ClearList(StringList())

	*S\i = @String
	Repeat
    AddElement(StringList())
    p = FindString(S\s, Separator)
    tmp$ = PeekS(*S\i, p - 1)
                	If Len(tmp$) &amp;gt; 20 Or FindString(&amp;quot; &amp;quot; + #TAB$ + #CRLF$, Left(tmp$, 1))
                    StringList()\m2 = tmp$
                    While FindString(&amp;quot; &amp;quot; + #TAB$ + #CRLF$, Left(tmp$, 1))
                    	tmp$ = Mid(tmp$, 2)
                    Wend
                    tmp$ = Left(tmp$, 20)
                    pos = FindString(tmp$, #LF$)
                    If pos
                    	tmp$ = Left(tmp$, pos - 2) ; -2 чтобы отрезать ещё и вероятную #CR$
                    EndIf
                    StringList()\m1 = tmp$ + &amp;quot;...&amp;quot;
                	Else
                    StringList()\m1 = tmp$
                	EndIf
    *S\i + (p + slen - 1) &amp;lt;&amp;lt; #PB_Compiler_Unicode
	Until p = 0
	*S\i = 0
EndProcedure

Procedure ReadHistoryToList()
	Protected id_file, Out$, tmp$
	id_file = OpenFile(#PB_Any, GetPathPart(ProgramFilename()) + &amp;quot;History.db&amp;quot;)
	If id_file
    Out$ = ReadString(id_file, #PB_File_IgnoreEOL)
    CloseFile(id_file)
	EndIf
	If Asc(Out$)
    SplitLCB(Out$, HistoryClipboard(), Chr(1))
    LastElement(HistoryClipboard())
    If Asc(HistoryClipboard()\m2)
    	tmp$ = HistoryClipboard()\m2
    Else
    	tmp$ = HistoryClipboard()\m1
    EndIf
    If GetClipboardText() = tmp$
    	DeleteElement(HistoryClipboard(), 1)
    EndIf
    LastElement(HistoryClipboard())
	EndIf
EndProcedure


Procedure AddedItem()
	Protected tmp$, pos
	Static tmp_old$
	
    ; флаг игнора при вставке данных через буфер обмена
    If ignore_flag
    	ignore_flag -1
    	ProcedureReturn
    EndIf
    tmp$ = GetClipboardText()
    If Asc(tmp$) And tmp$ &amp;lt;&amp;gt; tmp_old$
    	LastElement(HistoryClipboard()) ; делаем последний текущим, если это изменяется другими функциями
    	If AddElement(HistoryClipboard())
        tmp_old$ = tmp$
        If Len(tmp$) &amp;gt; 20 Or FindString(&amp;quot; &amp;quot; + #TAB$ + #CRLF$, Left(tmp$, 1))
        	HistoryClipboard()\m2 = tmp$
        	tmp$ = LTrimChar(tmp$)
        	tmp$ = Left(tmp$, 20)
        	pos = FindString(tmp$, #LF$)
        	If pos
            tmp$ = Left(tmp$, pos - 2) ; -2 чтобы отрезать ещё и вероятную #CR$
        	EndIf
        	HistoryClipboard()\m1 = tmp$ + &amp;quot;...&amp;quot;
        Else
        	HistoryClipboard()\m1 = tmp$
        EndIf
    	EndIf
    EndIf
EndProcedure

Procedure GetModKey(MOD)
    Protected ModKey = 0
    If MOD &amp;amp; #HOTKEYF_SHIFT
        ModKey | #MOD_SHIFT
    EndIf
    If MOD &amp;amp; #HOTKEYF_CONTROL
        ModKey | #MOD_CONTROL
    EndIf
    If MOD &amp;amp; #HOTKEYF_ALT
        ModKey | #MOD_ALT
    EndIf
    ProcedureReturn ModKey
EndProcedure


Procedure SaveList()
	Protected id_file
	id_file = CreateFile(#PB_Any, GetPathPart(ProgramFilename()) + &amp;quot;History.db&amp;quot;, #PB_UTF8)
	If id_file And ListSize(HistoryClipboard()) &amp;gt; 0
    ForEach HistoryClipboard()
    	If Asc(HistoryClipboard()\m2)
        WriteString(id_file, HistoryClipboard()\m2)
    	Else
        WriteString(id_file, HistoryClipboard()\m1)
    	EndIf
    	WriteCharacter(id_file, 1, #PB_UTF8)
    Next
    FileSeek(id_file, -1, #PB_Relative)
    TruncateFile(id_file)
    CloseFile(id_file) ; Закройте ранее открытый файл и таким образом сохраните записанные данные
	Else
    MessageRequester(&amp;quot;Ошибка&amp;quot;, &amp;quot;Не удалось создать файл&amp;quot;)
	EndIf
EndProcedure


Procedure ShowMenu()
	Protected i
	If IsMenu(#Menu)
    FreeMenu(#Menu)
	EndIf
	CreatePopupImageMenu(#Menu)
	Last = ListSize(HistoryClipboard())
	If Last &amp;gt; 40
    FirstElement(HistoryClipboard())
    DeleteElement(HistoryClipboard(), 1)
	EndIf
	If Last
    LastElement(HistoryClipboard())
    i=2
    Repeat
    	MenuItem(i, HistoryClipboard()\m1, ImageID(1))
    	i + 1
    Until PreviousElement(HistoryClipboard()) = 0
	EndIf
	LastElement(HistoryClipboard())
	Last + 1
	MenuBar()
	MenuItem(0, &amp;quot;Выход&amp;quot;, ImageID(2))
	DisplayPopupMenu(#Menu, WindowID(#Win_Main))
EndProcedure


Procedure.s LTrimChar(String$, TrimChar$ = #CRLF$ + #TAB$ + #FF$ + #VT$ + &amp;quot; &amp;quot;)
	Protected *jc0, *c.Character, *jc.Character
	
	If Not Asc(String$)
    ProcedureReturn &amp;quot;&amp;quot;
	EndIf
	
	*c = @String$
	*jc0 = @TrimChar$
	
	While *c\c
    *jc = *jc0
    
    While *jc\c
    	If *c\c = *jc\c
        *c\c = 0
        Break
    	EndIf
    	*jc + SizeOf(Character)
    Wend
    
    If *c\c
    	String$ = PeekS(*c)
    	Break
    EndIf
    *c + SizeOf(Character)
	Wend
	
	ProcedureReturn String$
EndProcedure
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Wed, 28 Oct 2026 22:47:35 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13253#p13253</guid>
		</item>
		<item>
			<title>Примеры работы с dbf без дополнительных инструментов.</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13252#p13252</link>
			<description>&lt;p&gt;На примере почты преобразование из 866 в utf16 и дальше свободное использование обычных строковых функций.&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 30em&quot;&gt;&lt;pre&gt;; PINDXNs.pbi
Structure _PINDXNS_
  DEL.c
  INDEX.s{6}
  OPSNAME.s{60}
  OPSTYPE.s{50}
  OPSSUBM.s{6}
  REGION.s{60}
  AUTONOM.s{60}
  AREA.s{60}
  CITY.s{60}
  CITY1.s{60}
  ACTDATE.s{8}
  INDEXOLD.s{6}
EndStructure 
Define *pPINDXNS._PINDXNS_
Define *pPINDXNS_
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;; заготовка 
; преобразование в утф строки Почты
EnableExplicit
UseZipPacker()
XIncludeFile &amp;quot;PINDXNa.pbi&amp;quot;
XIncludeFile &amp;quot;PINDXNs.pbi&amp;quot;
XIncludeFile &amp;quot;U866.pbi&amp;quot;
#PATH = &amp;quot;.\P_Indx_0bf0888750.zip&amp;quot;
Define i
Define *p.Ascii
Define *pl.Ascii
Define *ps.Unicode
OpenConsole()
Define StartTime.q = ElapsedMilliseconds()
Dim cp866.i(255)
For i = 0 To 255
  cp866(i) = 0
Next 

If OpenPack(0, #PATH)
  If ExaminePack(0)
    While NextPackEntry(0)
      *pPINDXN_  = AllocateMemory(PackEntrySize(0))
      
      UncompressPackMemory(0, *pPINDXN_, MemorySize(*pPINDXN_))
      *pPINDXN = *pPINDXN_ + #H_PINDXN
      *p = *pPINDXN
      *pl = *pPINDXN_ + MemorySize(*pPINDXN_)
      *pPINDXNS_ = AllocateMemory((PackEntrySize(0)-#H_PINDXN) * 2)
      *ps = *pPINDXNS_
      While *p &amp;lt; *pl
        *ps\u = U866(*p\a) 
        *p+1
        *ps+2
      Wend 
      CreatePack(1, &amp;quot;test.zip&amp;quot;, #PB_PackerPlugin_Zip)
      AddPackMemory(1, *pPINDXNS_, MemorySize(*pPINDXNS_), &amp;quot;PINDX.DAT&amp;quot;)
    Wend
    FreeMemory(*pPINDXN_) : PrintN(&amp;quot;PIndx.dbf&amp;quot;)
    *pPINDXNS = *pPINDXNS_
    PrintN(Trim(*pPINDXNS\INDEX) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\OPSNAME) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\OPSTYPE) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\OPSSUBM) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\REGION) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\AUTONOM) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\AREA) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\CITY) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\CITY1) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\ACTDATE) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\INDEXOLD))
    *pPINDXNS = *pPINDXNS + (9999 * SizeOf(_PINDXNS_))
    PrintN(Trim(*pPINDXNS\INDEX) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\OPSNAME) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\OPSTYPE) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\OPSSUBM) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\REGION) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\AUTONOM) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\AREA) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\CITY) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\CITY1) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\ACTDATE) + &amp;quot;|&amp;quot; +
           Trim(*pPINDXNS\INDEXOLD))  
    FreeMemory(*pPINDXNS_)
  EndIf
  ClosePack(0)
  
  PrintN(Str(ElapsedMilliseconds() - StartTime))
  Input()
  CloseConsole()
EndIf
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
						&lt;p&gt;p.s. если откопать последнюю версию допускающую сборку не юникодного кода, то структуры сразу можно использовать в виде {sss}&lt;/p&gt;</description>
			<author>mybb@mybb.ru (useful)</author>
			<pubDate>Wed, 28 Oct 2026 19:12:19 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13252#p13252</guid>
		</item>
		<item>
			<title>Расширители буфера обмена</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13249#p13249</link>
			<description>&lt;p&gt;2.2.1&lt;br /&gt;&lt;a href=&quot;https://nakka.com/soft/clcl/index_eng.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://nakka.com/soft/clcl/index_eng.html&lt;/a&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (egons)</author>
			<pubDate>Tue, 27 Oct 2026 10:10:21 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13249#p13249</guid>
		</item>
		<item>
			<title>PureBasic 6.40</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13247#p13247</link>
			<description>&lt;p&gt;Выходили.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (Пётр)</author>
			<pubDate>Sun, 25 Oct 2026 16:10:40 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13247#p13247</guid>
		</item>
		<item>
			<title>Справка SpiderBasic</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13244#p13244</link>
			<description>&lt;p&gt;Ссылка та же, обновил на яндексе (24.10.2026 в заголовке)&lt;br /&gt;1. Перевёл страницы в корне, такие как &amp;quot;Введение&amp;quot; и следующие 3 страницы. Также в конце &amp;quot;Заявка&amp;quot; и следующие 2 страницы (Контакты, Благодарности)&lt;br /&gt;2. Раздел &amp;quot;Среда разработки (IDE)&amp;quot; - несколько страниц. Почему несколько, во первых &amp;quot;Настройки IDE&amp;quot; повторяют настройки в PureBasic, во вторых &amp;quot;Работа с файлам&amp;quot;, ну это прям слишком просто, разбирать меню. Но по второму кругу я всё же начал переводит. И тут я понял что эти страницы создавались для версии 1.0, настолько там не совпадают скриншоты, половины нет и половина нового. Даже в настройках отсутствует раздел &amp;quot;Отладчик&amp;quot;, а в справке он есть, видимо скопирован из PureBasic, поэтому я вырезал эту инфу и обновил некоторые скриншоты. В дереве TOC не было ссылки на страницу &amp;quot;Создание приложения&amp;quot;, поэтому найти её было не реально, добавил и перевёл, так как наивысший приоритет и вызывает больше всего вопросов. Перевёл &amp;quot;Параметры ком-строки для IDE&amp;quot;, тоже высокий приоритет. Перевёл &amp;quot;Компиляция ваших программ&amp;quot;, но там старые скриншоты есть, вкладки &amp;quot;Экспорт&amp;quot; вообще нет сейчас. Там даже в меню &amp;quot;Компиляция&amp;quot; вместо &amp;quot;Создать приложение&amp;quot; было &amp;quot;Экспорт&amp;quot;.&lt;/p&gt;
						&lt;p&gt;Я не тороплюсь, так как создал тему на форуме &lt;a href=&quot;https://forums.spiderbasic.com/viewtopic.php?p=12679&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;SpiderBasic&lt;/a&gt; по вопросом справки. Не исключено, что обновят так что надо будет полностью переводить раздел заново.&lt;/p&gt;
						&lt;p&gt;В следующем обновлении будут:&lt;br /&gt;Встроенные инструменты (уже готово)&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Sat, 24 Oct 2026 20:40:39 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13244#p13244</guid>
		</item>
		<item>
			<title>Ошибка компиляции SpiderBasic 3.20</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13242#p13242</link>
			<description>&lt;p&gt;Если один проект компилируешь, то не замечаешь как всё работает. Как только компилируешь несколько проектов, начинает выдавать ошибку. В логе пишет, что сервис Gradle запущен 2 раза, остановлен 8 раз. Это я нашёл зависимость если появляется второй процесс &amp;quot;Java(TM) Platform SE binary&amp;quot; (проверил сразу оба появляются при компиляции), то точно не соберётся, убиваешь оба и собирается. Но потом это не помогает, после 8-ми остановок. Перезагрузишь комп - вроде заработает опять. Иногда кажется, что проблема интернета, потому что включил ВПН и собралось (не сложно проверить полным отключением интернета), иногда кажется это просто стечение обстоятельств, но перед ВПН несколько раз не собиралось. И вчера была плохая связь, интернет тупил. И теперь у меня ощущение нескольких критериев для сборки. Это не считая отсутствие пробелов в имени исходников, русских букв и внимание: скобки. Я как то назвал копию проекта: project(320) и не мог его ни разу собрать, пока у меня не пришла идея убрать скобки в имени и он тут же скомпилировался. Причём я думаю автор тут не виноват, ведь тут завязаны куча всяких java, cordova, gradle... Думаю нужно написать целую инструкцию в справке о всех причинах вызывающих проблемы. Да и пользователь Windows должен быть не в кириллице и любая папка в пути.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Wed, 21 Oct 2026 06:44:44 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13242#p13242</guid>
		</item>
		<item>
			<title>PureBasic 6.50</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13227#p13227</link>
			<description>&lt;p&gt;Скачал purebasic-devel, при открытии проекта PureBasicIDE.pbp пишет: не найден файл HelpViewer.pb, потом LinuxHelp.pb. При попытке скомпилировать PureBasic.pb пишет ошибку HelpTool.pb в строке 1340, ну это ожидаемо если двух файлов нет.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Sun, 18 Oct 2026 06:43:35 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13227#p13227</guid>
		</item>
		<item>
			<title>работа с com портом</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13222#p13222</link>
			<description>&lt;p&gt;Запустил пример из справки на компе без com портов.&lt;br /&gt;Вылета не было.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (Пётр)</author>
			<pubDate>Fri, 16 Oct 2026 12:32:37 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13222#p13222</guid>
		</item>
		<item>
			<title>Установщик PureBasic для линукс</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13219#p13219</link>
			<description>&lt;div class=&quot;quote-box answer-box&quot;&gt;&lt;cite&gt;Ev3658 написал(а):&lt;/cite&gt;&lt;blockquote&gt;&lt;p&gt;Ubuntu&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Mint пробовал? CachyOS? В Mint по умолчанию Cinnamon, а он мне больше нравится чем убунтушный Gnome. Дистриб CachyOS сейчас популярный на арчевской линейке дистрибутивов, но так как он не является поддерживаемым для PureBasic, то какие нибудь сложные спрайты или 3D могут вызвать ошибку. Я вот прям сейчас не помню, у меня вроде всё компилируется, но перенос своего пакета на Manjaro не раз получал незапуск проги/игры, починил установкой на Manjaro пакет разработчика и немного удивился, так как никогда не было такого, чтобы для пакета нужно устанавливать внешние модули, грубо говоря прога всегда была сама в себе. Но видимо всё-таки есть какие-то API, которые прям жизненно необходимы, как если бы поставить ОС без аудиодрайвера и удивляться почему нет звука в твоей игре.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Fri, 16 Oct 2026 06:26:23 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13219#p13219</guid>
		</item>
		<item>
			<title>PB ZX Spectrum 128</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13214#p13214</link>
			<description>&lt;p&gt;Глянул мельком, ИИ все инструкции ассемблера Z80 впревратил в процедуры?&lt;/p&gt;&lt;div class=&quot;quote-box spoiler-box&quot;&gt;&lt;div onclick=&quot;$(this).toggleClass(&#039;visible&#039;); $(this).next().toggleClass(&#039;visible&#039;);&quot;&gt;отрезок кода z80&lt;/div&gt;&lt;blockquote&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 35em&quot;&gt;&lt;pre&gt;
; NMOS Z80 decoder, PureBasic 6.40+. No direct assignments to cpu\t.
; CpuFetch owns M1 time and R; operand reads are ordinary three-T reads.
; A pathological DD/FD stream yields after 256 prefixes WITHOUT ending the
; instruction. Reset/load code must call CpuResetDecoder().
Global z80Prefix.i, z80InFlight.i, z80FlagsWritten.i, z80PendingNMI.i

Procedure CpuResetDecoder()
  z80Prefix = 0 : z80InFlight = 0 : z80FlagsWritten = 0 : z80PendingNMI = 0
EndProcedure

Procedure.i CpuInstructionBoundary()
  ProcedureReturn Bool(z80InFlight = 0)
EndProcedure

Procedure.i Z80Parity(v.i)
  v &amp;amp; $FF : v ! (v &amp;gt;&amp;gt; 4) : v ! (v &amp;gt;&amp;gt; 2) : v ! (v &amp;gt;&amp;gt; 1)
  ProcedureReturn (v &amp;amp; 1) ! 1
EndProcedure

Procedure.i Z80SZ(v.i)
  v &amp;amp; $FF
  ProcedureReturn (v &amp;amp; ($80 | $28)) | (Bool(v = 0) * #F_Z)
EndProcedure

Procedure.i Z80SZP(v.i)
  ProcedureReturn Z80SZ(v) | (Z80Parity(v) * #F_PV)
EndProcedure

Procedure Z80Flags(v.i)
  cpu\f = v &amp;amp; $FF : z80FlagsWritten = #True
EndProcedure

Procedure.i Z80IR()
  ProcedureReturn ((cpu\ir &amp;amp; $FF) &amp;lt;&amp;lt; 8) | (cpu\rr &amp;amp; $FF)
EndProcedure

Procedure.i Z80Byte()
  Protected v.i = CpuRead(cpu\pc &amp;amp; $FFFF)
  cpu\pc = (cpu\pc + 1) &amp;amp; $FFFF
  ProcedureReturn v &amp;amp; $FF
EndProcedure

Procedure.i Z80Word()
  Protected lo.i = Z80Byte(), hi.i = Z80Byte()
  ProcedureReturn lo | (hi &amp;lt;&amp;lt; 8)
EndProcedure

Procedure.i Z80ReadWord(address.i)
  Protected lo.i = CpuRead(address &amp;amp; $FFFF)
  Protected hi.i = CpuRead((address + 1) &amp;amp; $FFFF)
  ProcedureReturn lo | (hi &amp;lt;&amp;lt; 8)
EndProcedure


&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (Ev3658)</author>
			<pubDate>Thu, 15 Oct 2026 18:48:22 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13214#p13214</guid>
		</item>
		<item>
			<title>Улучшение справки</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13192#p13192</link>
			<description>&lt;p&gt;Обновил &lt;a href=&quot;https://disk.yandex.ru/d/fwotpJKoEaIZ_A&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;скачать&lt;/a&gt;&lt;br /&gt;Раздел HID переведён на русский&lt;br /&gt;Обновлён пример Ascii&lt;br /&gt;Перекрёстные ссылки Space() &amp;lt;-&amp;gt; AllocateMemory()&lt;br /&gt;В RunProgram() были неподсвеченные константы в параметре SenderProgram&lt;br /&gt;В Random() был не указан 0 по умолчанию для Minimum, если значение не указано (в англ. справке тоже не указано)&lt;br /&gt;В EnableWindowDrop() исправлено #PB_Event_GadgetDrop на #PB_Event_WindowDrop&lt;/p&gt;
						&lt;p&gt;Ещё обновил&lt;br /&gt;Перевёл раздел Skeleton, подсветил некоторые переменные&lt;br /&gt;Добавил и перевёл GetWorldAttribute() и SetWorldAttribute()&lt;br /&gt;Добавил #PB_Entity_InheritScale в Get/SetEntityAttribute()&lt;br /&gt;#PB_String_InPlace - указал в скобках до 6.30.&lt;br /&gt;ResizeWindow - добавил WindowBounds&lt;br /&gt;WindowBounds - добавил ResizeWindow&lt;br /&gt;PeekS - добавил StringByteLength&lt;br /&gt;StringByteLength - добавил PeekS&lt;br /&gt;FreeMemory - добавил Unicode&lt;br /&gt;Исправил пример в EscapeString, проглатывал теги&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Thu, 08 Oct 2026 11:11:18 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13192#p13192</guid>
		</item>
		<item>
			<title>Жесты  влево, вправо, вверх, вниз</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13172#p13172</link>
			<description>&lt;p&gt;Целый день экспериментировал, пока добился этого. &lt;a href=&quot;https://forums.spiderbasic.com/viewtopic.php?t=3824&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Второй код рабочий&lt;/a&gt;. Для игры пятнашки или 2048. Самым запутанным оказалось, когда я при отрыве пальца от экрана пытался взять его координаты, но они уже не существовали, надо брать последние до отрыва.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Wed, 23 Sep 2026 05:10:18 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13172#p13172</guid>
		</item>
		<item>
			<title>Игра Пятнашки</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13169#p13169</link>
			<description>&lt;p&gt;Добавил в свои пятнашки сохранение рекордов и настройки размер/стиль/шрифт с возможностью создать один пользовательский стиль.&lt;br /&gt;Вот с рекордами как-то поинтересней играть. Ещё когда при переходе на Canvas добавил подсчёт числа шагов&amp;#160; в заголовок, то стал замечать, что хочется более рационально двигать фишки, одновременно продвигая и другие вверх пытаясь подготовить следующий ряд и получить меньше шагов. Ну и также заметил, что зависит от расположения. Если фишки 1-4 все внизу, да логически понятно, что их с большим числом ходов придётся двигать вверх.&lt;/p&gt;
						&lt;p&gt;Ещё раз обновил&lt;br /&gt;Добавлена возможность нескольких стилей и указание имя пользователя в ini-файле для рекордов, чтобы не запрашивать при старте.&lt;br /&gt;Добавлены иконки на кнопки&lt;br /&gt;Исправлен подсчёт шагов, теперь смещение одновременно 2 или 3 фишки считается за один ход.&lt;br /&gt;Исправлен алгоритм рекордов, так как здесь наименьший считается лучшим и нужно удалять наибольший.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Fri, 11 Sep 2026 13:40:09 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13169#p13169</guid>
		</item>
		<item>
			<title>Проблема с mail библиотекой PB?</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13168#p13168</link>
			<description>&lt;p&gt;Похоже, нашёл проблему в почтовой библиотеке PureBasic.&lt;/p&gt;
						&lt;p&gt;Судя по всему, CreateMail() не кодирует не-ASCII заголовки письма по RFC 2047. Из-за этого некоторые более строгие почтовики могут просто ломать поля From и Subject, если там есть кириллица.&lt;/p&gt;
						&lt;p&gt;Например, у меня Yandex при примерно таком отправителе:&lt;br /&gt;FromWhom.s=&amp;quot;программа PTAFL &amp;lt;noreplay@&amp;lt;example.com&amp;gt;&amp;quot;&lt;br /&gt;Subject.s=&amp;quot;Заказ 123&amp;quot;&lt;br /&gt;показывает EMPTY-FROM с отсутствующей темой. Причина- в кириллице.&lt;br /&gt;Если все заменить на латиницу- тогда у яндекса всё проходит. Как и в письме- в латинице.&lt;/p&gt;
						&lt;p&gt;Кому не трудно, можете проверить у себя. Нужно только подставить свои SMTP-сервер, логин, пароль и адрес получателя:&lt;/p&gt;&lt;div class=&quot;code-box&quot;&gt;&lt;strong class=&quot;legend&quot;&gt;Код:&lt;/strong&gt;&lt;div class=&quot;blockcode&quot;&gt;&lt;div class=&quot;scrollbox&quot; style=&quot;height: 21em&quot;&gt;&lt;pre&gt;
FromWhom.s=&amp;quot;Программа &amp;lt;yourmail@example.com&amp;gt;&amp;quot;
Subject.s=&amp;quot;Заказ 123&amp;quot;
Body.s=&amp;quot;Тестовое письмо&amp;quot;
Mail=CreateMail(#PB_Any, FromWhom, Subject)
If Mail
  AddMailRecipient(Mail, &amp;quot;recipient@yandex.ru&amp;quot;, #PB_Mail_To)
  SetMailBody(Mail, Body)
  SendMail(Mail, &amp;quot;smtp.example.com&amp;quot;, 587, &amp;quot;yourlogin&amp;quot;, &amp;quot;yourpassword&amp;quot;, #PB_Mail_UseSSL) ;SMTP-порт укажите свой, 587 здесь только пример
  FreeMail(Mail)
EndIf
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
			<author>mybb@mybb.ru (Goga)</author>
			<pubDate>Sun, 06 Sep 2026 20:22:08 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13168#p13168</guid>
		</item>
		<item>
			<title>Не открывается официальный форум</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13167#p13167</link>
			<description>&lt;p&gt;У меня вчера на ТТК-Новосибирск отвалились ttk-шные dns-ы. Переключился на Яндексовские (есть даже специальная опция на роутере) и вдруг заработал англоязычный форум PB.&lt;br /&gt;p.s. И что примечательно, только в Ябраузере!&lt;br /&gt;p.p.s рано обрадовался, работает не стабильно, но таки работает ...&lt;/p&gt;</description>
			<author>mybb@mybb.ru (useful)</author>
			<pubDate>Mon, 31 Aug 2026 10:26:23 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13167#p13167</guid>
		</item>
		<item>
			<title>Залип на программе</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13166#p13166</link>
			<description>&lt;p&gt;&lt;a href=&quot;https://upforme.ru/uploads/0009/ae/28/618/228953.jpg&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;img class=&quot;postimg&quot; loading=&quot;lazy&quot; src=&quot;https://upforme.ru/uploads/0009/ae/28/618/t228953.jpg&quot; alt=&quot;https://upforme.ru/uploads/0009/ae/28/618/t228953.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
			<author>mybb@mybb.ru (egons)</author>
			<pubDate>Sun, 30 Aug 2026 13:58:46 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13166#p13166</guid>
		</item>
		<item>
			<title>я плакалъ</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13164#p13164</link>
			<description>&lt;p&gt;как зачем? когда едешь на природу и подальше, и желательно заповедник - надо обязательно камнями выложить свое имя, чтоб навека осталось! так и здесь :)&lt;/p&gt;</description>
			<author>mybb@mybb.ru (SeregaZ)</author>
			<pubDate>Sat, 29 Aug 2026 14:57:51 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13164#p13164</guid>
		</item>
		<item>
			<title>RegExpPB</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13147#p13147</link>
			<description>&lt;p&gt;Я тут немного ломал голову, у мена в RegExp при подсветке в Scintilla, когда я делаю подсветку скобок по позициям, если в тексте русский текст иногда происходит поломка. Далее обратил внимание, что поломка на буквах Ёё. Попробовал разные версии, проблемы нет только в x86, а в x64 хоть 6.40, хоть 6.04 я получаю проблему. Неужели указывая позиции имеется ввиду в байтах? Как известно текст Scintilla в UTF-8, то есть перемешка однобайтовых с двубайтовыми и позиция в символах даёт проблему? Для примера я открываю в RegExp библиотеку регвыров Text и там кликаю 3-й пункт, получаю текст с бинарными вставками типа xD0 x81 вместо Ё и xD0 xAF вместо ё.&lt;/p&gt;
						&lt;p&gt;В линуксе тоже самое. Пока хочу сделать флаг DoubleBracketColor в ini-файл чтобы отключить подсветку. Это лучше чем поломка регвыр.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Sat, 15 Aug 2026 04:39:31 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13147#p13147</guid>
		</item>
		<item>
			<title>LauncherLV</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13137#p13137</link>
			<description>&lt;p&gt;Обновления&lt;br /&gt;Добавлены подсказки hint=&lt;br /&gt;Добавлен поиск в путях.&lt;br /&gt;Добавлен пункт меню &amp;quot;Использовать переменные окружения в путях&amp;quot;, чтобы заменить прямые пути переменными.&lt;br /&gt;Добавлена переменная %LauncherRoot%, чтобы использовать её в аргументах, где относительные пути могут не работать.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Sun, 14 Jun 2026 20:53:58 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13137#p13137</guid>
		</item>
		<item>
			<title>LauncherPB</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13135#p13135</link>
			<description>&lt;p&gt;Добавлена переменная %LauncherRoot% для использования в аргументах, когда невозможно указать относительный путь. Например как исполняемый указан sfx-архив, который после распаковки получает в ком строку исполняемый файл и открываемый файл, где программа может переназначить путь по умолчанию и переданный относительный путь к файлу уже не имеет значение. Вот тут-то через %LauncherRoot% можно передать прямой путь относительно лаунчера.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Thu, 11 Jun 2026 01:25:51 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13135#p13135</guid>
		</item>
		<item>
			<title>WebP и GDI+</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13130#p13130</link>
			<description>&lt;p&gt;можно ли загрузить WebP с помощью функции GdipCreateBitmapFromFile или другим способом?&lt;/p&gt;</description>
			<author>mybb@mybb.ru (egons)</author>
			<pubDate>Sat, 06 Jun 2026 17:06:54 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13130#p13130</guid>
		</item>
		<item>
			<title>CodeLocalization</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13127#p13127</link>
			<description>&lt;p&gt;Добавил флаг в ini-файл black=1, а то давно отвык от белого, по глазам бъёт. Использую то частенько.&lt;br /&gt;Кнопка сохранения теперь сохраняет оба окна. Может в будущем сделаю флаги что и как сохранять.&lt;br /&gt;Ещё хотелось бы &lt;a href=&quot;https://www.purebasic.fr/english/viewtopic.php?t=88999&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;синхронизировать&lt;/a&gt; оба окна при прокрутке.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (AZJIO)</author>
			<pubDate>Tue, 02 Jun 2026 21:32:38 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13127#p13127</guid>
		</item>
		<item>
			<title>книга &quot;PureBasic с нуля до архитектуры (2026)&quot;</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13123#p13123</link>
			<description>&lt;div class=&quot;quote-box answer-box&quot;&gt;&lt;cite&gt;bizdon написал(а):&lt;/cite&gt;&lt;blockquote&gt;&lt;p&gt;имхо, для совсем начинающих.&lt;/p&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;p&gt;Для блокнота Gemini подойдет, будет меня учить уму разуму.&lt;/p&gt;</description>
			<author>mybb@mybb.ru (dibor)</author>
			<pubDate>Fri, 15 May 2026 16:49:53 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13123#p13123</guid>
		</item>
		<item>
			<title>IsImage() не работает в DLL, что делать</title>
			<link>https://purebasic.mybb.ru/viewtopic.php?pid=13113#p13113</link>
			<description>&lt;p&gt;после того как всё отладилось, всё заработало, вчера и саму прогу закончил&lt;br /&gt;код забрал, хотя он и не для dll, может и захочу ещё раз dll переделывать&lt;/p&gt;</description>
			<author>mybb@mybb.ru (newJS)</author>
			<pubDate>Sat, 09 May 2026 10:30:58 +0300</pubDate>
			<guid>https://purebasic.mybb.ru/viewtopic.php?pid=13113#p13113</guid>
		</item>
	</channel>
</rss>
