<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[PowerBASIC Users Meeting Point - All Forums]]></title>
		<link>https://pump.richheimer.de/</link>
		<description><![CDATA[PowerBASIC Users Meeting Point - https://pump.richheimer.de]]></description>
		<pubDate>Sat, 31 Oct 2026 09:44:49 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[GDI+ Gauges custom control]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=147</link>
			<pubDate>Thu, 29 Oct 2026 23:59:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=11">Jules Marchildon</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=147</guid>
			<description><![CDATA[I have two compiled tests to run, one is SDK style and the other is DDT. This is for the Aqua Gauge C# translation, it's not a direct translation but modeled and written in PBWIN10.  I'm hoping a few fellow PB'ers can try it out on your machines and let me know if you have any visual scaling issues, also let me know your Screen settings. Once I have this control finally worked out, I'll spit-shine, polish and post the code.  Many thanks! <br />
<br />
btw, these are binary files, so you may need to add them to your virus program exclusion list.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://pump.richheimer.de/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=88" target="_blank" title="">GdipGauge.zip</a> (Size: 93.79 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://pump.richheimer.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=89" target="_blank" title="">gdip.jpg</a> (Size: 139.45 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[I have two compiled tests to run, one is SDK style and the other is DDT. This is for the Aqua Gauge C# translation, it's not a direct translation but modeled and written in PBWIN10.  I'm hoping a few fellow PB'ers can try it out on your machines and let me know if you have any visual scaling issues, also let me know your Screen settings. Once I have this control finally worked out, I'll spit-shine, polish and post the code.  Many thanks! <br />
<br />
btw, these are binary files, so you may need to add them to your virus program exclusion list.<br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://pump.richheimer.de/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=88" target="_blank" title="">GdipGauge.zip</a> (Size: 93.79 KB / Downloads: 6)
<!-- end: postbit_attachments_attachment --><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://pump.richheimer.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=89" target="_blank" title="">gdip.jpg</a> (Size: 139.45 KB / Downloads: 11)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Program that won't close]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=146</link>
			<pubDate>Sun, 25 Oct 2026 10:37:18 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=51">Giuseppe Belziti</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=146</guid>
			<description><![CDATA[I have a program that I can't close; I've tried everything. Here is the current situation:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>CALLBACK FUNCTION AggiornaXProc()<br />
    SELECT CASE CB.MSG<br />
        '...........................................chiudi con X<br />
        CASE %WM_SYSCOMMAND<br />
        IF (CB.WPARAM AND &amp;HFFF0) = %SC_CLOSE THEN <br />
           PID = SHELL("PAY.EXE", 1)<br />
           DIALOG END CB.HNDL, 0  ' Chiude hDlg2<br />
           DIALOG END hDlg, 0     ' Chiude hDlg<br />
           CLOSE                  ' Rilascia gli handle file<br />
           END                    ' Termina definitivamente PAY_START.EXE<br />
        END IF  <br />
    END SELECT<br />
END FUNCTION</code></div></div><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>       ' --- RICHIAMA PAY.EXE ---<br />
       PID = SHELL("PAY.EXE", 1)<br />
       <br />
       ' --- CHIUSURA ORDINATA IN SEQUENZA CORRETTA ---<br />
       DIALOG END hDlg2, 0   ' Chiude prima il dialogo figlio (Aggiornamenti)<br />
       DIALOG END hDlg, 0    ' Poi chiude la finestra principale (AgriPag)<br />
       CLOSE                 ' Chiude tutti i canali file aperti<br />
       END                   ' Forza la terminazione del processo</code></div></div><br />
I also tried using taskkill, but it doesn't work.<br />
<br />
If I try from the CMD, on the other hand, I get this—and you can see that the program was open:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">C:\PAG&gt;cmd.exe /c taskkill /F /IM PAY_START.EXE<br />
OPERAZIONE RIUSCITA: il processo "PAY_START.EXE" con il PID 8960 è stato terminato.</span><br />
<br />
Do you have a solution for closing this program safely? P.S. This only happens with this one...]]></description>
			<content:encoded><![CDATA[I have a program that I can't close; I've tried everything. Here is the current situation:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>CALLBACK FUNCTION AggiornaXProc()<br />
    SELECT CASE CB.MSG<br />
        '...........................................chiudi con X<br />
        CASE %WM_SYSCOMMAND<br />
        IF (CB.WPARAM AND &amp;HFFF0) = %SC_CLOSE THEN <br />
           PID = SHELL("PAY.EXE", 1)<br />
           DIALOG END CB.HNDL, 0  ' Chiude hDlg2<br />
           DIALOG END hDlg, 0     ' Chiude hDlg<br />
           CLOSE                  ' Rilascia gli handle file<br />
           END                    ' Termina definitivamente PAY_START.EXE<br />
        END IF  <br />
    END SELECT<br />
END FUNCTION</code></div></div><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>       ' --- RICHIAMA PAY.EXE ---<br />
       PID = SHELL("PAY.EXE", 1)<br />
       <br />
       ' --- CHIUSURA ORDINATA IN SEQUENZA CORRETTA ---<br />
       DIALOG END hDlg2, 0   ' Chiude prima il dialogo figlio (Aggiornamenti)<br />
       DIALOG END hDlg, 0    ' Poi chiude la finestra principale (AgriPag)<br />
       CLOSE                 ' Chiude tutti i canali file aperti<br />
       END                   ' Forza la terminazione del processo</code></div></div><br />
I also tried using taskkill, but it doesn't work.<br />
<br />
If I try from the CMD, on the other hand, I get this—and you can see that the program was open:<br />
<br />
<span style="font-weight: bold;" class="mycode_b">C:\PAG&gt;cmd.exe /c taskkill /F /IM PAY_START.EXE<br />
OPERAZIONE RIUSCITA: il processo "PAY_START.EXE" con il PID 8960 è stato terminato.</span><br />
<br />
Do you have a solution for closing this program safely? P.S. This only happens with this one...]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[EnableVisualStyles.bas]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=145</link>
			<pubDate>Sat, 24 Oct 2026 15:13:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=54">Borje Hagsten</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=145</guid>
			<description><![CDATA[Don't remember if anyone posted this kind of function in any of the old - now gone - forums, so here it is. Works for me in Windows 10 - hopefully also in later versions. To be compiled with PB/Win 10. Some comments explain.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>'======================================================================<br />
' Small example of how to enable visual styles in CommCtrl.dll v.6 via<br />
' code instead of using manifest file in resource. Maybe not so useful,<br />
' since doing it via xptheme.xml manifest in resource is easy, but here<br />
' it is anyway. Public Domain by Borje Hagsten October 24, 2026.<br />
'<br />
' Added: Made a correction to deactivation via SUB DisableVisualStyles,<br />
'        where FreeeLibrary and ReleaseActCtx was added.<br />
'        Thank you Stanley Durham for pointing this out.<br />
'======================================================================<br />
#COMPILE EXE<br />
#DIM ALL<br />
'--------------------------------------------------------------------<br />
%UNICODE = 1<br />
#INCLUDE "WIN32API.INC"<br />
'--------------------------------------------------------------------<br />
%IDC_TEXTBOX1 = 531<br />
<br />
GLOBAL ghActCtx, gCookie, ghShell32 AS LONG  ' need to store these as global.<br />
<br />
'======================================================================<br />
FUNCTION PBMAIN () AS LONG<br />
  LOCAL hDlg AS LONG<br />
<br />
  EnableVisualStyles() 'Activate at entry<br />
<br />
  DIALOG NEW 0, "EnableVisualStyles",,, 185, 65, %WS_CAPTION OR %WS_SYSMENU OR _<br />
                                               &nbsp;&nbsp;%WS_MINIMIZEBOX, 0 TO hDlg<br />
  DIALOG SET COLOR hDlg, -1, RGB(196, 196, 196)<br />
  '------------------------------------------------------------------<br />
  CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, "TextBox1", 5, 5, 100, 55<br />
  CONTROL ADD BUTTON, hDlg, %IDCANCEL, "&amp;Ok", 110, 46, 70, 14<br />
<br />
  '------------------------------------------------------------------<br />
  DIALOG SHOW MODAL hDlg  ' no callback - just a demo of how to..<br />
<br />
  IF gCookie THEN DisableVisualStyles ' Deactivate at exit<br />
<br />
END FUNCTION<br />
<br />
'=================================================================================<br />
' Enable visual styles in CommCtrl.dll v.6, using manifest resource in shell32.dll<br />
'---------------------------------------------------------------------------------<br />
FUNCTION EnableVisualStyles() AS DWORD<br />
<br />
  LOCAL aCtx AS ACTCTX<br />
<br />
#IF %DEF(%UNICODE)<br />
  LOCAL szSys AS WSTRINGZ * %MAX_PATH<br />
#ELSE<br />
  LOCAL szSys AS ASCIIZ * %MAX_PATH<br />
#ENDIF<br />
<br />
  GetSystemDirectory szSys, SIZEOF(szSys)    ' Need path to shell32.dll<br />
<br />
  aCtx.cbSize  = SIZEOF(ACTCTX)<br />
  aCtx.dwFlags = %ACTCTX_FLAG_RESOURCE_NAME_VALID OR _<br />
               &nbsp;&nbsp;%ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID OR _<br />
               &nbsp;&nbsp;%ACTCTX_FLAG_HMODULE_VALID<br />
  aCtx.hModule = LoadLibrary("shell32.dll")  ' Use the manifest resource in shell32.dll<br />
  aCtx.lpResourceName = 124                  ' Manifest resource name<br />
  aCtx.lpAssemblyDirectory = VARPTR(szSys)<br />
<br />
  ghShell32 = aCtx.hModule<br />
  ghActCtx  = CreateActCtx(aCtx)  'push the specified activation context to the top of the activation stack<br />
<br />
  IF ghActCtx &lt;&gt; %INVALID_HANDLE_VALUE THEN &nbsp;&nbsp;'vs.hActCtx = dwRes, &amp;vs.cookie = dwCookie, vs.hShell32 = aCtx.hModule<br />
   &nbsp;&nbsp;ActivateActCtx(ghActCtx, gCookie)<br />
  END IF<br />
<br />
  FUNCTION = gCookie<br />
END FUNCTION<br />
<br />
'=================================================================================<br />
' Disable visual styles<br />
'---------------------------------------------------------------------------------<br />
SUB DisableVisualStyles<br />
  IF gCookie THEN DeactivateActCtx(0, gCookie)<br />
  IF NOT ghActCtx = %INVALID_HANDLE_VALUE THEN ReleaseActCtx(ghActCtx)<br />
  IF ghShell32 THEN FreeLibrary(ghShell32)<br />
END SUB</code></div></div>]]></description>
			<content:encoded><![CDATA[Don't remember if anyone posted this kind of function in any of the old - now gone - forums, so here it is. Works for me in Windows 10 - hopefully also in later versions. To be compiled with PB/Win 10. Some comments explain.<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>'======================================================================<br />
' Small example of how to enable visual styles in CommCtrl.dll v.6 via<br />
' code instead of using manifest file in resource. Maybe not so useful,<br />
' since doing it via xptheme.xml manifest in resource is easy, but here<br />
' it is anyway. Public Domain by Borje Hagsten October 24, 2026.<br />
'<br />
' Added: Made a correction to deactivation via SUB DisableVisualStyles,<br />
'        where FreeeLibrary and ReleaseActCtx was added.<br />
'        Thank you Stanley Durham for pointing this out.<br />
'======================================================================<br />
#COMPILE EXE<br />
#DIM ALL<br />
'--------------------------------------------------------------------<br />
%UNICODE = 1<br />
#INCLUDE "WIN32API.INC"<br />
'--------------------------------------------------------------------<br />
%IDC_TEXTBOX1 = 531<br />
<br />
GLOBAL ghActCtx, gCookie, ghShell32 AS LONG  ' need to store these as global.<br />
<br />
'======================================================================<br />
FUNCTION PBMAIN () AS LONG<br />
  LOCAL hDlg AS LONG<br />
<br />
  EnableVisualStyles() 'Activate at entry<br />
<br />
  DIALOG NEW 0, "EnableVisualStyles",,, 185, 65, %WS_CAPTION OR %WS_SYSMENU OR _<br />
                                               &nbsp;&nbsp;%WS_MINIMIZEBOX, 0 TO hDlg<br />
  DIALOG SET COLOR hDlg, -1, RGB(196, 196, 196)<br />
  '------------------------------------------------------------------<br />
  CONTROL ADD TEXTBOX, hDlg, %IDC_TEXTBOX1, "TextBox1", 5, 5, 100, 55<br />
  CONTROL ADD BUTTON, hDlg, %IDCANCEL, "&amp;Ok", 110, 46, 70, 14<br />
<br />
  '------------------------------------------------------------------<br />
  DIALOG SHOW MODAL hDlg  ' no callback - just a demo of how to..<br />
<br />
  IF gCookie THEN DisableVisualStyles ' Deactivate at exit<br />
<br />
END FUNCTION<br />
<br />
'=================================================================================<br />
' Enable visual styles in CommCtrl.dll v.6, using manifest resource in shell32.dll<br />
'---------------------------------------------------------------------------------<br />
FUNCTION EnableVisualStyles() AS DWORD<br />
<br />
  LOCAL aCtx AS ACTCTX<br />
<br />
#IF %DEF(%UNICODE)<br />
  LOCAL szSys AS WSTRINGZ * %MAX_PATH<br />
#ELSE<br />
  LOCAL szSys AS ASCIIZ * %MAX_PATH<br />
#ENDIF<br />
<br />
  GetSystemDirectory szSys, SIZEOF(szSys)    ' Need path to shell32.dll<br />
<br />
  aCtx.cbSize  = SIZEOF(ACTCTX)<br />
  aCtx.dwFlags = %ACTCTX_FLAG_RESOURCE_NAME_VALID OR _<br />
               &nbsp;&nbsp;%ACTCTX_FLAG_ASSEMBLY_DIRECTORY_VALID OR _<br />
               &nbsp;&nbsp;%ACTCTX_FLAG_HMODULE_VALID<br />
  aCtx.hModule = LoadLibrary("shell32.dll")  ' Use the manifest resource in shell32.dll<br />
  aCtx.lpResourceName = 124                  ' Manifest resource name<br />
  aCtx.lpAssemblyDirectory = VARPTR(szSys)<br />
<br />
  ghShell32 = aCtx.hModule<br />
  ghActCtx  = CreateActCtx(aCtx)  'push the specified activation context to the top of the activation stack<br />
<br />
  IF ghActCtx &lt;&gt; %INVALID_HANDLE_VALUE THEN &nbsp;&nbsp;'vs.hActCtx = dwRes, &amp;vs.cookie = dwCookie, vs.hShell32 = aCtx.hModule<br />
   &nbsp;&nbsp;ActivateActCtx(ghActCtx, gCookie)<br />
  END IF<br />
<br />
  FUNCTION = gCookie<br />
END FUNCTION<br />
<br />
'=================================================================================<br />
' Disable visual styles<br />
'---------------------------------------------------------------------------------<br />
SUB DisableVisualStyles<br />
  IF gCookie THEN DeactivateActCtx(0, gCookie)<br />
  IF NOT ghActCtx = %INVALID_HANDLE_VALUE THEN ReleaseActCtx(ghActCtx)<br />
  IF ghShell32 THEN FreeLibrary(ghShell32)<br />
END SUB</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PHP and PowerBasic]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=144</link>
			<pubDate>Sat, 24 Oct 2026 11:32:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=167">Fim Wästberg</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=144</guid>
			<description><![CDATA[Does anyone have experience with having a webpage—via PHP—call a function (e.g., in a DLL) written in PowerBasic?<br />
/Fim W.]]></description>
			<content:encoded><![CDATA[Does anyone have experience with having a webpage—via PHP—call a function (e.g., in a DLL) written in PowerBasic?<br />
/Fim W.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[LOOP remains active after closing via Task Bar cure]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=143</link>
			<pubDate>Sun, 18 Oct 2026 00:58:52 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=23">Dale Yarker</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=143</guid>
			<description><![CDATA[In a current project I'm using GRAPHIC WINDOW CLICK in a DO/LOOP.<br />
(Is similar to MODELESS pump and CALLBACK but only clicks not Windows messages)<br />
<br />
If I closed the window using right click on task bar icon compiling again failed because program is still running.<br />
(needed to close using Task Manager)<br />
<br />
The cure is API IsWindow (hWin) in the DO/LOOP.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>  'Mouse click "pump"<br />
  do<br />
    graphic window click to ClickState, PosX, PosY<br />
  ' if ClickState then                    '&lt;== to also check for double click<br />
    ' sleep 550 'default Windows time 500,             '&lt;== for double click<br />
    ' graphic window click to ClickState, dummy, dummy '&lt;== for double click<br />
      ExitRequest = ClickProc( ClickState, PosX, PosY) '&lt;== Exit clicked on window<br />
      if ExitRequest then exit function<br />
      if IsWindow (hGrafWin) = 0 then exit function&nbsp;&nbsp;&nbsp;&nbsp;'&lt;== the cure!<br />
  ' end if                                             '&lt;== for double click<br />
    sleep 100<br />
  loop</code></div></div>I've found no way to monitor for mouse clicks in TXT.WINDOW. But there could be a DO/LOOP.<br />
<br />
Use CON.MOUSE and CON.HANDLE for the above to work in PBCC.<br />
<br />
PBWIN has function ISWIN, but GRAPHIC WINDOW and TXT.WINDOW can also be created in PBCC which doesn't.<br />
<br />
related: Console programs can have a callback. See PBCC samples\Internet\TCP or \UDP.]]></description>
			<content:encoded><![CDATA[In a current project I'm using GRAPHIC WINDOW CLICK in a DO/LOOP.<br />
(Is similar to MODELESS pump and CALLBACK but only clicks not Windows messages)<br />
<br />
If I closed the window using right click on task bar icon compiling again failed because program is still running.<br />
(needed to close using Task Manager)<br />
<br />
The cure is API IsWindow (hWin) in the DO/LOOP.<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>  'Mouse click "pump"<br />
  do<br />
    graphic window click to ClickState, PosX, PosY<br />
  ' if ClickState then                    '&lt;== to also check for double click<br />
    ' sleep 550 'default Windows time 500,             '&lt;== for double click<br />
    ' graphic window click to ClickState, dummy, dummy '&lt;== for double click<br />
      ExitRequest = ClickProc( ClickState, PosX, PosY) '&lt;== Exit clicked on window<br />
      if ExitRequest then exit function<br />
      if IsWindow (hGrafWin) = 0 then exit function&nbsp;&nbsp;&nbsp;&nbsp;'&lt;== the cure!<br />
  ' end if                                             '&lt;== for double click<br />
    sleep 100<br />
  loop</code></div></div>I've found no way to monitor for mouse clicks in TXT.WINDOW. But there could be a DO/LOOP.<br />
<br />
Use CON.MOUSE and CON.HANDLE for the above to work in PBCC.<br />
<br />
PBWIN has function ISWIN, but GRAPHIC WINDOW and TXT.WINDOW can also be created in PBCC which doesn't.<br />
<br />
related: Console programs can have a callback. See PBCC samples\Internet\TCP or \UDP.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[trailing semicolon?]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=141</link>
			<pubDate>Wed, 14 Oct 2026 11:04:22 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=112">Dan Soper</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=141</guid>
			<description><![CDATA[I'm sure this has come up before, but probably on the old forum.<br />
<br />
In a code module translated from C, I inadvertently left a line-end semicolon behind, resulting in:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>END TYPE;</code></div></div><br />
As far as I'm aware this is not valid, and shouldn't compile - but it did!<br />
<br />
What am I getting wrong here? Is is somehow valid PB syntax?]]></description>
			<content:encoded><![CDATA[I'm sure this has come up before, but probably on the old forum.<br />
<br />
In a code module translated from C, I inadvertently left a line-end semicolon behind, resulting in:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>END TYPE;</code></div></div><br />
As far as I'm aware this is not valid, and shouldn't compile - but it did!<br />
<br />
What am I getting wrong here? Is is somehow valid PB syntax?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Next Gen Visual Designer front end -testing]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=140</link>
			<pubDate>Mon, 12 Oct 2026 20:59:25 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=11">Jules Marchildon</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=140</guid>
			<description><![CDATA[I wonder if a few people can test out my latest compiled version work in progress.  This isn't going to be a full fledged designer + code generator, just a quick start with a a few of my own new personal features, when I get to that point in life.  I will make it available (source code) as custom control and include a small demo how to use it. But for now it's just the binary test file.  <br />
<br />
Here's the zip file.   <span style="font-style: italic;" class="mycode_i">(See post#9  for updated file, October 24th, 2026)</span><br />
<br />
It will create a temp avi file in the same folder as the exe, it cleans up once you exit. Once I add the properties dialog, you can swap avi files during design time.<br />
<br />
Thanks in advance!]]></description>
			<content:encoded><![CDATA[I wonder if a few people can test out my latest compiled version work in progress.  This isn't going to be a full fledged designer + code generator, just a quick start with a a few of my own new personal features, when I get to that point in life.  I will make it available (source code) as custom control and include a small demo how to use it. But for now it's just the binary test file.  <br />
<br />
Here's the zip file.   <span style="font-style: italic;" class="mycode_i">(See post#9  for updated file, October 24th, 2026)</span><br />
<br />
It will create a temp avi file in the same folder as the exe, it cleans up once you exit. Once I add the properties dialog, you can swap avi files during design time.<br />
<br />
Thanks in advance!]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[PowerBASIC Users...]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=139</link>
			<pubDate>Sat, 10 Oct 2026 19:44:21 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=130">Marc Giao</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=139</guid>
			<description><![CDATA[Is anyone else having issues reaching "PowerBASIC Users"? I get the following, attached, message. Tried three different browser, same message.<br />
<br />
Marc<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://pump.richheimer.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=73" target="_blank" title="">PBUsers.jpg</a> (Size: 34.9 KB / Downloads: 4)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Is anyone else having issues reaching "PowerBASIC Users"? I get the following, attached, message. Tried three different browser, same message.<br />
<br />
Marc<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://pump.richheimer.de/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=73" target="_blank" title="">PBUsers.jpg</a> (Size: 34.9 KB / Downloads: 4)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[font size]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=138</link>
			<pubDate>Fri, 09 Oct 2026 15:13:43 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=196">Walt Decker</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=138</guid>
			<description><![CDATA[Any way to increase the font size?  I am about 90% blind and have great difficulty with small text.]]></description>
			<content:encoded><![CDATA[Any way to increase the font size?  I am about 90% blind and have great difficulty with small text.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Claude]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=137</link>
			<pubDate>Mon, 05 Oct 2026 20:29:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=151">Owen_English</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=137</guid>
			<description><![CDATA[Has anyone subjected their code to Claude for an analysis? I recently pushed a 100k .bas file thru it and in return receiving a list of ~100 logic errors, some of which were valid, some were not. <br />
I then asked Claude to write an alternative code and what it produced was incredibly close to the original in 25k - but it wasn't 100% compilable by PB. This stuff is going to make us old dinasours all totally redundant.]]></description>
			<content:encoded><![CDATA[Has anyone subjected their code to Claude for an analysis? I recently pushed a 100k .bas file thru it and in return receiving a list of ~100 logic errors, some of which were valid, some were not. <br />
I then asked Claude to write an alternative code and what it produced was incredibly close to the original in 25k - but it wasn't 100% compilable by PB. This stuff is going to make us old dinasours all totally redundant.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[center line not working with add label]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=134</link>
			<pubDate>Wed, 02 Sep 2026 21:54:01 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=177">Robert Alvarez</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=134</guid>
			<description><![CDATA[#COMPILE EXE<br />
<br />
<br />
FUNCTION PBMAIN() AS LONG<br />
LOCAL hDlg AS LONG<br />
DIALOG NEW 0, "SET center Line Test",,,480,300, %WS_SYSMENU, 0 TO hDlg<br />
<br />
LOCAL AA AS STRING<br />
<br />
AA= STRING&#36;(10, 151)<br />
<br />
            ? AA    'PRINT LINES BELOW DOES NOT<br />
<br />
CONTROL ADD LABEL, hDlg, 203,AA , 55, 70,75,450,<br />
<br />
CONTROL ADD LABEL, hDlg, 203,STRING&#36;(10, 151) , 55, 80,75,450,<br />
<br />
DIALOG SHOW MODAL hDlg<br />
END FUNCTION]]></description>
			<content:encoded><![CDATA[#COMPILE EXE<br />
<br />
<br />
FUNCTION PBMAIN() AS LONG<br />
LOCAL hDlg AS LONG<br />
DIALOG NEW 0, "SET center Line Test",,,480,300, %WS_SYSMENU, 0 TO hDlg<br />
<br />
LOCAL AA AS STRING<br />
<br />
AA= STRING&#36;(10, 151)<br />
<br />
            ? AA    'PRINT LINES BELOW DOES NOT<br />
<br />
CONTROL ADD LABEL, hDlg, 203,AA , 55, 70,75,450,<br />
<br />
CONTROL ADD LABEL, hDlg, 203,STRING&#36;(10, 151) , 55, 80,75,450,<br />
<br />
DIALOG SHOW MODAL hDlg<br />
END FUNCTION]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Euclidean division; quotient and remainder 1 call]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=133</link>
			<pubDate>Mon, 31 Aug 2026 04:25:30 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=23">Dale Yarker</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=133</guid>
			<description><![CDATA[Euclidean division results for negative dividends are different from regular integer divide and MOD which are 2 operations. <br />
<br />
These functions each return both quotient and remainder in BYREF variables.<br />
<br />
The function for LONGs is assembly. For now the QUADs is BASIC; assembly will take more work.<br />
<br />
This is also at <a href="https://www.yarker-dsyc.info/Programs/Misc/DivisionQuoAndRmndr/EuclidDiv.html" target="_blank" rel="noopener" class="mycode_url">https://www.yarker-dsyc.info/Programs/Mi...idDiv.html</a> with a few more words.<br />
<br />
To make a set tuncate functions are at <a href="https://www.yarker-dsyc.info/Programs/Misc/DivisionQuoAndRmndr/TruncateDiv.html" target="_blank" rel="noopener" class="mycode_url">https://www.yarker-dsyc.info/Programs/Mi...teDiv.html</a><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>''The remainder/modulo operation performed by Intel math coprocessors (FPREM<br />
''and FPREM1 instructions) is not Euclidean, Intel's idiv assembly instruction<br />
''is not Euclidean division. They are both IEEE Standard 754.<br />
''In Euclidean division the remainder is never negative. For negative dividends<br />
''the quotient is 1 different than expected.<br />
''From Google- "An example use of Euclidean division with a negative dividend<br />
''is finding a repeating time or calendar offset, such as calculating what hour<br />
''of the day it was a certain number of hours ago.<br />
#compile exe<br />
#dim all<br />
#if %def(%pb_cc32) 'if PBCC<br />
  #console off    'don't create a console window<br />
#endif<br />
'========================== Euclidean Division Of LONGs ========================<br />
function EuclidDivide (byval Dividend as long, _<br />
                      byval Divisor as long, _<br />
                      byref Quotient as long, _<br />
                      byref Remainder as long) as long<br />
  '<br />
  ! mov ebx, Divisor<br />
  ! cmp ebx, 0<br />
  ! jne DoDivide<br />
  ! mov function, %err_divisionbyzero<br />
  ! jmp Done<br />
  DoDivide:<br />
  ! mov esi, Quotient  'Quotient and Remainder pointers to registers<br />
  ! mov edi, Remainder<br />
  '<br />
  ! mov eax, Dividend  'load the dividend<br />
  ! cdq                'sign-extend EAX into EDX:EAX<br />
  ! idiv ebx            'EDX:EAX / ECX<br />
  '<br />
  'adjust to Euclidean results<br />
  ! cmp edx, 0      'remainder &lt; 0<br />
  ! jl RmndrLT0<br />
  ! jmp Results<br />
  RmndrLT0:<br />
    ! cmp ebx, 0    'divisor &gt; 0<br />
    ! jg DvsrGT0<br />
      ! add eax, 1<br />
      ! sub edx, ebx<br />
      ! jmp Results<br />
    DvsrGT0:<br />
      ! sub eax, 1<br />
      ! add edx, ebx<br />
  '<br />
  'set result variables<br />
  Results:<br />
  ! mov [esi], eax<br />
  ! mov [edi], edx<br />
  Done:<br />
end function<br />
'<br />
'========================== Euclidean Division Of QUADs ========================<br />
'For QUAD the only change is the type of the parameters.<br />
function EuclidDivideQuad (byval Dividend as quad, _<br />
                          byval Divisor as quad, _<br />
                          byref Quotient as quad, _<br />
                          byref Remainder as quad) as long<br />
  '------------------------<br />
  if Divisor = 0 then<br />
    Quotient = 0<br />
    Remainder = 0<br />
    function = %err_divisionbyzero<br />
    exit function<br />
  end if<br />
  '<br />
  Quotient = Dividend &#92; Divisor<br />
  Remainder = Dividend mod Divisor<br />
  '<br />
  if Remainder &lt; 0 then<br />
    if Divisor &gt; 0 then<br />
      Quotient -= 1<br />
      Remainder += Divisor<br />
    else<br />
      Quotient += 1<br />
      Remainder -= Divisor<br />
    end if<br />
  end if<br />
end function<br />
'<br />
'/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92; Demonstrate Euclidian Division /&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;<br />
function pbmain () as long<br />
  local hTWin as dword<br />
  local QuotientQ, RemainderQ as quad<br />
  local Quotient, Remainder, ErrNum as long<br />
  local FmtLg, FmtQd as string<br />
  txt.window("Euclidian Division Demonstration", 200, 200, 18, 64) to hTWin<br />
  '<br />
  FmtLg = " #;-#; 0"<br />
  FmtQd = " ###########;-###########; 0"<br />
  '================================== Long =====================================<br />
  txt.print "type LONG"<br />
  ErrNum = EuclidDivide(9, 0, Quotient, Remainder)<br />
  txt.print " 9 /  0 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(9, 4, Quotient, Remainder)<br />
  txt.print " 9 /  4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(9, -4, Quotient, Remainder)<br />
  txt.print " 9 / -4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(-9, 4, Quotient, Remainder)<br />
  txt.print "-9 /  4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(-9, -4, Quotient, Remainder)<br />
  txt.print "-9 / -4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  '================================== Quad =====================================<br />
  txt.print<br />
  txt.print "type QUAD"<br />
  ErrNum = EuclidDivideQuad(90000000000, 0, QuotientQ, RemainderQ)<br />
  txt.print " 90000000000 /            0 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(90000000000, 40000000000, QuotientQ, RemainderQ)<br />
  txt.print " 90000000000 /  40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(90000000000, -40000000000, QuotientQ, RemainderQ)<br />
  txt.print " 90000000000 / -40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(-90000000000, 40000000000, QuotientQ, RemainderQ)<br />
  txt.print "-90000000000 /  40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(-90000000000, -40000000000, QuotientQ, RemainderQ)<br />
  txt.print "-90000000000 / -40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  txt.print<br />
  txt.print<br />
  txt.color = &amp;h0000C000<br />
  txt.print "Any key to close."<br />
  txt.waitkey&#36;<br />
  txt.end<br />
end function</code></div></div>]]></description>
			<content:encoded><![CDATA[Euclidean division results for negative dividends are different from regular integer divide and MOD which are 2 operations. <br />
<br />
These functions each return both quotient and remainder in BYREF variables.<br />
<br />
The function for LONGs is assembly. For now the QUADs is BASIC; assembly will take more work.<br />
<br />
This is also at <a href="https://www.yarker-dsyc.info/Programs/Misc/DivisionQuoAndRmndr/EuclidDiv.html" target="_blank" rel="noopener" class="mycode_url">https://www.yarker-dsyc.info/Programs/Mi...idDiv.html</a> with a few more words.<br />
<br />
To make a set tuncate functions are at <a href="https://www.yarker-dsyc.info/Programs/Misc/DivisionQuoAndRmndr/TruncateDiv.html" target="_blank" rel="noopener" class="mycode_url">https://www.yarker-dsyc.info/Programs/Mi...teDiv.html</a><br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>''The remainder/modulo operation performed by Intel math coprocessors (FPREM<br />
''and FPREM1 instructions) is not Euclidean, Intel's idiv assembly instruction<br />
''is not Euclidean division. They are both IEEE Standard 754.<br />
''In Euclidean division the remainder is never negative. For negative dividends<br />
''the quotient is 1 different than expected.<br />
''From Google- "An example use of Euclidean division with a negative dividend<br />
''is finding a repeating time or calendar offset, such as calculating what hour<br />
''of the day it was a certain number of hours ago.<br />
#compile exe<br />
#dim all<br />
#if %def(%pb_cc32) 'if PBCC<br />
  #console off    'don't create a console window<br />
#endif<br />
'========================== Euclidean Division Of LONGs ========================<br />
function EuclidDivide (byval Dividend as long, _<br />
                      byval Divisor as long, _<br />
                      byref Quotient as long, _<br />
                      byref Remainder as long) as long<br />
  '<br />
  ! mov ebx, Divisor<br />
  ! cmp ebx, 0<br />
  ! jne DoDivide<br />
  ! mov function, %err_divisionbyzero<br />
  ! jmp Done<br />
  DoDivide:<br />
  ! mov esi, Quotient  'Quotient and Remainder pointers to registers<br />
  ! mov edi, Remainder<br />
  '<br />
  ! mov eax, Dividend  'load the dividend<br />
  ! cdq                'sign-extend EAX into EDX:EAX<br />
  ! idiv ebx            'EDX:EAX / ECX<br />
  '<br />
  'adjust to Euclidean results<br />
  ! cmp edx, 0      'remainder &lt; 0<br />
  ! jl RmndrLT0<br />
  ! jmp Results<br />
  RmndrLT0:<br />
    ! cmp ebx, 0    'divisor &gt; 0<br />
    ! jg DvsrGT0<br />
      ! add eax, 1<br />
      ! sub edx, ebx<br />
      ! jmp Results<br />
    DvsrGT0:<br />
      ! sub eax, 1<br />
      ! add edx, ebx<br />
  '<br />
  'set result variables<br />
  Results:<br />
  ! mov [esi], eax<br />
  ! mov [edi], edx<br />
  Done:<br />
end function<br />
'<br />
'========================== Euclidean Division Of QUADs ========================<br />
'For QUAD the only change is the type of the parameters.<br />
function EuclidDivideQuad (byval Dividend as quad, _<br />
                          byval Divisor as quad, _<br />
                          byref Quotient as quad, _<br />
                          byref Remainder as quad) as long<br />
  '------------------------<br />
  if Divisor = 0 then<br />
    Quotient = 0<br />
    Remainder = 0<br />
    function = %err_divisionbyzero<br />
    exit function<br />
  end if<br />
  '<br />
  Quotient = Dividend &#92; Divisor<br />
  Remainder = Dividend mod Divisor<br />
  '<br />
  if Remainder &lt; 0 then<br />
    if Divisor &gt; 0 then<br />
      Quotient -= 1<br />
      Remainder += Divisor<br />
    else<br />
      Quotient += 1<br />
      Remainder -= Divisor<br />
    end if<br />
  end if<br />
end function<br />
'<br />
'/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92; Demonstrate Euclidian Division /&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;/&#92;<br />
function pbmain () as long<br />
  local hTWin as dword<br />
  local QuotientQ, RemainderQ as quad<br />
  local Quotient, Remainder, ErrNum as long<br />
  local FmtLg, FmtQd as string<br />
  txt.window("Euclidian Division Demonstration", 200, 200, 18, 64) to hTWin<br />
  '<br />
  FmtLg = " #;-#; 0"<br />
  FmtQd = " ###########;-###########; 0"<br />
  '================================== Long =====================================<br />
  txt.print "type LONG"<br />
  ErrNum = EuclidDivide(9, 0, Quotient, Remainder)<br />
  txt.print " 9 /  0 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(9, 4, Quotient, Remainder)<br />
  txt.print " 9 /  4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(9, -4, Quotient, Remainder)<br />
  txt.print " 9 / -4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(-9, 4, Quotient, Remainder)<br />
  txt.print "-9 /  4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivide(-9, -4, Quotient, Remainder)<br />
  txt.print "-9 / -4 = " + format&#36;(Quotient, FmtLg) + " R" + _<br />
    format&#36;(Remainder, FmtLg) + "  error code = " + dec&#36;(ErrNum, 2)<br />
  '<br />
  '================================== Quad =====================================<br />
  txt.print<br />
  txt.print "type QUAD"<br />
  ErrNum = EuclidDivideQuad(90000000000, 0, QuotientQ, RemainderQ)<br />
  txt.print " 90000000000 /            0 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(90000000000, 40000000000, QuotientQ, RemainderQ)<br />
  txt.print " 90000000000 /  40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(90000000000, -40000000000, QuotientQ, RemainderQ)<br />
  txt.print " 90000000000 / -40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(-90000000000, 40000000000, QuotientQ, RemainderQ)<br />
  txt.print "-90000000000 /  40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  ErrNum = EuclidDivideQuad(-90000000000, -40000000000, QuotientQ, RemainderQ)<br />
  txt.print "-90000000000 / -40000000000 = " + _<br />
    format&#36;(QuotientQ, FmtQd) + " R" + format&#36;(RemainderQ, FmtQd) + _<br />
    "  error code "  + dec&#36;(ErrNum, 2)<br />
  '<br />
  txt.print<br />
  txt.print<br />
  txt.color = &amp;h0000C000<br />
  txt.print "Any key to close."<br />
  txt.waitkey&#36;<br />
  txt.end<br />
end function</code></div></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Where is pbusers.org?]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=132</link>
			<pubDate>Tue, 04 Aug 2026 09:42:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=54">Borje Hagsten</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=132</guid>
			<description><![CDATA[It's been hard to visit pbusers.org lately and now it's totally gone. Anyone knows why?]]></description>
			<content:encoded><![CDATA[It's been hard to visit pbusers.org lately and now it's totally gone. Anyone knows why?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Does PB progs run well in WINE?]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=130</link>
			<pubDate>Mon, 27 Jul 2026 13:58:56 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=5">Mannish Bhandari</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=130</guid>
			<description><![CDATA[I saw this video <a href="https://www.youtube.com/watch?v=1ffjb0Eq0po" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=1ffjb0Eq0po</a><br />
which states that windows apps can run be run in linux WINE <br />
<br />
Did anyone try this  try running PB progs in Wine ? and what's your opinions on this WINE ?]]></description>
			<content:encoded><![CDATA[I saw this video <a href="https://www.youtube.com/watch?v=1ffjb0Eq0po" target="_blank" rel="noopener" class="mycode_url">https://www.youtube.com/watch?v=1ffjb0Eq0po</a><br />
which states that windows apps can run be run in linux WINE <br />
<br />
Did anyone try this  try running PB progs in Wine ? and what's your opinions on this WINE ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[FFTW - Attn Dan Soper]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=129</link>
			<pubDate>Tue, 19 May 2026 12:57:23 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=125">Ian Vincent</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=129</guid>
			<description><![CDATA[Dan, I saw your post on the pbusers.org site. I am not registered there.<br />
I have played with FFTW in the past. <br />
It was a long time ago though, so not sure if everything you need is here, but it might get you started.<br />
I could never make sense of the licencing for FFTW so moved to the Intel IPP, now OneAPI lib.<br />
It includes a lot of other useful functions, but it takes a while to get into it<br />
<br />
<br />
Here are my Declares:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>%FFTW_FORWARD =-1<br />
%FFTW_BACKWARD =1<br />
%FFTW_ESTIMATE =64  '(1U &lt;&lt; 6)  in c(rap)/c(razy) notation. IE bit 6 is set<br />
Enum R2RTransformKinds<br />
    HalfComplexDFT = 0<br />
    HalfComplexIDFT = 1<br />
    DHT = 2<br />
    DCT1 = 3<br />
    DCT2 = 5<br />
    DCT3 = 4<br />
    DCT4 = 6<br />
    DST1 = 7<br />
    DST2 = 9<br />
    DST3 = 8<br />
    DST4 = 10<br />
End Enum<br />
<br />
#If %DEF(%FFTW_Double)<br />
Type complex<br />
    real As Double<br />
    Imag As Double<br />
End Type<br />
<br />
<br />
Declare Function fftw_plan_dft Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_r2c Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As complex, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_c2r Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByRef TransformKinds As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_r2r_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Dim1TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, _<br />
ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, _<br />
ByRef Dest As Double, ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Dim3TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Sub fftw_execute Lib "libfftw3-3.dll" CDecl Alias "fftw_execute" (ByVal Plan As Long)<br />
Declare Sub fftw_execute_dft Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_dft" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
Declare Sub fftw_execute_dft_r2c Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_dft_r2c" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
Declare Sub fftw_execute_dft_c2r Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_dft_c2r" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
Declare Sub fftw_execute_r2r Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_r2r" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
<br />
Declare Sub fftw_destroy_plan Lib "libfftw3-3.dll" CDecl Alias "fftw_destroy_plan" (ByVal Plan As Long)<br />
Declare Sub fftw_cleanup Lib "libfftw3-3.dll" CDecl Alias "fftw_cleanup" ()<br />
#EndIf<br />
<br />
#If %DEF(%FFTW_Single)<br />
Type complex<br />
    real As Single<br />
    Imag As Single<br />
End Type<br />
<br />
                                    <br />
Declare Function fftw_plan_dft Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_r2c Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As complex, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_r2c_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_c2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByRef TransformKinds As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_r2r_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Dim1TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, _<br />
ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, _<br />
ByRef Dest As Single, ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Dim3TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Sub fftw_execute Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute" (ByVal Plan As Long)<br />
Declare Sub fftw_execute_dft Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_dft" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
Declare Sub fftw_execute_dft_r2c Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_dft_r2c" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
Declare Sub fftw_execute_dft_c2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_dft_c2r" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
Declare Sub fftw_execute_r2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_r2r" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
<br />
Declare Sub fftw_destroy_plan Lib "libfftw3f-3.dll" CDecl Alias "fftwf_destroy_plan" (ByVal Plan As Long)<br />
Declare Sub fftw_cleanup Lib "libfftw3f-3.dll" CDecl Alias "fftwf_cleanup" ()<br />
#EndIf<br />
<br />
<br />
<br />
And this is how I used it (sinearray is as it suggests an array of samples containing a sinwave):<br />
<br />
Local n,Plan As Dword                                                                                          <br />
ReDim amplitudearray(UBound(sinearray))                                                                                                                                                                                                <br />
<br />
n=UBound(sinearray)<br />
Plan= fftw_plan_dft_r2c_1d(n,  sinearray(0), amplitudearray(0), %FFTW_ESTIMATE )<br />
fftw_execute (Plan)<br />
fftw_destroy_plan(Plan)<br />
fftw_cleanup()</code></div></div>]]></description>
			<content:encoded><![CDATA[Dan, I saw your post on the pbusers.org site. I am not registered there.<br />
I have played with FFTW in the past. <br />
It was a long time ago though, so not sure if everything you need is here, but it might get you started.<br />
I could never make sense of the licencing for FFTW so moved to the Intel IPP, now OneAPI lib.<br />
It includes a lot of other useful functions, but it takes a while to get into it<br />
<br />
<br />
Here are my Declares:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>%FFTW_FORWARD =-1<br />
%FFTW_BACKWARD =1<br />
%FFTW_ESTIMATE =64  '(1U &lt;&lt; 6)  in c(rap)/c(razy) notation. IE bit 6 is set<br />
Enum R2RTransformKinds<br />
    HalfComplexDFT = 0<br />
    HalfComplexIDFT = 1<br />
    DHT = 2<br />
    DCT1 = 3<br />
    DCT2 = 5<br />
    DCT3 = 4<br />
    DCT4 = 6<br />
    DST1 = 7<br />
    DST2 = 9<br />
    DST3 = 8<br />
    DST4 = 10<br />
End Enum<br />
<br />
#If %DEF(%FFTW_Double)<br />
Type complex<br />
    real As Double<br />
    Imag As Double<br />
End Type<br />
<br />
<br />
Declare Function fftw_plan_dft Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_r2c Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As complex, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_r2c_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_c2r Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_dft_c2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Double, ByRef Dest As Double, ByRef TransformKinds As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_r2r_1d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r_1d" (ByVal Dim1Size As Long, ByRef Src As Double, ByRef Dest As Double, ByVal Dim1TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_2d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Double, ByRef Dest As Double, _<br />
ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_3d Lib "libfftw3-3.dll" CDecl Alias "fftw_plan_r2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Double, _<br />
ByRef Dest As Double, ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Dim3TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Sub fftw_execute Lib "libfftw3-3.dll" CDecl Alias "fftw_execute" (ByVal Plan As Long)<br />
Declare Sub fftw_execute_dft Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_dft" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
Declare Sub fftw_execute_dft_r2c Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_dft_r2c" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
Declare Sub fftw_execute_dft_c2r Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_dft_c2r" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
Declare Sub fftw_execute_r2r Lib "libfftw3-3.dll" CDecl Alias "fftw_execute_r2r" (ByVal Plan As Long, ByRef Src As Double, ByRef Dest As Double)<br />
<br />
Declare Sub fftw_destroy_plan Lib "libfftw3-3.dll" CDecl Alias "fftw_destroy_plan" (ByVal Plan As Long)<br />
Declare Sub fftw_cleanup Lib "libfftw3-3.dll" CDecl Alias "fftw_cleanup" ()<br />
#EndIf<br />
<br />
#If %DEF(%FFTW_Single)<br />
Type complex<br />
    real As Single<br />
    Imag As Single<br />
End Type<br />
<br />
                                    <br />
Declare Function fftw_plan_dft Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Sign As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_r2c Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As complex, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_r2c_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_r2c_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_r2c_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_dft_c2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_dft_c2r_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_dft_c2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r" (ByVal DimCount As Long, ByRef DimSizes As Long, ByRef Src As Single, ByRef Dest As Single, ByRef TransformKinds As Long, ByVal Flags As Long) As Long<br />
Declare Function fftw_plan_r2r_1d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r_1d" (ByVal Dim1Size As Long, ByRef Src As Single, ByRef Dest As Single, ByVal Dim1TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_2d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r_2d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByRef Src As Single, ByRef Dest As Single, _<br />
ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Function fftw_plan_r2r_3d Lib "libfftw3f-3.dll" CDecl Alias "fftwf_plan_r2r_3d" (ByVal Dim1Size As Long, ByVal Dim2Size As Long, ByVal Dim3Size As Long, ByRef Src As Single, _<br />
ByRef Dest As Single, ByVal Dim1TransformKind As Long, ByVal Dim2TransformKind As Long, ByVal Dim3TransformKind As Long, ByVal Flags As Long) As Long<br />
<br />
Declare Sub fftw_execute Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute" (ByVal Plan As Long)<br />
Declare Sub fftw_execute_dft Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_dft" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
Declare Sub fftw_execute_dft_r2c Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_dft_r2c" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
Declare Sub fftw_execute_dft_c2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_dft_c2r" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
Declare Sub fftw_execute_r2r Lib "libfftw3f-3.dll" CDecl Alias "fftwf_execute_r2r" (ByVal Plan As Long, ByRef Src As Single, ByRef Dest As Single)<br />
<br />
Declare Sub fftw_destroy_plan Lib "libfftw3f-3.dll" CDecl Alias "fftwf_destroy_plan" (ByVal Plan As Long)<br />
Declare Sub fftw_cleanup Lib "libfftw3f-3.dll" CDecl Alias "fftwf_cleanup" ()<br />
#EndIf<br />
<br />
<br />
<br />
And this is how I used it (sinearray is as it suggests an array of samples containing a sinwave):<br />
<br />
Local n,Plan As Dword                                                                                          <br />
ReDim amplitudearray(UBound(sinearray))                                                                                                                                                                                                <br />
<br />
n=UBound(sinearray)<br />
Plan= fftw_plan_dft_r2c_1d(n,  sinearray(0), amplitudearray(0), %FFTW_ESTIMATE )<br />
fftw_execute (Plan)<br />
fftw_destroy_plan(Plan)<br />
fftw_cleanup()</code></div></div>]]></content:encoded>
		</item>
	</channel>
</rss>