Am Sonntag, den 14.06.2015, 11:58 +0200 schrieb Tobias Boege: > On Sun, 14 Jun 2015, adamn...@gmail.com wrote: > > On Sun, 14 Jun 2015 10:19:08 +0200 Marco Ancillotti <gam...@servinfo.it> > > wrote: > > > Hi all, > > > > > > is there a way to detect from a gambas program if it's running under the > > > ide or is compiled into a .gambas file ? > > > > > > thank's in advance. > > > > > > > #If Exec > > ' ... do whatever > > #End > > > > hth > > bruce > > > > This seems to work but I had to dig into the compiler's source code to > verify it. Then I saw that "gbc3 --help" mentions the "-x" switch which > defines the Exec preprocessor constant [ I will update the documentation > in a second if no one objects ]. But apparently it doesn't do anything > else, like *forcing* the creation of an archive, which is where this method > begins to fail. I can write the following project: > > Public Sub Main() > #If Exec > Debug "Exec" > #Else > Debug "No Exec" > #Endif > End > > The IDE is nice in that it uses "gbc3 -x" if and only if it creates an > executable archive (see Project.module:GetCompileCommand) -- then the > Exec flag trick works. But I can go into a terminal and do > > $ cd /tmp/exec-flag # which is my test project above > $ gbc3 -ga # without -x > $ gba3 > $ ./exec-flag.gambas > MMain.Main.7: No Exec > > but I clearly started an executable archive. On the other side I can do > > $ gbc3 -gax > $ gbx3 > MMain.Main.5: Exec > > but I didn't run it from an executable archive. So, the Exec flag trick > works if you expect people to compile stuff via the IDE. > > Also, you should know that there is at least a third way to run a program, > as I have already shown above: > > $ gbx3 /tmp/exec-flag # if it was compiled before > > which runs outside of the IDE but doesn't create a .gambas archive. > > So, you might ask yourself now why it is so difficult to determine whether > you run from an executable archive or not. The answer is: you shouldn't > care. Write your program properly :-) > > Regads, > Tobi >
Salut, I use since gambas1 the IDE arguments (which only available in the IDE). I set a ISIDE, if in any form pressend it comes from the IDE SUB chkIfIsIDE() DIM nI AS Integer bIsIDE = FALSE FOR nI = 0 TO Application.Args.Count - 1 ' PRINT Application.Args[nI] IF Instr(UCase(Application.Args[nI]), "ISIDE") > 0 THEN bIsIDE = TRUE ENDIF NEXT END -- Amicalement Charlie ------------------------------------------------------------------------------ _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user