just to expand on it

i use nearly the same method as alimonster except mines layed out like this. ill use my game as an example

Code:
C:\Projects\racer\
     ... Bin - holds the exe and game data

     ... Code - holds the project dpr and things

         ... directx - holds main headers
             ... dx8_framework - dx8 specific stuff
             ... dx9_framework - dx9 specifics

         ... opengl - opengl header and texture loader etc
             
         ... modules - my codes here :)

             ... input - keyboard.pas, wheel,pas (includes ffb code), main.pas(controll assignments etc)

             ... gfx - all files for gfx engine, renderer loader etc

             ... sound - all things for sound :)

     ... DCU - unit output
i find that the more organised the folders the easier it is to get to a procedure