<?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 - PowerBASIC for Windows]]></title>
		<link>https://pump.richheimer.de/</link>
		<description><![CDATA[PowerBASIC Users Meeting Point - https://pump.richheimer.de]]></description>
		<pubDate>Sat, 31 Oct 2026 10:46:14 +0000</pubDate>
		<generator>MyBB</generator>
		<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[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[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[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[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[Making text unreadable, 1 sample code works, 2 do not work]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=112</link>
			<pubDate>Thu, 22 Jan 2026 17:32:50 +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=112</guid>
			<description><![CDATA[Found three code samples in the internet to make text unreadable.<br />
First one can read text and encrypt it and decrypt .<br />
The second and third seems to encrypt it but decrypt does not work.<br />
<br />
First sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i AS LONG<br />
<br />
'1. Basic Character Shift (Caesar Cipher Style)<br />
OPEN "secret 1a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
 PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) + 5);<br />
NEXT<br />
CLOSE #1<br />
<br />
OPEN "secret 1a.dat" FOR INPUT AS #1: LINE INPUT #1, text&#36;<br />
 ? text&#36; 'encryt<br />
FOR i = 1 TO LEN(text&#36;)<br />
 text1&#36;=text1&#36;+CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) - 5)<br />
NEXT<br />
 ? text1&#36;  'decreypt<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Second sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, key AS LONG<br />
<br />
'2. XOR Encoding<br />
OPEN "secret2a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
key = 123  ' Simple numeric key<br />
<br />
FOR i = 1 TO LEN(text&#36;)<br />
    PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR key);<br />
NEXT<br />
CLOSE #1<br />
'XOR is reversible — use the same key to decode.<br />
<br />
<br />
OPEN "secret2a.dat" FOR INPUT AS #1<br />
 GET #1,1, ch&#36;: ? ch&#36;&#36;<br />
decoded&#36; = ""<br />
key = 123<br />
WHILE NOT EOF(1)<br />
    INPUT #1, ch&#36;  ' : ? ch&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(ch&#36;) XOR key)  ': ? decoded&#36;<br />
WEND<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Third sample code:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, mask AS LONG<br />
<br />
'3. Binary Write with Random Mask<br />
RANDOMIZE TIMER<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
    mask = RND(255)<br />
    PUT&#36; #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR mask)<br />
NEXT<br />
CLOSE #1<br />
<br />
<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
decoded&#36; = ""<br />
DO UNTIL EOF(1)<br />
    GET&#36; #1, 1, mask1&#36;<br />
    GET&#36; #1, 1, data1&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(data1&#36;) XOR ASC(mask1&#36;))<br />
LOOP<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div> <br />
How to fix?]]></description>
			<content:encoded><![CDATA[Found three code samples in the internet to make text unreadable.<br />
First one can read text and encrypt it and decrypt .<br />
The second and third seems to encrypt it but decrypt does not work.<br />
<br />
First sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i AS LONG<br />
<br />
'1. Basic Character Shift (Caesar Cipher Style)<br />
OPEN "secret 1a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
 PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) + 5);<br />
NEXT<br />
CLOSE #1<br />
<br />
OPEN "secret 1a.dat" FOR INPUT AS #1: LINE INPUT #1, text&#36;<br />
 ? text&#36; 'encryt<br />
FOR i = 1 TO LEN(text&#36;)<br />
 text1&#36;=text1&#36;+CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) - 5)<br />
NEXT<br />
 ? text1&#36;  'decreypt<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Second sample code:<br />
<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, key AS LONG<br />
<br />
'2. XOR Encoding<br />
OPEN "secret2a.dat" FOR OUTPUT AS #1<br />
text&#36; = "This is my secret message."<br />
key = 123  ' Simple numeric key<br />
<br />
FOR i = 1 TO LEN(text&#36;)<br />
    PRINT #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR key);<br />
NEXT<br />
CLOSE #1<br />
'XOR is reversible — use the same key to decode.<br />
<br />
<br />
OPEN "secret2a.dat" FOR INPUT AS #1<br />
 GET #1,1, ch&#36;: ? ch&#36;&#36;<br />
decoded&#36; = ""<br />
key = 123<br />
WHILE NOT EOF(1)<br />
    INPUT #1, ch&#36;  ' : ? ch&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(ch&#36;) XOR key)  ': ? decoded&#36;<br />
WEND<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div><br />
Third sample code:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>#COMPILE EXE<br />
#INCLUDE "WIN32API.INC"<br />
GLOBAL hDlg AS LONG<br />
<br />
CALLBACK FUNCTION ENDPROG()<br />
 DIALOG END CBHNDL, 1<br />
END FUNCTION<br />
<br />
FUNCTION PBMAIN () AS LONG<br />
&#36;REGISTER NONE<br />
LOCAL result, i, mask AS LONG<br />
<br />
'3. Binary Write with Random Mask<br />
RANDOMIZE TIMER<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
text&#36; = "This is my secret message."<br />
FOR i = 1 TO LEN(text&#36;)<br />
    mask = RND(255)<br />
    PUT&#36; #1, CHR&#36;(ASC(MID&#36;(text&#36;, i, 1)) XOR mask)<br />
NEXT<br />
CLOSE #1<br />
<br />
<br />
OPEN "secret 3.dat" FOR BINARY AS #1<br />
decoded&#36; = ""<br />
DO UNTIL EOF(1)<br />
    GET&#36; #1, 1, mask1&#36;<br />
    GET&#36; #1, 1, data1&#36;<br />
    decoded&#36; = decoded&#36; + CHR&#36;(ASC(data1&#36;) XOR ASC(mask1&#36;))<br />
LOOP<br />
CLOSE #1<br />
? decoded&#36;<br />
<br />
DIALOG NEW 0, "TEST 1", ,, 200, 150, %WS_MINIMIZEBOX+%WS_SYSMENU, 0 TO hDlg<br />
CONTROL ADD LABEL, hDlg, 100, "LABEL 1",80, 40, 60, 14,<br />
CONTROL ADD BUTTON,hDlg, 202, "&amp;Exit Program",100, 100,55, 14, CALL ENDPROG<br />
CONTROL SET FOCUS  hDlg, 202<br />
DIALOG SHOW MODAL  hDlg TO result<br />
END FUNCTION</code></div></div> <br />
How to fix?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Where is CAfxMp3.inc]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=109</link>
			<pubDate>Sat, 27 Dec 2025 00:48:55 +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=109</guid>
			<description><![CDATA[Not quite sure where I got this chunk of code from but it includes CAfxMp3.inc which I don't have.<br />
Have searched everywhere - Google mentions it but leads nowhere.<br />
Anyone heard of or got a copy of this one please?]]></description>
			<content:encoded><![CDATA[Not quite sure where I got this chunk of code from but it includes CAfxMp3.inc which I don't have.<br />
Have searched everywhere - Google mentions it but leads nowhere.<br />
Anyone heard of or got a copy of this one please?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[How to run PB progs in Linux]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=101</link>
			<pubDate>Sun, 19 Oct 2025 20:27:26 +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=101</guid>
			<description><![CDATA[I heard so many terrible stories about upgrading to Windows 11 I'm now interested to use Linux instead and I want to be able to run my PB <br />
progs in Linux.  how to do this ?]]></description>
			<content:encoded><![CDATA[I heard so many terrible stories about upgrading to Windows 11 I'm now interested to use Linux instead and I want to be able to run my PB <br />
progs in Linux.  how to do this ?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[READ$/Data Slow]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=97</link>
			<pubDate>Fri, 10 Oct 2025 22:55:42 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=195">Brent F Boshart</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=97</guid>
			<description><![CDATA[I have some data that I want to keep embedded in the code instead of an external file.  This takes about 4 seconds to execute (the routines formatStarRA, formatStarDec and J2000Topo only account for about 0.3 seconds).  I could make each line (element) one string padding with spaces and then using mid&#36; to parse it out. That would be 2400 READ&#36; instead of 2400*11.   Any other suggestions to speed this up? <br />
<br />
<br />
<br />
<br />
FUNCTION DoubleStarLoad AS LONG<br />
    LOCAL t AS LONG<br />
    LOCAL tempRA, TempDec AS DOUBLE, dummy AS STRING<br />
<br />
    FOR t= 0 TO 2399<br />
        DoubleStarData(t).CST=READ&#36;((t)*11+1)<br />
        DoubleStarData(t).ObjName=READ&#36;((t)*11+2)<br />
        DoubleStarData(t).SAO=READ&#36;((t)*11+3)<br />
        tempRA=formatStarRA(READ&#36;((t)*11+4))<br />
        tempDec=formatStarDec(READ&#36;((t)*11+5))<br />
        J2000Topo(tempRA,tempDec)<br />
        DoubleStarData(t).RA=tempRA<br />
        DoubleStarData(t).Dec=tempDec<br />
        DoubleStarData(t).Magnitude1=READ&#36;(t*11+6)<br />
        DoubleStarData(t).Magnitude2=READ&#36;(t*11+7)<br />
        DoubleStarData(t).Spectral=READ&#36;(t*11+9)<br />
        DoubleStarData(t).Distance=VAL(READ&#36;(t*11+10))<br />
        DoubleStarData(t).Separation=READ&#36;(t*11+11)<br />
    NEXT t<br />
<br />
    DATA "Aqr","1 Aqr","126062","20:39:25","+00:29:11","5.27","12.3","7.03","K0III","71.48","65"<br />
    DATA "Ari","1 Ari","74966","01:49:50","+22:15:45","16","17","1","M3.7+M4.2","","17.5"<br />
    DATA "Ari","1 Ari","74966","01:50:09","+22:16:30","6.33","7.21","0.88","G3III","179.53","2.9"<br />
    DATA "Boo","1 Boo","82942","13:40:40","+19:57:20","5.76","9.6","3.84","A1V","100.6","4.4"<br />
    DATA "Cam","1 Cam","24672","04:32:02","+53:54:39","5.78","6.82","1.04","B0III","217.39","10.4"<br />
    DATA "Del","1 Del","106172","20:30:18","+10:53:45","6.2","8.02","1.82","Be+B","227.79","0.9"<br />
    DATA "Dra","1 Dra","15532","11:31:07","+69:24:00","14.3","14.8","0.5","","","1.2"<br />
    ....<br />
<br />
END FUNCTION]]></description>
			<content:encoded><![CDATA[I have some data that I want to keep embedded in the code instead of an external file.  This takes about 4 seconds to execute (the routines formatStarRA, formatStarDec and J2000Topo only account for about 0.3 seconds).  I could make each line (element) one string padding with spaces and then using mid&#36; to parse it out. That would be 2400 READ&#36; instead of 2400*11.   Any other suggestions to speed this up? <br />
<br />
<br />
<br />
<br />
FUNCTION DoubleStarLoad AS LONG<br />
    LOCAL t AS LONG<br />
    LOCAL tempRA, TempDec AS DOUBLE, dummy AS STRING<br />
<br />
    FOR t= 0 TO 2399<br />
        DoubleStarData(t).CST=READ&#36;((t)*11+1)<br />
        DoubleStarData(t).ObjName=READ&#36;((t)*11+2)<br />
        DoubleStarData(t).SAO=READ&#36;((t)*11+3)<br />
        tempRA=formatStarRA(READ&#36;((t)*11+4))<br />
        tempDec=formatStarDec(READ&#36;((t)*11+5))<br />
        J2000Topo(tempRA,tempDec)<br />
        DoubleStarData(t).RA=tempRA<br />
        DoubleStarData(t).Dec=tempDec<br />
        DoubleStarData(t).Magnitude1=READ&#36;(t*11+6)<br />
        DoubleStarData(t).Magnitude2=READ&#36;(t*11+7)<br />
        DoubleStarData(t).Spectral=READ&#36;(t*11+9)<br />
        DoubleStarData(t).Distance=VAL(READ&#36;(t*11+10))<br />
        DoubleStarData(t).Separation=READ&#36;(t*11+11)<br />
    NEXT t<br />
<br />
    DATA "Aqr","1 Aqr","126062","20:39:25","+00:29:11","5.27","12.3","7.03","K0III","71.48","65"<br />
    DATA "Ari","1 Ari","74966","01:49:50","+22:15:45","16","17","1","M3.7+M4.2","","17.5"<br />
    DATA "Ari","1 Ari","74966","01:50:09","+22:16:30","6.33","7.21","0.88","G3III","179.53","2.9"<br />
    DATA "Boo","1 Boo","82942","13:40:40","+19:57:20","5.76","9.6","3.84","A1V","100.6","4.4"<br />
    DATA "Cam","1 Cam","24672","04:32:02","+53:54:39","5.78","6.82","1.04","B0III","217.39","10.4"<br />
    DATA "Del","1 Del","106172","20:30:18","+10:53:45","6.2","8.02","1.82","Be+B","227.79","0.9"<br />
    DATA "Dra","1 Dra","15532","11:31:07","+69:24:00","14.3","14.8","0.5","","","1.2"<br />
    ....<br />
<br />
END FUNCTION]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[& Character problem]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=90</link>
			<pubDate>Tue, 30 Sep 2025 18:08:11 +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=90</guid>
			<description><![CDATA[using the &amp; character is a problem when typing in text box and displaying it, is thee a fix<br />
<br />
type A&amp;B<br />
screen show A<span style="text-decoration: underline;" class="mycode_u">B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;B</span><br />
<br />
<span style="text-decoration: underline;" class="mycode_u">type A&amp;&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">screen show A&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;&amp;B</span>]]></description>
			<content:encoded><![CDATA[using the &amp; character is a problem when typing in text box and displaying it, is thee a fix<br />
<br />
type A&amp;B<br />
screen show A<span style="text-decoration: underline;" class="mycode_u">B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;B</span><br />
<br />
<span style="text-decoration: underline;" class="mycode_u">type A&amp;&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">screen show A&amp;B</span><br />
<span style="text-decoration: underline;" class="mycode_u">xprint show A&amp;&amp;B</span>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbClientCapture (Discussion)]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=81</link>
			<pubDate>Sat, 20 Sep 2025 17:43:47 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=81</guid>
			<description><![CDATA[I decided to break the gbScroller app into two parts. The first is <a href="http://pump.richheimer.de/showthread.php?tid=80" target="_blank" rel="noopener" class="mycode_url">posted</a> in the forum as gbClientCapture.<br />
<br />
It captures the area under the transparent dialog client, merging each new capture into a horizontal image for subsequent scrolling. I've not yet written the scrolling app.<br />
<br />
The area between the Toolbar and Statusbar is captured and merged into a horizontal image.<br />
<br />
<img src="https://www.garybeene.com/files/capture.jpg" loading="lazy"  alt="[Image: capture.jpg]" class="mycode_img" /><br />
<hr class="mycode_hr" />
Some new features come to mind:<br />
<br />
1. allow using the arrow keys to more accurately position the dialog<br />
2. with transparency, the resize with a mouse ability is limited to the caption and toolbar.  Not sure why but I know I don't like it.<br />
<br />
Not a feature, but I notice there is a tiny gap between the caption and toolbar.  I'm not sure why.  I thought the toolbar by default would be positioned immediately next to the caption.<br />
<br />
And, another thing, I tweaked the various dimensions to make sure the client area is captured, without overlapping the toolbar, statusbar and dialog borders. But it seems to me that I should have been able to do a more exact dimensioning of the capture positioning/size.<br />
<hr class="mycode_hr" />
Here's how I envision this working.<br />
<br />
1. Call up the electronic copy of the music (PDF in this example).<br />
2. Place gbClientCapture over the first row of music (resize as needed)<br />
3. Click "Copy"<br />
4. Scroll the PDF upwards until the next row of music is under gbClientCapture (that should be easier than moving the dialog itself.<br />
5. Click "Copy"<br />
6. Repeat until all rows of music are captured and placed in the "merge.bmp" file.<br />
<br />
In this example, the Adele music sheet PDF is displayed vertically in my browser.  The gbClientCapture is positioned over the first row, ready for "Copy".  Then, instead of moving the dialog to a new position, I scroll the PDF upwards until the next row of music is visible under the dialog client area.  Repeat Copying untill all rows of music are captured. With each capture the "merge.bmp" file is updated to contain the most recent capture.<br />
<br />
<img src="https://www.garybeene.com/files/capture2.jpg" loading="lazy"  alt="[Image: capture2.jpg]" class="mycode_img" />]]></description>
			<content:encoded><![CDATA[I decided to break the gbScroller app into two parts. The first is <a href="http://pump.richheimer.de/showthread.php?tid=80" target="_blank" rel="noopener" class="mycode_url">posted</a> in the forum as gbClientCapture.<br />
<br />
It captures the area under the transparent dialog client, merging each new capture into a horizontal image for subsequent scrolling. I've not yet written the scrolling app.<br />
<br />
The area between the Toolbar and Statusbar is captured and merged into a horizontal image.<br />
<br />
<img src="https://www.garybeene.com/files/capture.jpg" loading="lazy"  alt="[Image: capture.jpg]" class="mycode_img" /><br />
<hr class="mycode_hr" />
Some new features come to mind:<br />
<br />
1. allow using the arrow keys to more accurately position the dialog<br />
2. with transparency, the resize with a mouse ability is limited to the caption and toolbar.  Not sure why but I know I don't like it.<br />
<br />
Not a feature, but I notice there is a tiny gap between the caption and toolbar.  I'm not sure why.  I thought the toolbar by default would be positioned immediately next to the caption.<br />
<br />
And, another thing, I tweaked the various dimensions to make sure the client area is captured, without overlapping the toolbar, statusbar and dialog borders. But it seems to me that I should have been able to do a more exact dimensioning of the capture positioning/size.<br />
<hr class="mycode_hr" />
Here's how I envision this working.<br />
<br />
1. Call up the electronic copy of the music (PDF in this example).<br />
2. Place gbClientCapture over the first row of music (resize as needed)<br />
3. Click "Copy"<br />
4. Scroll the PDF upwards until the next row of music is under gbClientCapture (that should be easier than moving the dialog itself.<br />
5. Click "Copy"<br />
6. Repeat until all rows of music are captured and placed in the "merge.bmp" file.<br />
<br />
In this example, the Adele music sheet PDF is displayed vertically in my browser.  The gbClientCapture is positioned over the first row, ready for "Copy".  Then, instead of moving the dialog to a new position, I scroll the PDF upwards until the next row of music is visible under the dialog client area.  Repeat Copying untill all rows of music are captured. With each capture the "merge.bmp" file is updated to contain the most recent capture.<br />
<br />
<img src="https://www.garybeene.com/files/capture2.jpg" loading="lazy"  alt="[Image: capture2.jpg]" class="mycode_img" />]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[File Transfer Between PCs]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=79</link>
			<pubDate>Fri, 19 Sep 2025 20:32:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=79</guid>
			<description><![CDATA[I want to move all DOCX files from an old PC to my new PC, preferably by first putting them all on a flash drive which I use for the transfer.<br />
<br />
I've posted code before that would capture a list of files anywhere on the PC that match a filespec such as "*.docx". I can use that to copy files to the flash.<br />
<br />
But because some files have the same name, I can't just fill the root folder of the flash with all the files by their original name.  To do that I would have to rename files - such as with a simple prefix of "00001", "0002", etc.  Or, I could prefix the original folder name onto each file name, substituting the \ characters with an underscore.  That won't recreate the old folder structure on the new PC, but will at least capture all of the files.<br />
<br />
Better yet, I could use something like Beyond Compare to find only DOCX files and replicate the original folder structure onto the new PC.  That's the most "exact" approach, but I'd have to be careful not to inappropriately overwrite any files on the new PC.<br />
<br />
As best I know, the command line xcopy can do a similar thing but doesn't as easily et you pick and chose which files to copy.<br />
<br />
Anyone use a better solution?]]></description>
			<content:encoded><![CDATA[I want to move all DOCX files from an old PC to my new PC, preferably by first putting them all on a flash drive which I use for the transfer.<br />
<br />
I've posted code before that would capture a list of files anywhere on the PC that match a filespec such as "*.docx". I can use that to copy files to the flash.<br />
<br />
But because some files have the same name, I can't just fill the root folder of the flash with all the files by their original name.  To do that I would have to rename files - such as with a simple prefix of "00001", "0002", etc.  Or, I could prefix the original folder name onto each file name, substituting the \ characters with an underscore.  That won't recreate the old folder structure on the new PC, but will at least capture all of the files.<br />
<br />
Better yet, I could use something like Beyond Compare to find only DOCX files and replicate the original folder structure onto the new PC.  That's the most "exact" approach, but I'd have to be careful not to inappropriately overwrite any files on the new PC.<br />
<br />
As best I know, the command line xcopy can do a similar thing but doesn't as easily et you pick and chose which files to copy.<br />
<br />
Anyone use a better solution?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[DOCX and XLSX Viewer]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=78</link>
			<pubDate>Thu, 18 Sep 2025 02:30:37 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=78</guid>
			<description><![CDATA[I'd like to display DOCX and XLSX files with their full visual content.<br />
<br />
But, I need for the solution to NOT require Word/Excel be installed on a user's PC.<br />
<br />
Is that possible?]]></description>
			<content:encoded><![CDATA[I'd like to display DOCX and XLSX files with their full visual content.<br />
<br />
But, I need for the solution to NOT require Word/Excel be installed on a user's PC.<br />
<br />
Is that possible?]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[gbScroller - Vertical to Horizontal Music Converter]]></title>
			<link>https://pump.richheimer.de/showthread.php?tid=77</link>
			<pubDate>Wed, 17 Sep 2025 15:13:10 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://pump.richheimer.de/member.php?action=profile&uid=94">Gary Beene</a>]]></dc:creator>
			<guid isPermaLink="false">https://pump.richheimer.de/showthread.php?tid=77</guid>
			<description><![CDATA[From talking with a friend, I got the idea of writing a tool to convert music sheets from a portrait format to a scrollable, horizontal format.  I went looking on the web, thinking there must be one already, but did not find anything.  I have the basics working, but before I spent more time on it, <span style="font-weight: bold;" class="mycode_b">I thought I'd see if anyone here knows of such a thing.</span><br />
<br />
Here's an image showing the idea.  A vertical page of music, with multiple rows of content, would be converted to a horizontal image that can be scrolled at a specified rate.  There might be several pages to convert.<br />
<br />
<img src="https://garybeene.com/files/gbscroller.png" loading="lazy"  alt="[Image: gbscroller.png]" class="mycode_img" /><br />
<br />
My approach is to have a transparent, resizable dialog that the user places over a row of music and takes a snapshot of that row, then moves the dialog over the next row of music and takes another snapshot - repeating until all rows over multiple pages have been captured. All images would be the same size. gbScroller would merge the images into a single image, which could then be displayed and scrolled within the same app.]]></description>
			<content:encoded><![CDATA[From talking with a friend, I got the idea of writing a tool to convert music sheets from a portrait format to a scrollable, horizontal format.  I went looking on the web, thinking there must be one already, but did not find anything.  I have the basics working, but before I spent more time on it, <span style="font-weight: bold;" class="mycode_b">I thought I'd see if anyone here knows of such a thing.</span><br />
<br />
Here's an image showing the idea.  A vertical page of music, with multiple rows of content, would be converted to a horizontal image that can be scrolled at a specified rate.  There might be several pages to convert.<br />
<br />
<img src="https://garybeene.com/files/gbscroller.png" loading="lazy"  alt="[Image: gbscroller.png]" class="mycode_img" /><br />
<br />
My approach is to have a transparent, resizable dialog that the user places over a row of music and takes a snapshot of that row, then moves the dialog over the next row of music and takes another snapshot - repeating until all rows over multiple pages have been captured. All images would be the same size. gbScroller would merge the images into a single image, which could then be displayed and scrolled within the same app.]]></content:encoded>
		</item>
	</channel>
</rss>