Recent

Recent Posts

Pages: [1] 2 3 ... 10
1
I'm facing the same problem as described in the first post of this thread.

However, I'm not sure I understood what the solution was, despite the enthusiastic messages following the commit quoted by Martin.

Have I missed something or has the problem just not been solved yet?
2
General / Re: Compile/Convert Delphi project to MacOS
« Last post by Joseph on Today at 02:43:45 pm »
Thanks! It's probably the same issue I'm facing.

I'll continue the discussion there.
3
General / how to tweek fpmake to compile RTL?
« Last post by Key-Real on Today at 02:33:27 pm »
Code: Pascal  [Select][+][-]
  1. TOS=(
  2.         o_none,linux,go32v2,win32,os2,freebsd,beos,haiku,netbsd,
  3.         amiga,atari, solaris, qnx, netware, openbsd,wdosx,
  4.         palmos,macosclassic,darwin,emx,watcom,morphos,netwlibc,
  5.         win64,wince,gba,nds,embedded,symbian,nativent,iphonesim,
  6.         wii,aix,java,android,msdos,aros,dragonfly,win16,freertos,
  7.         zxspectrum,msxdos,ios,amstradcpc,sinclairql,wasi,human68k,ps1    <- this is my new Target
  8.       );
  9.  
  10.  
  11. OSStr : array[TOS] of string=(
  12.         'none','linux','go32v2','win32','os2','freebsd','beos','haiku','netbsd',
  13.         'amiga','atari','solaris', 'qnx', 'netware','openbsd','wdosx',
  14.         'palmos','macosclassic','darwin','emx','watcom','morphos','netwlibc',
  15.         'win64','wince','gba','nds','embedded','symbian','nativent',
  16.         'iphonesim', 'wii', 'aix', 'java', 'android', 'msdos', 'aros',
  17.         'dragonfly', 'win16', 'freertos', 'zxspectrum', 'msxdos',
  18.         'ios','amstradcpc','sinclairql','wasi','human68k','ps1'   <- also here
  19.       );
  20.    
  21.    OSSuffix : array[TOS] of string=(
  22.         '_none','_linux','_go32v2','_win32','_os2','_freebsd','_beos','_haiku','_netbsd',
  23.         '_amiga','_atari','_solaris', '_qnx', '_netware','_openbsd','_wdosx',
  24.         '_palmos','_macosclassic','_darwin','_emx','_watcom','_morphos','_netwlibc',
  25.         '_win64','_wince','_gba','_nds','_embedded','_symbian','_nativent',
  26.         '_iphonesim','_wii','_aix','_java','_android','_msdos','_aros',
  27.         '_dragonfly','_win16','_freertos','_zxspectrum','_msxdos',
  28.         '_ios','_amstradcpc','_sinclairql','_wasi','_human68k','_ps1'   <- also here
  29.       );
  30.  
  31.  
  32.  
  33.  
  34. OSCpuPossible : array[TOS,TCpu] of boolean =
  35.       (
  36.         { os          none   i386    m68k  ppc    sparc  x86_64 arm    ppc64  avr    armeb  armel  mips   mipsel mips64 misp64el jvm    i8086  aarch64 wasm32 sparc64 riscv32 riscv64 xtensa z80   loongarch64 }
  37.         { none  }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  38.         { linux }   ( false, true,  true,  true,  true,  true,  true,  true,  false, true,  false, true,  true,  true,  true,    false, false, true,   false, true,  true,   true,   true,  false, true),
  39.         { go32v2 }  ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  40.         { win32 }   ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  41.         { os2 }     ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  42.         { freebsd } ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
  43.         { beos }    ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  44.         { haiku }   ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  45.         { netbsd }  ( false, true,  true,  true,  true,  true,  true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  46.         { amiga }   ( false, false, true,  true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  47.         { atari }   ( false, false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  48.         { solaris } ( false, true,  false, false, true,  true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  49.         { qnx }     ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  50.         { netware } ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  51.         { openbsd } ( false, true,  false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  52.         { wdosx }   ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  53.         { palmos }  ( false, false, true,  false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  54.    { macosclassic } ( false, false, true,  true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  55.         { darwin }  ( false, true,  false, true,  false, true,  false, true,  false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
  56.         { emx }     ( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  57.         { watcom }  ( false, true,  false, false, false ,false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  58.         { morphos } ( false, false, false, true,  false ,false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  59.         { netwlibc }( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  60.         { win64   } ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true,   false, false, false,  false,  false, false, false),
  61.         { wince    }( false, true,  false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  62.         { gba    }  ( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  63.         { nds    }  ( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  64.         { embedded }( false, true,  true,  true,  true,  true,  true,  true,  true,  true , false, false, true , false, false,   false, true , true ,  true,  false, true,   true,   true,  true,  false),
  65.         { symbian } ( false, true,  false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  66.         { nativent }( false, true,  false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  67.         { iphonesim }( false, true, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, true ,  false, false, false,  false,  false, false, false),
  68.         { wii }     ( false, false, false, true,  false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  69.         { aix }     ( false, false, false, true,  false, false, false, true,  false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  70.         { java }    ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   true,  false, false,  false, false, false,  false,  false, false, false),
  71.         { android } ( false, true,  false, false, false, true,  true,  false, false, false, false, false, true,  false, false,   true,  false, true,   false, false, false,  false,  false, false, false),
  72.         { msdos }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false,  false, false, false,  false,  false, false, false),
  73.         { aros }    ( false, true,  false, false, false, true,  true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  74.         {dragonfly} ( false, false, false, false, false, true,  false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  75.         { win16 }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false,  false, false, false,  false,  false, false, false),
  76.         { freertos }( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, false,  false, false, true,   false,   true, false, false),
  77.         {zxspectrum}( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
  78.         { msxdos}   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
  79.         { ios }     ( false, false, false, false, false, false, true,  false, false, false, false, false, false, false, false,   false, false, true ,  false, false, false,  false,  false, false, false),
  80.         {amstradcpc}( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, true,  false),
  81.         {sinclairql}( false, false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  82.         { wasi }    ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  true,  false, false,  false,  false, false, false),
  83.         { human68k }( false, false, true,  false, false, false, false, false, false, false, false, false, false, false, false,   false, false, false,  false, false, false,  false,  false, false, false),
  84.         { ps1 }     ( false, false, false, false, false, false, false, false, false, false, false, false, true,  false, false,   false, false, false,  false, false, false,  false,  false, false, false)
  85.       );
  86.                and in this table
  87.  


with this setup it compiles me the compiler! :)
how to set up for the RTL?
4
Beginners / Re: Can function be used for change event
« Last post by VisualLab on Today at 02:15:30 pm »
In this case the event is oneditingdone I suppose different controls have different types of change events but I try to handle them all through one event procedure. Which is why it’s important to know if the control actually changed..,

And that's probably why you have trouble detecting which of these events did and did not occur. I understand that this is less code to create. This is the temptation to make the program simpler. But that's not always a good idea. The more we want to increase the capabilities (functionality) of the program, the more complex it becomes. It is impossible to go below a certain level of complexity while maintaining its established functionality.

I don't know how you organize your code, but for larger programs (main window, several dialog windows) I avoid placing more program code in form units. Instead, I create classes: a data container, a view class, and a controller class. Sometimes I have several (two or three) containers. Likewise with controllers. It all depends on the complexity of the program (the problem/issue it is supposed to solve). I usually have at least a couple of views. Sometimes these are classes derived from TCustomControl. And sometimes they come from TComponent and are associated with typical controls, e.g. TEdit, TButton, TMemo, etc. Then such a view is coupled with the mentioned controls. Events generated by views (or controls coupled to them) are usually handled by the controller, sometimes also by the container (usually there are few of them).

This allows me to organize and structure the program design. This is simply a practical use of the MVC design pattern. Of course, you need to exercise moderation. Patterns are helpful for more extensive programs. There is no need to use them in small programs.

I have no idea what would be involved in creating a new type of event that uses a function instead of procedure but acts like tnotifyevent. How are events created? Can I create one in my tedit descendant similar to oneditingdone ?

Events are pointers to methods in objects. Your best bet is to look at some existing classes in the library (in this case LCL). I did that.
5
General / Re: Multithreading - synchronize or not?
« Last post by mika on Today at 01:48:51 pm »
https://en.wikipedia.org/wiki/Memory_barrier

Assuming ONLY ONE thread each:

...
If you only write to aEven, so you may only need a WriteBarrier on entry into the "if" block. You can check for each block if you read, write, or read/write shared data ... Though the "inc" is a read/write...


yes "ONLY ONE thread each", ONLY ONE  at a time

FlagEven:=1; is for perfomance measurments with "EverSpin" thread thats count time spent no each flag state. Agree, not needed in final product.

I did try memory barrier like "sfence" , "lfence", "mfence".. but i can not mesure diference in perfomance. Results are inconsitent as is, and effect of "fneces" is not distinguishable.  maybe i have wrongly constructed exaple.

From documentation about "fence" i understand that they are local to thread instructions and only help to keep in check "out of order" execution of instructions. Nothing about faster or forced data synchroniztion with main memory.
6
Beginners / Re: Can function be used for change event
« Last post by Joanna on Today at 01:48:36 pm »
In this case the event is oneditingdone I suppose different controls have different types of change events but I try to handle them all through one event procedure. Which is why it’s important to know if the control actually changed..,

I have no idea what would be involved in creating a new type of event that uses a function instead of procedure but acts like tnotifyevent. How are events created? Can I create one in my tedit descendant similar to oneditingdone ?
7
Unix / Re: A fairly simple sound solution? [SOLVED]
« Last post by KodeZwerg on Today at 01:48:26 pm »
Besides, Windows multimedia solutions are not that simple either (although much better designed and operated). Unfortunately, multimedia support requires knowledge of API and/or external libraries. There are no shortcuts here.
I just typed here in a hurry, should be working without even reading api, so it might be wrong but anyway not overcomplicated.
Code: Pascal  [Select][+][-]
  1. uses
  2.  MMSystem;
  3.  
  4. procedure PlayWavFile(const FileName: string);
  5. begin
  6.  sndPlaySound(PChar(FileName), snd_Async or snd_NoDefault);
  7. end;
  8.  
  9. begin
  10.  PlayWavFile('C:\path\to\your\sound.wav');
  11. end.
Or do it like the OP does and simple execute the wave file to start systems playback (in hope something useful is associated with).
For a more custom type of usage where you have more control over the playback, there are methods to be used and I agree, on that part you should start to read to know how its used correct.
From point of api, you can start at SoundMixer to select an output device over to decode audio to finally feed the output device with the buffered raw audio data.
Possibilities are endless, whatever you wish, the api provide it. If its about Mono/Stereo/Custom, Volume, DSP effects, visualized, equalizer and and and... api can do the job.
8
General / Re: compiler error in unit
« Last post by Zvoni on Today at 01:45:44 pm »
TPoint already declared in different unit?

btw: Is Line 54 a Typo? PLONC
9
General / compiler error in unit
« Last post by paule32 on Today at 01:36:37 pm »
Hello,
during compile, I stuck on line: 57 (see attached image).
I get the compiler error:
FPC_WinTypes.pas(57) Fatal: Syntax error, "UNIT" expected but "end of file" found

And this is the content:

Code: Pascal  [Select][+][-]
  1. // ---------------------------------------------------------------------------
  2. // File:   FPC_WinTypes.pas
  3. // Author: (c) 2024 Jens Kallup - paule32
  4. // All rights reserved
  5. //
  6. // only for education, and non-profit usage !
  7. // ---------------------------------------------------------------------------
  8. unit FPC_WinTypes;
  9. interface
  10.  
  11. uses fpc_types;
  12. // ---------------------------------------------------------------------------
  13. // win32api constants, and variables ...
  14. // ---------------------------------------------------------------------------
  15. type BOOL      = LongBool;       // true or false
  16.  
  17. type PVOID     = Pointer;
  18. type LPVOID    = ^PVOID;
  19. type LPCVOID   = ^LPVOID;
  20.  
  21. type HANDLE    = PVOID;
  22. type FARPROC   = PVOID;
  23.  
  24. type THANDLE   =    DWORD;      // onject handle
  25. type PHandle   = ^THANDLE;
  26.  
  27. type LCID      = DWord;         // a local identifier
  28. type LANGID    = DWord;         // a language identifier
  29.  
  30. type WPARAM    = DWord;         // 32-bit message parameter
  31. type LPARAM    = DWord;         // 32-bit message parameter
  32.  
  33. type LRESULT   = DWord;         // 32-bit unsigned return value
  34. type HRESULT   = DWord;         // 32-bit signed   return value
  35.  
  36. type HINSTANCE = HANDLE;        // a handle to an instance
  37. type HLOCAL    = HANDLE;        // a handle to a local memory block
  38. type HMODULE   = HINSTANCE;     // a handle to a module (.dll)
  39.  
  40. type HWND      = DWord;         // a handle to a window
  41. type ATOM      = DWord;         // local/global atom index for a string
  42.  
  43. type HGLOBAL   = THandle;       // a globally memory allocated handle
  44.  
  45. type PAnsiString = ^AnsiString;
  46. type LPCSTR      = PAnsiString;
  47. type LPCWSTR     = PAnsiString;
  48.  
  49. //type FARPROC   = Pointer;
  50.  
  51. type LPCTSTR   = LPCSTR;
  52.  
  53. type LONG_PTR  = DWORD;
  54. type PLONC_PTR = ^LONG_PTR;
  55.  
  56. type
  57.     PPoint = ^TPoint;
  58.     TPoint = record
  59.         x: DWORD;
  60.         y: DWORD;
  61.     end;
  62. type
  63.     PMessage = ^TMessage;
  64.     TMessage = record
  65.         hwnd     : HWND;
  66.         message  : DWORD;
  67.         wParam   : WPARAM;
  68.         lParam   : LPARAM;
  69.         time     : DWORD;
  70.         pt       : TPOINT;
  71.         lPrivate : DWORD;
  72.     end;
  73. // ---------------------------------------------------------------------------
  74. // security structures ...
  75. // ---------------------------------------------------------------------------
  76. type
  77.     POverlapped = ^TOverlapped;
  78.     _OVERLAPPED = record
  79.         Internal      : ^DWORD ;
  80.         InternalHigh  : ^DWORD ;
  81.         Offset        :  DWORD ;
  82.         OffsetHigh    :  DWORD ;
  83.         hEvent        : THandle;
  84.     end;
  85.     TOverlapped = _OVERLAPPED;
  86.  
  87.     PSECURITY_ATTRIBUTES  = ^TSECURITYATTRIBUTES;
  88.     LPSECURITY_ATTRIBUTES = ^TSECURITYATTRIBUTES;
  89.     PSecurityAttributes   = ^TSecurityAttributes;
  90.     TSECURITYATTRIBUTES  = record
  91.         nLength              : DWORD  ;
  92.         lpSecurityDescriptor : Pointer;
  93.         bInheritHandle       : BOOL   ;
  94.     end;
  95.  
  96. implementation
  97.  
  98. end.

So, what is going on ?
10
Although I would like smaller files for testing. My drive only has 15 gb free space, so I cannot run the billion line generator

Did you see that the generator has a command line switch "-n" to set the amount of generated lines? This way you can create files for testing of any size.
Pages: [1] 2 3 ... 10

TinyPortal © 2005-2018