[Allegro] Selbstbestimmte M- und W-Setzung

Heinrich Allers allers at t-online.de
Sa Aug 9 22:22:42 CEST 2008


Normalanwender können (oder sollen, zur Vermeidung von Verwirrung) weghören! 

Diese Nachricht ist nur für Entwickler oder Experten gedacht!  

###

Jedesmal, wenn eine neue Allegro-Version kommt, greife ich als erstes in die in \demo2 
liegende _start.flx ein und biege das Arbeitsverzeichnis auf \demo2\temp und das Dbaux-
Verzeichnis auf \demo2\dbaux um; das Sich-zum-richtigen-Dokumente-und-Einstellungen-
Unterverzeichnis-Durchhangeln paßt mir nicht.

Jetzt habe ich mein Verfahren gründlich überarbeitet und dokumentiert, um es 
interessierten Allegrologen vorstellen zu können.

###

Ziel:

a)
Jede Datenbank hat ihr eigenes Arbeits- und Dbaux-Verzeichnis

b)
Sofern Mehrfachzugriff (im Netz), gibt es für jeden Netzanmeldenamen ("USERNAME") ein 
eigenes Arbeits- und Dbaux-Verzeichnis.

c)
Diese Arbeits- und Dbaux-Verzeichnisse liegen in der Topographie der Festplatte den 
Datenbankverzeichnissen möglichst nah, und nicht von Microsoft-Logik in entfernte Ecken 
("Dokumente und Einstellungen\...") versetzt.

###

Vorschlag:

Sei \demo2 das Datenbankverzeichnis, und beim Mehrfachzugriff (im Netz) 'name' der 
Netzanmeldenamen ("USERNAME").

Dann soll das Arbeitsverzeichnis bei Mehrfachzugriff 
\demo2\temp\name sein. Falls keine Netz- oder Mehrfachzugriffssituation vorliegt, soll
\demo2\temp das Arbeitsverzeichnis sein.

Das Dbaux-Verzeichnis soll bei Mehrfachzugriff 
\demo2\dbaux\name sein. Falls keine Netz- oder Mehrfachzugriffssituation vorliegt, soll
\demo2\dbaux das Dbaux-Verzeichnis sein.

###

Diese in _start.flx einzubauende Sequenz (die Stellen, an denen man unter Umständen 
eingreifen muß, sind mit XXX bezeichnet) macht das:


  // Selbstbestimmte Setzung von W (Arbeitsverzeichnis)
  // und M (Dbaux-Verz.) / BEGINN

  // Kann in _start.flx hinter die Sprungmarke :start eingesetzt werden.

  jump kein-w-set  // XXX Aktivieren, wenn keine selbstbestimmte
     // W-Setzung (Arbeitsverzeichnis) gewünscht!
#uun
get env username\ins #uun  // XXX Deaktivieren, wenn kein Mehrfachzugriff!
var D "temp"
if #unn var +"\\" #uun
var +"\\placebo.sgf"
  // Falls die Datei placebo.sgf im Unterverzeichnis
  // temp bzw. (bei Mehrfachzugriff) temp\<USERNAME> des
  // Datenbankverzeichnisses existiert, ist's ok:
fsize\if no jump temp-nvhd\jump temp-vhd
  // Sonst dieses Verzeichnis einrichten:
:temp-nvhd
var D "temp"\mkdir
if #uun var D "temp\\" #uun;mkdir
  // Und eine Signaldatei reinlegen, um leicht
  // nachprüfen zu können, ob Verz. temp\<USERNAME> schon da ist:
var D "temp"\var +"\\" #uun "\\placebo.sgf"\xport f
wri "Verzeichnis " D "temp\\" #uun\close x
:temp-vhd
var D "temp"\var +"\\" #uun\set W
#uun  // Anwendervariable zurücksetzen
:kein-w-set

  jump kein-m-set  // XXX Aktivieren, wenn keine selbstbestimmte
    // M-Setzung (Dbaux-Verzeichnis) gewünscht!
#uun
get env username\ins #uun  // XXX Deaktivieren, wenn kein Mehrfachzugriff!
var D "dbaux
if #uun var +"\\" #uun
var +"\\placebo.sgf"
  // Falls die Datei placebo.sgf im Unterverzeichnis
  // dbaux bzw. (bei Mehrfachzugriff) dbaux\<USERNAME> des
  // Datenbankverzeichnisses existiert, ist's ok:
fsize\if no jump dbaux-nvhd\jump dbaux-vhd
  // Sonst dieses Verzeichnis einrichten:
:dbaux-nvhd
var D "dbaux"\mkdir
if #uun var D "dbaux\\" #uun;mkdir
  // Und eine Signaldatei reinlegen, um leicht
  // nachprüfen zu können, ob Verz. dbaux\<USERNAME> schon da ist:
var D "dbaux"\if #uun var +"\\" #uun\var +"\\placebo.sgf"\xport f
wri "Verzeichnis " D "dbaux\\" #uun\close x
:dbaux-vhd
  // Schauen, ob Umgebungsvariable TEMP dorthin zeigt,
  // wo das dbaux-Verzeichnis eingerichtet worden ist:
get env TEMP\ins #ux1
var "~dbaux"\if #uun var +"\\" #uun\ins #ux2
if #uun var "dbaux\\" #ux1(T"\\")
if not #uun var #ux1(T"\\")
  // Wenn Ja, weiter in _start.flx:
if =#ux2 jump dbaux-ok
  // Wenn Nein, Umgebungsvariable TEMP auf das Unterverzeichnis
  // dbaux bzw. (bei Mehrfachzugriff) dbaux\<USERNAME> des
  // Datenbankverzeichnisses zeigen lassen: 
var "TEMP=" D "dbaux"\if #uun var +"\\" #uun\set env
  // und Allegro neu starten, damit diese TEMP-Setzung
  // durchschlägt:
var m\ins #ux1\var #ux1(e" ")\ins #ux1
var P #ux1 ".exe " D "orda.ini"\STOP
:dbaux-ok
#uun\#ux1\#ux2  // Anwendervariable zurücksetzen
:kein-m-set

  // Selbstbestimmte Setzung von W (Arbeitsverzeichnis) 
  // und M (Dbaux-Verz.) / ENDE

###

Hier Schluß der Einfügung in _start.flx.

Was meinen die Experten? Ich wäre ja dafür, das im Standard-Allegro in die _start.flx 
einzubauen. Aber wenn ich der einzige bin, der das Gefühl hat, daß ihm dadurch die Arbeit mit 
Allegro erleichtert wird, dann lasse ich mein Desiderat natürlich fallen!


Mit besten Grüßen von

Heinrich Allers

allers at t-online.de * http://www.h-allers.de
Netztagebuch: http://heinrich-erlo-ger.blogspot.com/
Bitácora: http://heinrich-erlo-spa.blogspot.com/




Mehr Informationen über die Mailingliste Allegro