gerei 400 módulos com 2.000 linhas cada, total de quase 1.000.000 de linhas de fonte
PROCEDURE Main
LOCAL nCont
FOR nCont = 1 TO 400
CreatePrg( nCont )
NEXT
CreateLink()
RETURN
FUNCTION CreatePrg( nNumPrg )
LOCAL nCont
? nNumPrg
SET ALTERNATE TO ( "MODU" + StrZero( nNumPrg, 4 ) + ".PRG" )
SET ALTERNATE ON
SET CONSOLE OFF
? [PROCEDURE MODU] + StrZero( nNumPrg, 4 )
FOR nCont = 1 TO 2000
? [? ] + StrZero( nCont, 6 )
NEXT
? [RETURN]
SET ALTERNATE OFF
SET ALTERNATE TO
SET CONSOLE ON
RETURN NIL
FUNCTION CreateLink()
LOCAL nCont
SET ALTERNATE TO ( "TEST.LNK" )
SET ALTERNATE ON
SET CONSOLE OFF
FOR nCont = 1 TO 400
? [FILE MODU] + StrZero( nCont, 4 )
NEXT
? [BLINKER EXECUTABLE EXTENDED]
? [BLINKER EXECUTABLE ALIGNMENT 256]
? [LIB CLIPPER, EXTEND]
? [SEARCH BLXCLP52]
SET CONSOLE ON
SET ALTERNATE OFF
SET ALTERNATE TO
RETURN NIL
mais um bat de compilação
FOR %%A IN (*.PRG) DO CLIPPER %%A -m -n
BLINKER @test.lnk
O resultado:
Um EXE com 10.024.704 bytes, totalmente funcional.
Descobri que também precisa ajustar esse BLINKER EXECUTABLE ALIGNMENT pra aceitar EXEs maiores
Como o problema está num EXE de 3MB, este teste com 10MB mostra que o problema estará resolvido.
Notas:
Se usar a opção BLINKER EXECUTABLE COMPRESS, esse mesmo EXE passa a ter 1.569.536
Overlay ou outra alternativa pode ser solução, até o aplicativo aumentar novamente.
Então, é usar Blinker e nunca mais se preocupar com isso.