=?iso-8859-1?Q?W=E4re_folgendes_einfach_zu_realisieren=

Thomas Berger ThB.com at t-online.de
Mi Okt 25 18:25:55 CEST 2000


Lieber Herr Henkel,

> > W=E4re es auf leichtem Wege - und nur, wenn sowieso was zu tun ist - =
> > m=F6glich einen flex Befehl einzubauen, der Schl=FCssel aus der =
> > Ini-Datei liefert?
> >
> > Etwa so getini <key>

Ist nicht ganz so einfach, da ja "normale" Ini-Dateien
mehrere "Sections" wie [General] etc. haben. ausserdem
will man ja u.U. direkt mehrere Schluessel haben, 
zumindest waere es oekonomischer, mehrere auf einmal
zu bekommen, wenn man mehrere will. Fuer automatische
Installationsroutinen, die ich vorbereite, habe ich
die entsprechenden Flexe bereits geschrieben, und
zwar in Form einer Art Flex-Bibliothek: In einer
speziellen Anwendervariablen wird dem Flex mitgeteilt,
mit welchem Flex er fortzufahren hat.

Angehaengt ein Flex, der so etwas tut (es gibt
auch einen, der die .ini-Dateien aktualisieren kann).

viele Gruesse
Thomas Berger



Aus apm/hans2k/defaults.ini sollen die Schluessel
Root, Work, ProgDir, DbDir, DbName und Std entweder
aus dem Abschnitt [HANS] oder aus dem Abschnitt
[General] (falls in [HANS] nicht vorhanden) geholt
und in den angegebenen Anwendervariablen abgelegt
werden. Danach soll mit apm/hans2k/inihans.flx
weitergemacht werden (Unterprogramm fuer Arme).


Vorbereitung des Aufrufs fuer ini_read.flx wie folgt:

// Vorbereiten der Neuinstallation: Teil 2, bestimmen der Verzeichnisse
//            #uds: Section
#uds HANS
//            #udf: Name der Datei
#udf apm/hans2k/defaults
//            #udl: Liste von key1=#kkf|#key2=...
#udl Root=#uHW|Work=#uHA|ProgDir=#uHP|DbDir=#uHD|DbName=#uHb|Std=#uHS
//            #udn: Folge-Flex
#udn X apm/hans2k/inihans
exec X ini_read


Hier ini_read.flx:

//.ini-Datei einlesen und mit aktualisierten Variablen ablegen
//Vorbesetzt: #uds: Section
//            #udf: Name der Datei
//            #udl: Liste von key1=#kkf|#key2=...
//            #udn: Folge-Flex

var #udf ".ini"
open
if no jump fail

#udt
:inactive
get
if no jump done
if "[" jump section
jump inactive

:section
#udm
ins #udx
var #udx(b"[")
if =#uds jump specific
if "~General" jump default
jump inactive

:default
#udm Default-Merker

:specific
get #udx
if no jump doit
var #udx
if "[" jump testagain
if "#" jump specific
if " " jump specific
if ";" jump specific
var #udx "|" #udt
ins #udt
jump specific

:testagain
if #udm jump section

// jetzt enthaelt #udt alle relevanten Key=value-Paare
// diese muessen anhand von #udl auf Kategorien verteilt
// werden
:doit
var #udl
ins #udm
close
//var "Test" n
//var +"#udm ist: >" #udm "<" n
//var +"#udt ist: >" #udt "<" n
//show +iV
:pair
// hole ein Paar key=value
var #udm(e"|")
ins #udx
// Suchschluessel nach #udy
var #udx(e"=")
ins #udy
var #udy "="
ins #udy
//var "Test fuer #udy: >" #udy "<" n
//show +iV
// Kopie des Verteilungsmusters nach #udz
var #udt
ins #udz

:subpair
//var "Teste #udy: >" #udy "<" n "     gegen #udz: >" #udz "<" n
//show +iV
var #udz
if =#udy jump did
var ""
var #udz(b"|")
Ins #udz
if #udz jump subpair
jump nextpair

:did
// #udz enthaelt jetzt am Anfang den gefundenen Bestandteil
var #udz(e"|")
ins #udz
var #udx(b"=") " " #udz(b"=")
ins

:nextpair
#udy
// #udm verkuerzen
var ""
var #udm(b"|")
ins #udm
if #udm jump pair

// o.k. fertig
var #udn(e"|")
ins #uxx
var #udn(b"|")
ins #udn
var #uxx
exec 
var "--> Kann Flex " #uxx " nicht ausfuehren!" n
show +IV
end

:fail
var "--> Kann Datei " #udf " nicht oeffnen!" n
show +IV
end





Mehr Informationen über die Mailingliste Allegro