[Allegro] Flexe

Thomas Berger ThB at Gymel.com
Do Sep 6 15:10:01 CEST 2012


Liebe Frau Panski, liebe Liste,

> in a-stat.flx kommt mit acon nach wie vor nicht die gewünschte Statistik, es funkioniert nur mit srch.

stimmt, es fehlen die Schalter fuer -b und -k, denke ich.
Da ist ohnehin Reparaturbedarf, denn einerseits ist srch.exe
ja nun doch wieder akzeptabel und andererseits ist es einer
der zu vermeidenden Faelle, wo adhoc eine .bat-Datei
im Arbeitsverzeichnis zusammengeschnipselt wird, dabei
koennte die auch universell formuliert werden:


@echo off
rem dies koennte "a-stat.bat" sein
%-P%\asort stat.alg stats.alg
rem del stat.alg
%-P%\srch -f6 -dstats.alg -ea-stat+a-stat.lst -m0 -Umd1

Es gibt leider keinen Standardmechanismus zum Aufruf von
"allegro"-Modulen aus a99 heraus, vielleicht koennte
folgendes mit in inst-all aufgenommen werden:


1. a99wrap.inc
 // Externen Aufruf mit a99wrap.bat kapseln (setzt Environment dort)
end

:a99wrap
ins $arg

get env comspec
ins $comspec

var P
ins #uxP
var D
ins #uxD

var $comspec " /C " P "a99wrap.bat -P=" #uxP(t"\\") " -d=" #uxD(t"\\") " -b=" B
" -k=" K " -O=" #op " -- " $arg
call

return

2. a99wrap.bat
@echo off
: $Id: a99wrap.src 24254 2012-02-17 21:13:36Z ThB $
: a99wrap.bat: DOS-Nachinitialisierungen fuer a99-Aufrufe
: Benutzt Command Extensions von Windows 2000 bzw. XP

:getopts
if "%1" == "" goto noargs
if "%1" == "--" goto lastopt

if "%1" == "-P" goto set
if "%1" == "-d" goto set
if "%1" == "-b" goto set
if "%1" == "-k" goto set
if "%1" == "-D" goto set
rem keine automatischen Schalter
if "%1" == "-K1" goto set
if "%1" == "-O" goto set

set x=%1
if not "%x:~0,1%" == "-" goto lastopt
  % Generischer Fall (die Shell hat bereits bei "=" zerlegt)
:set
set %1=%2
shift
shift
goto getopts

:lastopt
shift
set cmd=%1
shift
set args=

:getargs
if %1$ == $ goto launch
set args=%args% %1
shift
goto getargs

:launch
if "%-K1%" == "" set -K1=%-k:~0,1%
for %%D in (%CD%) do set -LOC=%%~dD

if not %ALLEGRODEBUG%! == ! echo will execute %cmd%%args%
if %ALLEGRODEBUG%! == pause! pause

if "%ProgramW6432%" == "" call %-P%\ansi /Q
rem Kehrt ggfls. nicht zurueck...

if %cmd%$ == $ goto noargs

if exist %-P%\%cmd% goto script
if exist %-P%\%cmd%.bat goto script
if exist %-P%\%cmd%.cmd goto script

%cmd%%args%
if errorlevel 1 goto error
goto exit

:script
%-P%\%cmd%%args%
if errorlevel 1 goto error
goto exit

:noargs
echo Nur Initialisierung, nichts aufzurufen?
pause
goto exit

:error
echo Aufruf:
echo %cmd%%args%
echo leider gescheitert!
pause

:exit



Nutzung beispielsweise in a-stat.flx dann etwa so:

var "a-stat"
perform a99wrap


und am Ende der Flexdatei:

end

include a99wrap.inc




viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro