home.social

#freepascal — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #freepascal, aggregated by home.social.

fetched live
  1. Playing with #FreePascal in #CompilerExplorer.

    Lines 22 and 23 produce less machine code than lines 25 and 26, yet end up with the same result - trimming the last character from the last item in a TStringList.

  2. Playing with #FreePascal in #CompilerExplorer.

    Lines 22 and 23 produce less machine code than lines 25 and 26, yet end up with the same result - trimming the last character from the last item in a TStringList.

  3. So es ist wieder Zeit ein wenig code zu smithen.... twitch.tv/roughnight86
    Ich baue weiter an meinem #freepascal spiel mit #raylib mal sehen was heute fertig wird

  4. So es ist wieder Zeit ein wenig code zu smithen.... twitch.tv/roughnight86
    Ich baue weiter an meinem #freepascal spiel mit #raylib mal sehen was heute fertig wird

  5. Grok does not have desktop app. So I produced one with Grok :)

    5.5MB binary!
    28MB RAM

    Thanks to and

  6. Grok does not have desktop app. So I produced one with Grok :)

    5.5MB binary!
    28MB RAM

    Thanks to #Lazarus and #FreePascal

  7. So my game/engine has now all the stuff I need to actually start with content. Quadtree rendering and collision checks, Ysorting, scene switching. All done with #freepascal and #raylib ... Pascal is not dead! :D #gamedev

  8. So my game/engine has now all the stuff I need to actually start with content. Quadtree rendering and collision checks, Ysorting, scene switching. All done with #freepascal and #raylib ... Pascal is not dead! :D #gamedev

  9. Once again I'm live and smithing code with freepascal and raylib... today I want to be able to switch scenes, generate random dungeons and maybe add some enemies as well. Come and say hi.
    twitch.tv/roughnight86 #gamedev #freepascal #raylib

  10. Once again I'm live and smithing code with freepascal and raylib... today I want to be able to switch scenes, generate random dungeons and maybe add some enemies as well. Come and say hi.
    twitch.tv/roughnight86 #gamedev #freepascal #raylib

  11. The aftermath of last nights stream... I have working TMX importer with multiple layers and collision objects. My camera and collisions are working correctly now... the next steps are refactoring some stuff, enemys and ysorting
    #raylib #freepascal #gamedev

  12. The aftermath of last nights stream... I have working TMX importer with multiple layers and collision objects. My camera and collisions are working correctly now... the next steps are refactoring some stuff, enemys and ysorting
    #raylib #freepascal #gamedev

  13. Ich bin live auf twitch.tv/roughnight86 um mit #freepascal und #raylib an meiner "engine" und meinem Game zu bauen... Zeit für bisschen Codesmithing

  14. Ich bin live auf twitch.tv/roughnight86 um mit #freepascal und #raylib an meiner "engine" und meinem Game zu bauen... Zeit für bisschen Codesmithing

  15. I’ve decided to rewrite my game, *Dungeons of Cydonia*, in FreePascal using Raylib. I wanted to revisit the game anyway, so I thought I’d turn it into a challenge: can I release a game without using an engine? Status: The Tiled map importer is finished, as is basic player movement.
    #gamedev #freepascal #raylib
    roughnight.itch.io/dungeons-of

  16. I’ve decided to rewrite my game, *Dungeons of Cydonia*, in FreePascal using Raylib. I wanted to revisit the game anyway, so I thought I’d turn it into a challenge: can I release a game without using an engine? Status: The Tiled map importer is finished, as is basic player movement.
    #gamedev #freepascal #raylib
    roughnight.itch.io/dungeons-of

  17. However, in fixing this I found a different bug. But I don't think it's a problem with my code.

    I think #FreePascal's ParamStr() is using \ as an escape character in DOS in certain situations, specifically before a space.

    For example:

    ctran catfile.cat -e c:\sibosdk\include\ -x -c -g

    ...will set the external cat path to c:\sibosdk\include\ -x.

    It might also do this in Windows, but I haven't tested it yet.

    I need to do more testing, but are any other #Pascal users finding this?

    #ObjectPascal

  18. However, in fixing this I found a different bug. But I don't think it's a problem with my code.

    I think #FreePascal's ParamStr() is using \ as an escape character in DOS in certain situations, specifically before a space.

    For example:

    ctran catfile.cat -e c:\sibosdk\include\ -x -c -g

    ...will set the external cat path to c:\sibosdk\include\ -x.

    It might also do this in Windows, but I haven't tested it yet.

    I need to do more testing, but are any other #Pascal users finding this?

    #ObjectPascal

  19. Well that's handy! (Formatting added by me.)

    Free Pascal supports the use of long filenames in the system unit and the Dos unit also for go32v2 executables. The system unit contains the boolean variable LFNSupport. If it is set to True then all system unit functions and Dos unit functions will use long file names if they are available. This should be so on Windows 95 and 98, but not on Windows NT or Windows 2000. The system unit will check this by calling dos function 71A0h and checking whether long filenames are supported on the C: drive.

    It is possible to disable the long filename support by setting the LFNSupport variable to False.

    freepascal.org/docs-html/user/

    #FreePascal

  20. Well that's handy! (Formatting added by me.)

    Free Pascal supports the use of long filenames in the system unit and the Dos unit also for go32v2 executables. The system unit contains the boolean variable LFNSupport. If it is set to True then all system unit functions and Dos unit functions will use long file names if they are available. This should be so on Windows 95 and 98, but not on Windows NT or Windows 2000. The system unit will check this by calling dos function 71A0h and checking whether long filenames are supported on the C: drive.

    It is possible to disable the long filename support by setting the LFNSupport variable to False.

    freepascal.org/docs-html/user/

    #FreePascal

  21. I've decided to add a "DOS Mode" switch to #CTRAN. That way I can have an explicit switch for 8.3 vs long file names, and forcing semicolon path separators vs native ones.

    DOS Mode would be automatically enabled when running on DOS (via go32v2). Running on other OSes will allow long file names and use native path separators unless the DOS Mode switch is used.

    I'm not sure what to do about #FreeDOS's long file name support. I don't know if #FreePascal has the ability to detect file system features like case sensitivity and long file name support without trial-and-error?

  22. I've decided to add a "DOS Mode" switch to #CTRAN. That way I can have an explicit switch for 8.3 vs long file names, and forcing semicolon path separators vs native ones.

    DOS Mode would be automatically enabled when running on DOS (via go32v2). Running on other OSes will allow long file names and use native path separators unless the DOS Mode switch is used.

    I'm not sure what to do about #FreeDOS's long file name support. I don't know if #FreePascal has the ability to detect file system features like case sensitivity and long file name support without trial-and-error?

  23. New video: a tour through the current state of KRAFT, my open source 3D physics engine in pure Object Pascal (FPC + Delphi, zlib licensed).

    Now with signed distance field collisions: rigid bodies can collide with anything you can write a distance function for, including heightfield terrain. Plus ragdolls, joints, vehicles, meshes and more.

    📺 youtu.be/qdV6Wlh-qcQ
    💾 github.com/BeRo1985/kraft
    💾 git.rosseaux.net/BeRo1985/kraft

    #gamedev #physics #opensource #pascal #freepascal #delphi

  24. New video: a tour through the current state of KRAFT, my open source 3D physics engine in pure Object Pascal (FPC + Delphi, zlib licensed).

    Now with signed distance field collisions: rigid bodies can collide with anything you can write a distance function for, including heightfield terrain. Plus ragdolls, joints, vehicles, meshes and more.

    📺 youtu.be/qdV6Wlh-qcQ
    💾 github.com/BeRo1985/kraft
    💾 git.rosseaux.net/BeRo1985/kraft

    #gamedev #physics #opensource #pascal #freepascal #delphi

  25. RE: oldbytes.space/@thelastpsion/1

    And the results are in!

    1. Pico C
    2. Rust
    3. Free Pascal
    4. Joint with Pico C++, MicroZig and Yarg.

    So, what am I going to do? Well, I'm leaning towards porting the existing Arduino C code to the Pico C SDK. I'm currently using one class for encapsulation and abstraction, but I could replace that with structs and static functions. I'm not a great C programmer, but I'm pretty comfortable with it, so it makes sense

    However, before I do that, I see a bigger challenge of getting a good setup without using VS Code. I've been using #NeoVim for a while now, and I'd like to get a comfortable setup using that on #Linux.

    So, I'm going to try to build Blinky projects for at least Pico C, Rust and Free Pascal, using Linux and NeoVim. Hopefully this will give me a better feel for how well these languages actually suit me. I've never done any Rust before, either, so that's going to be quite the learning curve!

    If I have time, I'm going to give Yarg a go, too, because I think the premise is really cool. If I'm on a roll, I'll try #MicroZig too.

    And if I really feel like I have the capacity, I'll port the code to one of these other languages.

    I'm acutely aware of all the other projects I've given myself to do, such as the SIBO SDK and other small Psion-related projects, not to mention $dayjob and $reallife. So we'll see how things go!

    #Pascal #FreePascal #ObjectPascal #RustLang #YargLang #RaspberryPiPico #PiPico #PiPico2 #RP2040 #RP2350

  26. RE: oldbytes.space/@thelastpsion/1

    And the results are in!

    1. Pico C
    2. Rust
    3. Free Pascal
    4. Joint with Pico C++, MicroZig and Yarg.

    So, what am I going to do? Well, I'm leaning towards porting the existing Arduino C code to the Pico C SDK. I'm currently using one class for encapsulation and abstraction, but I could replace that with structs and static functions. I'm not a great C programmer, but I'm pretty comfortable with it, so it makes sense

    However, before I do that, I see a bigger challenge of getting a good setup without using VS Code. I've been using #NeoVim for a while now, and I'd like to get a comfortable setup using that on #Linux.

    So, I'm going to try to build Blinky projects for at least Pico C, Rust and Free Pascal, using Linux and NeoVim. Hopefully this will give me a better feel for how well these languages actually suit me. I've never done any Rust before, either, so that's going to be quite the learning curve!

    If I have time, I'm going to give Yarg a go, too, because I think the premise is really cool. If I'm on a roll, I'll try #MicroZig too.

    And if I really feel like I have the capacity, I'll port the code to one of these other languages.

    I'm acutely aware of all the other projects I've given myself to do, such as the SIBO SDK and other small Psion-related projects, not to mention $dayjob and $reallife. So we'll see how things go!

    #Pascal #FreePascal #ObjectPascal #RustLang #YargLang #RaspberryPiPico #PiPico #PiPico2 #RP2040 #RP2350

  27. vkcube running on 64-bit RISC-V Alpine Linux in my PasRISCV Emulator in turn with the Vulkan-based PasRISCVEmu UI backend. #riscv #vulkan #ObjectPascal #FreePascal #Delphi
    @riscv @vulkan

  28. vkcube running on 64-bit RISC-V Alpine Linux in my PasRISCV Emulator in turn with the Vulkan-based PasRISCVEmu UI backend. #riscv #vulkan #ObjectPascal #FreePascal #Delphi
    @riscv @vulkan

  29. ​🚀 Lazarus 4.6 is officially out!

    ​This new bugfix release is built with FPC 3.2.2 and brings important stability improvements. Time to update your IDE! 🛠️

    ​Check out the release notes and download links here:
    forum.lazarus.freepascal.org/i

    ​#LazarusIDE #FreePascal #Pascal #Programming #OpenSource

  30. 🚀 NDXSQLite - Professional SQLite Library for Lazarus

    A modern, thread-safe SQLite wrapper for Free Pascal and Lazarus.

    Features:
    • Native SQLite3 API (no SQLDB dependency)
    • Thread-safe connection pooling
    • SQLCipher encryption (AES-256)
    • Schema migrations
    • TDataSet compatible
    • 149 console + 10 GUI examples
    • Cross-platform (Linux, Windows, macOS)

    MIT License - Feedback welcome!

    github.com/NDXDeveloper/NDXSQL

    #FreePascal #Lazarus #SQLite #Database #OpenSource #Programming #FOSS

  31. AOC 2025 day 3 is when I start to realize that my usual tool sets in #Pascal or #Go have a lot of string handling functions that I just don't see in #Forth. I'm building up some tools and have a few competing versions of tfunctions that either take different approaches, use different parameter formats, and/or return formats. But I don't want to re-implement the left, right, mid string functions without being sure that's the way to go.

    I'm getting a lot of "off by one" errors.

    Some are caused by my Pascal "it's a subscript, damn it" bias, and others by not using the right looping constructs.

    Strings in Forth are a beginning address and a length. The length can be a maximum size available or the length of the current string. There's no dynamism here, nothing like AnsiStrings in #FreePascal. There are some conventional buffers that the standard definitions will not touch (the PAD) and other transient buffers that can be used with care.

    'Tis what I signed up for. It's fun. Kinda. :)

    #programming

  32. AOC 2025 day 3 is when I start to realize that my usual tool sets in or have a lot of string handling functions that I just don't see in . I'm building up some tools and have a few competing versions of tfunctions that either take different approaches, use different parameter formats, and/or return formats. But I don't want to re-implement the left, right, mid string functions without being sure that's the way to go.

    I'm getting a lot of "off by one" errors.

    Some are caused by my Pascal "it's a subscript, damn it" bias, and others by not using the right looping constructs.

    Strings in Forth are a beginning address and a length. The length can be a maximum size available or the length of the current string. There's no dynamism here, nothing like AnsiStrings in . There are some conventional buffers that the standard definitions will not touch (the PAD) and other transient buffers that can be used with care.

    'Tis what I signed up for. It's fun. Kinda. :)

  33. Has anyone managed to get #NeoVim with #DAP and #gdb working with #Pascal?

    I'm using #LazyVim, so a lot of DAP is preconfigured using an Extra (dap.core). Unsurprisingly, Pascal is not one of the languages supported by default.

    #ObjectPascal #FreePascal #debugger

  34. Has anyone managed to get #NeoVim with #DAP and #gdb working with #Pascal?

    I'm using #LazyVim, so a lot of DAP is preconfigured using an Extra (dap.core). Unsurprisingly, Pascal is not one of the languages supported by default.

    #ObjectPascal #FreePascal #debugger

  35. A deep and wide exposure on internet and computing technologies in early 2000s left me with very specific design taste and UI choices

    Yes, I am looking for small XM music for this little baby. If anyone wants to compose something fresh up to 50KB and working with uFMOD plz leave a comment

    There will be a little gfx widget above with effects and scroller

    Yes, it’s a real ~80KB executable running on actual Windows 7 (works on XP too). #FreePascal makes it a bit more bearable to work with WinAPI

  36. A deep and wide exposure on internet and computing technologies in early 2000s left me with very specific design taste and UI choices

    Yes, I am looking for small XM music for this little baby. If anyone wants to compose something fresh up to 50KB and working with uFMOD plz leave a comment

    There will be a little gfx widget above with effects and scroller

    Yes, it’s a real ~80KB executable running on actual Windows 7 (works on XP too). #FreePascal makes it a bit more bearable to work with WinAPI

  37. Hey fediverse! Released 3nity-media: lightweight media player in Free Pascal/Lazarus + libmpv (Linux/Windows).

    Key features:

    Audio/video with hardware accel
    Playlists & 13k+ radio stations
    Equalizer & stream recording

    Open source GPL: snapcraft.io/3nity-media

    GitHub: github.com/NDXDeveloper/3nity-

    Try it? Feedback welcome!

    #FreePascal #OpenSource #Linux

  38. I've been working on an AD&D2e dungeon master toolkit gui application thingy in FreePascal/Lazarus this week. I'm using the Qt widget set, and documented a few obscure hacky things like loading embedded fonts and qss stylesheets baked into the executable, mapping LCL controls to their Qt equivalent, and accessing the underlying Qt bits of LCL components, etc....

    There isn't much info about this on the wiki's (probably because it's hacky AF and not a particularly intended use case) - in any event, have at it:

    gopher://gopher.linkerror.com:

    #freepascal #lazarus #dungeonsanddragons #dnd