Welcome, Guest
You have to register before you can post on our site.

Username/Email:
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 714
» Latest member: HenryG
» Forum threads: 3,569
» Forum posts: 31,909

Full Statistics

Latest Threads
QB64PE v 4.4.0
Forum: Announcements
Last Post: madscijr
5 hours ago
» Replies: 8
» Views: 681
4x4 Square Elimination Pu...
Forum: bplus
Last Post: bplus
8 hours ago
» Replies: 12
» Views: 414
Container Data Structure
Forum: Utilities
Last Post: bplus
8 hours ago
» Replies: 3
» Views: 131
Accretion Disk
Forum: Programs
Last Post: bplus
9 hours ago
» Replies: 11
» Views: 295
QBJS v0.10.0 - Release
Forum: QBJS, BAM, and Other BASICs
Last Post: Unseen Machine
Today, 04:14 AM
» Replies: 13
» Views: 1,300
Arrays inside Types?
Forum: General Discussion
Last Post: hsiangch_ong
Today, 03:24 AM
» Replies: 47
» Views: 1,451
Has anybody experience wi...
Forum: Help Me!
Last Post: Rudy M
Yesterday, 08:47 AM
» Replies: 31
» Views: 1,937
Sorting numbers - FiliSor...
Forum: Utilities
Last Post: PhilOfPerth
03-11-2026, 12:48 AM
» Replies: 11
» Views: 378
Quick Sort for variable l...
Forum: Utilities
Last Post: SMcNeill
03-10-2026, 03:14 PM
» Replies: 3
» Views: 108
Ready for Easter!
Forum: Holiday Code
Last Post: bplus
03-10-2026, 12:15 PM
» Replies: 0
» Views: 61

 
  option explicit
Posted by: Unseen Machine - 01-23-2026, 02:55 AM - Forum: General Discussion - Replies (20)

How many of you guys use this?

Why do you use it if you do?

To me, its a weird but maybe compile side reasons reducing bloat. But if thats not the reason then WHY as to me it just adds a whole extra layer on a language that's supposed to be basic! And as an example...

Code: (Select All)
OPTION _EXPLICIT

      kb$ =inkeys$

THIS ERRORS! And this error took me a couple of mins to trace to this command! So i ask, can we add to the DEBUGGER something that says "Variable not defined before use - Option Explicit Error" or something as if it baffled me, newbies got no chance!

also at the devs the error that this reports isnt very informative either

Code: (Select All)
declare somesilly library

SUB Nothing

end declare

Surely the parser should pick up the somesilly and not inference the declare command as having been already declared!

It's minor BS like this that adds to the "WTF" and people not wanting to play with QB64PE! 

Also, as it has 32 and 64 bit variants, why not call it QBasic PE - removes the "Oh its only for 64 bit systems" thought from a possible user who doesnt care to dig deeper.

Whinge, whinge whinge!

Unseen

Print this item

  _MAPTRIANGLE EXAMPLES
Posted by: NakedApe - 01-23-2026, 02:45 AM - Forum: Help Me! - Replies (22)

I'd like to learn more tricks that I can do with QBPE since I enjoy writing action games. I've got a pretty good handle on most things now after hanging out here for a few years, but I don't really have much of a clue as to how to use _MAPTRIANGLE to good effect. If someone with the knowledge could post a few examples of simple things to do with that command I'd be thankful.

I know @Magdha you've posted a few 3D progs recently, so maybe you'd be interested in dumbing down a couple little ditties for me, or maybe @bplus or @SMcNeill. I would be a most appreciative primate.   Wink

Ted

Print this item

  NumType
Posted by: SMcNeill - 01-22-2026, 06:24 PM - Forum: SMcNeill - No Replies

An over-engineered routine which tells you if a string is a number. 
It also then tells you why it's not a number, if it's not a number.
It then also tells you exactly what type of numbers the number might be, if it's a number.

Code: (Select All)
Screen _NewImage(550, 600, 32)
For i = 0 To 255
i$ = Chr$(i)
o$ = i$ + "="
If IsUpper(i$) Then Print o$ + "Upper",
If IsLower(i$) Then Print o$ + "lower",
If IsAlpha(i$) Then Print o$ + "alpha",
Next

Sleep
Cls

Const limit = 17

Dim test(limit) As String

Data "123a.3","-123.456","--234","1.23E15","123","dogfood","678.965","54678","-987134","1E15"
Data "&HFF","&B1001111","&O17","&HFF&&","&B12000222","1.E-12","1.F3000"

For i = 1 To limit
Read test(i)
Next


For i = 1 To limit
Print "TEST #"; i; ": "; test(i) + " "
result = NumType(test(i))
If result = 0 Then Print "INVALID: "; NumErr$ Else Print "IS A NUMBER: ";
If result And 1 Then Print "Valid Unsigned Bit. ";
If result And 2 Then Print "Valid Unsigned Byte. ";
If result And 4 Then Print "Valid Unsigned Integer. ";
If result And 8 Then Print "Valid Unsigned Long. ";
If result And 16 Then Print "Valid Unsigned Integer64. ";
If result And 32 Then Print "Valid Unsigned Bit. ";
If result And 64 Then Print "Valid Signed Byte. ";
If result And 128 Then Print "Valid Signed Integer. ";
If result And 256 Then Print "Valid Signed Long. ";
If result And 512 Then Print "Valid Signed Integer64. ";
If result And 1024 Then Print "Valid Single. ";
If result And 2048 Then Print "Valid Double. ";
If result And 4096 Then Print "Valid Float. ";
If result And 8192 Then Print "Valid Unsigned Offset. ";
If result And 16384 Then Print "Valid Signed Offset. ";
Print
Sleep
Next

Function IsUpper (s As String * 1)
If Asc(s) = _Clamp(Asc(s), 65, 90) Then IsUpper = _TRUE
End Function

Function IsLower (s As String * 1)
If Asc(s) = _Clamp(Asc(s), 97, 122) Then IsLower = _TRUE
End Function

Function IsAlpha (s As String * 1)
If (Asc(s) Or 32) = _Clamp(Asc(s) Or 32, 97, 122) Then IsAlpha = _TRUE
End Function

Function NumType~% (text$)
Shared NumErr$
Dim TempNum As Integer
temp$ = UCase$(_Trim$(text$))
NumErr$ = "": TempNum = 0

'First look for manually assigned types
r1$ = Right$(temp$, 1): r = 1
r2$ = Left$(Right$(temp$, 2), 1)
Select Case r1$
Case "`"
TestFor = 1 'bit
Case "%"
If r2$ = "%" Then
r = 2
TestFor = 2 'byte
Else
TestFor = 3 'integer
End If
Case "&" 'long, int64, offset
If r2$ = "&" Then
r = 2
TestFor = 5 'int64
ElseIf r2$ = "%" Then
r = 2
TestFor = 9 'offset
Else
TestFor = 4 'long
End If
Case "!" 'single
TestFor = 6
Case "#" 'double, float
If r2$ = "#" Then
r = 2
TestFor = 8 'float
Else
TestFor = 7 'double
End If
Case Else 'there's no set type
TestFor = 0
r = 0
End Select


temp$ = Left$(temp$, Len(temp$) - r) 'strip off the type symbol
Select Case TestFor
Case 1 To 5, 9
r$ = Right$(temp$, 1)
If r$ = "~" Then Unsigned = -1: temp$ = Left$(temp$, Len(temp$) - 1)
End Select

'check for valid prefixes

l$ = Left$(temp$, 2)
Select Case l$
Case "&H"
temp$ = Mid$(temp$, 3)
For i = 1 To Len(temp$)
t$ = Mid$(temp$, i, 1)
Select Case t$
Case "0" To "9", "A" To "F" 'valid
Case Else
NumErr$ = NumErr$ + "Invalid Character (" + t$ + ") encountered. "
End Select
Next
If NumErr$ <> "" Then Exit Function
GoTo evaluateintegers
Case "&B"
temp$ = Mid$(temp$, 3)
For i = 1 To Len(temp$)
t$ = Mid$(temp$, i, 1)
Select Case t$
Case "0", "1" 'only valid bit characters
Case Else
NumErr$ = NumErr$ + "Invalid Character (" + t$ + ") encountered. "
End Select
Next
If NumErr$ <> "" Then Exit Function
GoTo evaluateintegers
Case "&O"
temp$ = Mid$(temp$, 3)
For i = 1 To Len(temp$)
t$ = Mid$(temp$, i, 1)
Select Case t$
Case "0" To "7" 'only valid oct characters
Case Else
NumErr$ = NumErr$ + "Invalid Character (" + t$ + ") encountered. "
End Select
Next
If NumErr$ <> "" Then Exit Function
GoTo evaluateintegers
End Select


'Test for easy integers
'First check for positive/negative values; flag for invalid cases of multiple negation.
If Mid$(temp$, 1, 1) = "-" Then
negative = -1: temp$ = Mid$(temp$, 2) 'strip off the initial negative
ElseIf Mid$(temp$, 1, 1) = "+" Then
temp$ = Mid$(temp$, 2) 'strip off the initial positive
End If

For i = 1 To Len(temp$)
If Mid$(temp$, i, 1) = "-" Then minus = minus + 1
If Mid$(temp$, i, 1) = "+" Then plus = plus + 1
If Mid$(temp$, i, 1) = "." Then period = period + 1 'Go ahead and check for multiple periods while we're at it.
If Mid$(temp$, i, 1) = "E" Or Mid$(temp$, i, 1) = "D" Then
Exponent = Exponent + 1
If Mid$(temp$, i + 1, 1) = "-" Or Mid$(temp$, i + 1, 1) = "+1" Then ExponentSign = -1
End If
Next

If period = 0 And Exponent = 0 Then 'we should only have integers to process
For i = 1 To Len(temp$)
t$ = Mid$(temp$, i, 1)
If t$ < "0" Or t$ > "9" Then NumErr$ = NumErr$ + "Invalid Character (" + t$ + ") encountered. ": Exit Function
Next
GoTo evaluateintegers
End If

'At this point forward, we should only have REAL numbers to process

If Exponent > 1 Then NumErr$ = NumErr$ + "Multiple E/D exponent characters in string. ": Exit Function

If ExponentSign = 0 Then
If minus Then NumErr$ = NumErr$ + "Multiple negative signs (-) encountered. ": Exit Function
If plus Then NumErr$ = NumErr$ + "Multiple negative signs (-) encountered. ": Exit Function
Else
If minus > 1 Then NumErr$ = NumErr$ + "Multiple negative signs (-) encountered. ": Exit Function
If plus > 1 Then NumErr$ = NumErr$ + "Multiple negative signs (-) encountered. ": Exit Function
End If

If period > 1 Then NumErr$ = NumErr$ + "Multiple decimal points (.) encountered. ": Exit Function

If Exponent And period Then
e = InStr(temp$, "E")
If e = 0 Then e = InStr(temp$, "D")
If e = 0 Then e = InStr(temp$, "F")
p = InStr(temp$, ".")
If p > e Then NumErr$ = NumErr$ + "Decimal points (.) AFTER E/D/F exponent encountered. ": Exit Function
End If


For i = 1 To Len(temp$)
t$ = Mid$(temp$, i, 1)
Select Case t$
Case "0" To "9", "-", "+", ".", "D", "E", "F" 'we should have validated all these characters earlier
Case Else 'so anything else is invalid
NumErr$ = NumErr$ + "Invalid Character (" + t$ + ") encountered. ": Exit Function
End Select
Next

If NumErr$ <> "" Then Exit Function


'We should've passed all the error checking by this point -- I think...


evaluateintegers:
t## = Val(text$)

'first compare for all types
If Int(t##) = t## Then
If t## = -1 Or t## = 0 Then TempNum = TempNum Or 32 'signed bit
If t## >= -128 And t## <= 127 Then TempNum = TempNum Or 64 'signed byte
If t## >= -32768 And t## <= 32767 Then TempNum = TempNum Or 128 'signed integer
If t## >= -2147483648 And t## <= 2147483647 Then TempNum = TempNum Or 256 'signed long
If t## >= -9223372036854775808 And t## <= 9223372036854775807 Then
TempNum = TempNum Or 512 'signed integer64
TempNum = TempNum Or 16384 'signed offset
End If
If t## = 1 Or t## = 0 Then TempNum = TempNum Or 1 'unsigned bit
If t## >= 0 And t## <= 255 Then TempNum = TempNum Or 2 'unsigned byte
If t## >= 0 And t## <= 65535 Then TempNum = TempNum Or 4 'unsigned integer
If t## >= 0 And t## <= 4294967295 Then TempNum = TempNum Or 8 'unsigned long
If t## >= 0 And t## <= 18446744073709551615 Then
TempNum = TempNum Or 16 'unsigned integer64
TempNum = TempNum Or 8192 'unsigned offset
End If
End If

If t## >= -2.802597F45 And t## <= 3.402823F+38 Then
TempNum = TempNum Or 1024 'single
End If
If t## >= -4.490656458412465F324 And t## <= 1.797693134862310F+308 Then TempNum = TempNum Or 2048 'double
If t## >= -1.18F4932 And t## <= 1.18F+4932 Then TempNum = TempNum Or 4096 'float

If r Then 'we have specific suffix; only decide if the value is valid for it
TempNum = 0
If Not Unsigned Then 'unsigned
Select Case TestFor
Case 1
If t## = -1 Or t## = 0 Then TempNum = 32 'signed bit
Case 2
If t## >= -128 And t## <= 127 Then TempNum = 64 'signed byte
Case 3
If t## >= -32768 And t## <= 32767 Then TempNum = 128 'signed integer
Case 4
If t## >= -2147483648 And t## <= 2147483647 Then TempNum = 256 'signed long
Case 5, 9
If t## >= -9223372036854775808 And t## <= 9223372036854775807 Then
If TestFor = 5 Then
TempNum = 512 'signed integer64
Else
TempNum = 16384 'signed offset
End If
End If
Case 6
If t## >= -2.802597F-45 And t## <= 3.402823F+38 Then TempNum = 1024 'single
Case 7
If t## >= -4.490656458412465F-324 And t## <= 1.797693134862310F+308 Then TempNum = 2048 'double
Case 9
If t## >= -1.18F-4932 And t## <= 1.18F+4932 Then TempNum = 4096 'float
End Select
Else
Select Case TestFor
Case 1
If t## = 0 Or t## = 1 Then TempNum = 1 'unsigned bit
Case 2
If t## >= 0 And t## <= 255 Then TempNum = 2 'unsigned byte
Case 3
If t## >= 0 And t## <= 65535 Then TempNum = 4 'unsigned integer
Case 4
If t## >= 0 And t## <= 4294967295 Then TempNum = 8 'unsigned long
Case 5, 9
If t## >= 0 And t## <= 18446744073709551615 Then
If TestFor = 5 Then
TempNum = 16 'unsigned integer64
Else
TempNum = 8192 'unsigned offset
End If
End If
End Select
End If
If TempNum = 0 Then NumErr$ = "Invalid Suffix. "
End If
NumType = TempNum
End Function


I've shared this before on the forums, but it needed a little upgrade to also accept the "F" scientific notation style for _FLOATS, so here's the updated and latest version. This should tell you definitely if a string is a number or not.

Wink

Print this item

  Nth problem with hardware images
Posted by: Ikerkaz - 01-22-2026, 05:02 PM - Forum: Help Me! - Replies (9)

I know, I know. The problem is ME; I'm a complete idiot trying to understand hardware images... 
Why isn't something as simple as this working? What on earth am I doing wrong? My apologies to everyone, and thank you for your patience Sad

Code: (Select All)
Option _Explicit
Randomize Timer

Dim As Long hardwareScreen, workScreen, Nave, Fondo, i

Screen _NewImage(1920, 1080, 32)
_FullScreen , _Smooth

workScreen = _NewImage(1920, 1080, 32)
Fondo = _LoadImage("C:\STRC\Espacio\3.jpg")
Nave = _LoadImage("C:\STRC\Naves\Constitution2\nave.png")

_PutImage (0, 0)-Step(1920, 1080), Fondo, workScreen

For i = 1 To 100
    _PutImage (Rnd * 1920, Rnd * 1080), Nave, workScreen
Next

hardwareScreen = _CopyImage(workScreen, 33)

_Dest 0
_DisplayOrder _Hardware

_PutImage (0, 0), hardwareScreen
_Display
End

Print this item

  Trackword Puzzle Solver (InForm) Program - Referenced to Elsewhere
Posted by: Magdha - 01-22-2026, 03:30 PM - Forum: In-Form - Replies (2)



Attached Files Thumbnail(s)
   
Print this item

  IsAlpha etc
Posted by: PhilOfPerth - 01-21-2026, 10:36 PM - Forum: Help Me! - Replies (10)

Do we have the equivalents of the IsAlpha, IsUpper, IsLower, and IsNum in QBPE? I have searched but could only find them in C++.
If not, could they be easily implemented? It seems to me that it would be fairly simple, and would be quite useful.

Print this item

  Strings - Numbers
Posted by: Kernelpanic - 01-20-2026, 10:29 PM - Forum: General Discussion - No Replies

Regarding converting string segments to numbers: Strings in numbers

I've looked at it again, and it only really gets complicated when dealing with two-digit numbers. I also tried passing the data to a procedure – the data transfer isn't the problem, only the result.  Rolleyes

The program works as long as you don't go beyond the single-digit range. Maybe this will give someone some ideas.

Code: (Select All)

'ABCDEFGHIJ und 1234567890 tauschen die Plaetze: BCD und 234 -- 26. Dez. 2025
'Erweitert flexible Eingaben - 17. Jan. 2026

Option _Explicit

Dim As String strBuchstaben, strZahlen, strTeilbuchstaben, strTeilzahlen
Dim As String strNeuBuchstaben, strNeuZahlen
Dim As Integer position, bereich

strBuchstaben = "ABCDEFGHIJ"
strZahlen = "1234567890"

Locate 2, 3
Print "Buchstaben - Zahlentausch"
Locate 3, 3
Print "========================="

Locate 5, 3
Print strBuchstaben
Locate 6, 3
Print strZahlen

NeueEingabe:
'Position und Bereich des Austauschs flexibel
Locate 8, 3
Input "Position      : ", position
Locate 9, 3
Input "Bereich(max 3): ", bereich

'Eingabefehler abfangen
If position < 1 Or position > 10 Then

  Cls
  Beep: Print
  Print "Position zwischen 1 bis 10"
  Sleep 2
  GoTo NeueEingabe
End If

'Teilstring von beiden extrahieren. Von Position 2 an,
'3 Positionen. Also: BCD + 234
strTeilbuchstaben = Mid$(strBuchstaben, position, bereich)
Locate 11, 3
Print strTeilbuchstaben

strTeilzahlen = Mid$(strZahlen, position, bereich)
Locate 12, 3
Print strTeilzahlen

'In Buchstaben Zahlen einfuegen. Angabe der Position reicht!
strNeuBuchstaben = Left$(strBuchstaben, position) + strTeilzahlen + Mid$(strBuchstaben, 5)
Locate CsrLin + 2, 3
Print strNeuBuchstaben

'Umgekehrt: Buchstaben in Zahlen
strNeuZahlen = Left$(strZahlen, position) + strTeilbuchstaben + Mid$(strZahlen, 5)
Locate CsrLin + 1, 3
Print strNeuZahlen

End

Print this item

Question Finaly, qb64pe-4.3.0 could work on macOS 10.13.6 (High Sierra) !
Posted by: Fifi - 01-20-2026, 02:53 PM - Forum: General Discussion - No Replies

@a740g @SMcNeill @RhoSigma

Hello the qb64pe devs' team.

As I mentioned in a previous post, I couldn't install qb64pe version 4.3.0 on my 27-inch iMac running macOS 10.13.6 because its setup_osx.command uses a newer version of gcc that isn't available with Xcode 10.1, making it unusable with this version of macOS (High Sierra). 

True and False!

What's False?

In fact, this version of qb64pe (4.3.0) could work under High Sierra as you can see on my High Sierra desktop' screen-shot below showing both the macOS and qb64pe "about" panels (above my personnal iMac Dev's wallpaper) !

[Image: High-Sierra-Screen-Shot.png]

But there's a trick to making it work! 

What's True

The failled install is due to a "setting" in the compilation method that calls the wrong compiler version. 

What's the trick?

Note:
My three 27-inch iMacs are well-configured with a 3.4 GHz i7 processor, 32 GB of RAM, and one SSD of varying capacities. My Mac Mini 2 Server, on the other hand, is equipped with a 2.4 GHz i7 processor, 16 GB of RAM, and a 2 TB SSD. These are older, inexpensive machines, all manufactured in 2012. Yet, they work perfectly, just like they did on day one, and that's precisely why I've only used Apple systems since my retirement: their reliability is undeniable! And noaday, you can find them used for between $250 and $500, depending on their CPU, GPU, RAM, and SSD configuration.

Since I'm real stubborn, and because of the numerous paid programs I've installed on macOS High Sierra (which is the reason I keep it as my OS of choice), I spent this last weekend downloading all versions of qb64pe from 3.0.0 to 4.3.0, then installing them all (each in a separate directory) and testing them all on my development 27-inch iMac (with its fast internal  Crucial 4Tb SDD), including version 4.2.0, which installed and works like a charm! 

So, I decided to compil the qb64pe.bas file located in the source directory of the version 4.3.0 directly from the IDE of the version 4.2.0 using the option "Output EXE to Source Folder" and lo and behold, not only the executable was created perfectly, but launched too! 

I then copied the 2 files (qb64pe and qb64pe_start.command,) which had been created in the "source" directory of qb64pe-4.3.0, into the main directory of this version (4.3.0), and now qb64pe-4.3.0 could work on macOS High Sierra if you can also solve the Second problem below Tongue

Therefore, I don't know which parameter(s) were modified, nor where they are located in the compilation method of this version 4.3.0 compared to that of qb64pe 4.2.0 (ending with a nice "Launching 'QB64-PE'), which causes the execution of the 4.3.0 bash installation script to end with a subset of the following error messages:


Code: (Select All)
errorerror: : invalidinvalid  valuevalue  'gnu++20''gnu++20'  inin  '-std=gnu++20''-std=gnu++20'
notenote: : useuse  'c++98''c++98'  oror  'c++03''c++03'  forfor  'ISO C++ 1998 with amendments''ISO C++ 1998 with amendments'  standardstandard
notenote: : useuse  'gnu++98''gnu++98'  oror  'gnu++03''gnu++03'  forfor  'ISO C++ 1998 with amendments and GNU extensions''ISO C++ 1998 with amendments and GNU extensions'  standardstandard
notenote: : use use'c++11'  'c++11'for  for'ISO C++ 2011 with amendments'  'ISO C++ 2011 with amendments'standard standard
note: use note'gnu++11':  foruse  'ISO C++ 2011 with amendments and GNU extensions''gnu++11'  standardfor
'ISO C++ 2011 with amendments and GNU extensions' standardnote
: use note'c++14':  foruse  'ISO C++ 2014 with amendments''c++14'  standardfor
'ISO C++ 2014 with amendments' standardnote
: use note'gnu++14':  foruse  'ISO C++ 2014 with amendments and GNU extensions''gnu++14'  standardfor
'ISO C++ 2014 with amendments and GNU extensions' standard
note: usenote : 'c++17' usefor  'c++17''ISO C++ 2017 with amendments'  forstandard 'ISO C++ 2017 with amendments'
standard
note: noteuse:  'gnu++17'use  for'gnu++17'  for'ISO C++ 2017 with amendments and GNU extensions'  'ISO C++ 2017 with amendments and GNU extensions'standard standard
notenote: : useuse  'c++2a''c++2a'  forfor  'Working draft for ISO C++ 2020''Working draft for ISO C++ 2020'  standardstandard
notenote: : error: useuse  'gnu++2a''gnu++2a'  invalidforfor  'Working draft for ISO C++ 2020 with GNU extensions''Working draft for ISO C++ 2020 with GNU extensions'value  standardstandard'gnu++20'
in '-std=gnu++20'
note: use 'c++98' or 'c++03' for 'ISO C++ 1998 with amendments' standard
note: use 'gnu++98' or 'gnu++03' for 'ISO C++ 1998 with amendments and GNU extensions' standard
note: use 'c++11' for 'ISO C++ 2011 with amendments' standard
note: use 'gnu++11' for 'ISO C++ 2011 with amendments and GNU extensions' standard
note: use 'c++14' for 'ISO C++ 2014 with amendments' standard
note: use 'gnu++14' for 'ISO C++ 2014 with amendments and GNU extensions' standard
note: use 'c++17' for 'ISO C++ 2017 with amendments' standard
note: use 'gnu++17' for 'ISO C++ 2017 with amendments and GNU extensions' standard
note: use 'c++2a' for 'Working draft for ISO C++ 2020' standard
note: use 'gnu++2a' for 'Working draft for ISO C++ 2020 with GNU extensions' standard
make: *** [internal/c/libqb/src/threading.o] Error 1
make: *** Waiting for unfinished jobs....
make: *** [internal/c/qbx.o] Error 1
make: *** [internal/c/libqb_make_00010100.o] Error 1
Compilation of QB64-PE failed!

So, could you please fix this problem by checking from a terminal session what macOS version "cw-vers -productVersion"
and what Xcode version "pkgutil --pkg-info=com.apple.pkg.CLTools_Executables" are running, 
then choosing the right Xcode command line call to use accordingly?

Second problem:

If Qb64PE 4.3.0 can load, it cannot compile and returns the error message: C++ Compilation failed (Check ./internal/temp/compilelog.txt)

Code: (Select All)
c++  -std=gnu++20 -fno-strict-aliasing -Wno-conversion-null -I./internal/c/libqb/include -I./internal/c/parts/core/freeglut/include -I./internal/c/parts/core/glew/include -DDEPENDENCY_NO_SOCKETS -DDEPENDENCY_NO_PRINTER -DDEPENDENCY_NO_ICON -DDEPENDENCY_NO_SCREENIMAGE internal/c/libqb.cpp -c -o internal/c/libqb_make_00000000.o
error: invalid value 'gnu++20' in '-std=gnu++20'
note: use 'c++98' or 'c++03' for 'ISO C++ 1998 with amendments' standard
note: use 'gnu++98' or 'gnu++03' for 'ISO C++ 1998 with amendments and GNU extensions' standard
note: use 'c++11' for 'ISO C++ 2011 with amendments' standard
note: use 'gnu++11' for 'ISO C++ 2011 with amendments and GNU extensions' standard
note: use 'c++14' for 'ISO C++ 2014 with amendments' standard
note: use 'gnu++14' for 'ISO C++ 2014 with amendments and GNU extensions' standard
note: use 'c++17' for 'ISO C++ 2017 with amendments' standard
note: use 'gnu++17' for 'ISO C++ 2017 with amendments and GNU extensions' standard
note: use 'c++2a' for 'Working draft for ISO C++ 2020' standard
note: use 'gnu++2a' for 'Working draft for ISO C++ 2020 with GNU extensions' standard
make: *** [internal/c/libqb_make_00000000.o] Error 1

So, could you please fix this second problem that should be done with the right installation as requested above.

I bet this would help for future qb64pe releases running old macOS releases too.

Cheers.
Fifi

Print this item

  Thought I would share something interesting
Posted by: doppler - 01-20-2026, 10:59 AM - Forum: General Discussion - Replies (8)

https://hackaday.com/2026/01/19/basic-on...tor-again/

It's only interesting not because:  1. Runs on an HP calculator 2. Runs via Python

Because it's Basic.  QB45 may have started way back when. QB64pe has taken a whole other leap forward.  IMHO, QB64pe is not an emulation of QB45 any more (Really was it ever ??), it's a whole other animal in it's own right.

QB45 will never be obsolete, neither will be QB64pe. We already lost one founding member of the Basic language.  What they created will live on.

Print this item

Question qb64pe's translation of .bas to .cpp ?
Posted by: Fifi - 01-20-2026, 04:37 AM - Forum: General Discussion - Replies (6)

Hello,

I've three little questions :

qb64pe translates its basic code (.bas) into C++ code (.cpp) witch then is compiled using GCC (or Mingw with windows).

1) what tool use qb64pe to translate the .bas code to the .cpp code (e.g. BaCon, NBCX, etc) ?

2) should I still use a specific parameter (-z) when I start qb64pe from the command line to save the .cpp translation ?

3) where (in what qb64pe sub directory) can I find the translated .ccp file to take a look at its C++ translation : i.e. hello.bas -> hello.cpp ?

TIA for your response.

Cheers.
Fifi

Print this item