| |
|
|
| KompilierenMarqueSéparationSource wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Umgebungs-Variablen auslesen (Environment)
Autor: Michael Wodrich
GetEnvVars$
GetEnv$() von Profan ist zwar sehr gut zum Lesen
einer Environment-Variable, doch wie hieß denn
nun die Variable, die ich auslesen wollte??
Hier hilft GetEnvVars$ weiter. Alle im aktuellen
Environment gespeicherten Variablennamen werden
als ein String zurückgegeben (durch Kommata getrennt).
Def GetEnvX(0) !kernel32,GetEnvironmentStringsA
Def FreeEnvX(1) !kernel32,FreeEnvironmentStringsA
Declare Test$
liefert einen Komma-separierten String
mit allen Variablennamen des Environments zurück
Proc GetEnvVars$
der interne Puffer muß das gesamte Environment abdecken können
sonst gibt es einen Fehler bezüglich der Bereichsgrenze
Declare Buf#,EnvAdr&,p&,i&,x$,Erg$,tmp$
Dim Buf#,16384
EnvAdr& = GetEnvX()
Buf# = EnvAdr& bearbeiten mittels Bereich
Clear p&,Erg$
x$ = String$(Buf#,p&)
While Len(x$) > 0
i& = InStr(=,x$)
If i& > 1
tmp$ = Left$(x$,i& - 1)
tmp$ = Trim$(tmp$)
Case Len(tmp$) : Erg$ = Erg$;tmp$;,
EndIf
p& = p& + Len(x$) + 1
x$ = String$(Buf#,p&)
EndWhile
Dispose Buf#
FreeEnvX(EnvAdr&)
Case Len(Erg$) : Erg$ = Del$(Erg$,Len(Erg$),1)
Return Erg$
EndProc
Ein Beispiel für die Verwertung der Variablennamen.
Proc ZeigeEnvVars
Parameters Tst$
Declare ende%,i%,x$,aus$,x%,y%
Clear aus$,i%,x%,y%
Proc WriteLn
Parameters s$
DrawText x%,y%,s$
y%= y% + 18
EndProc
Window 0,0 - %MaxX,%MaxY
WriteLn Die Environment-Variablen der aktuellen Umgebung:
WriteLn aus$
WhileNot ende%
Inc i%
x$ = SubStr$(Tst$,i%,,)
If Len(x$)
If (Len(aus$) + Len(x$) + 2) > (Div&(%MaxX,10) - 4)
WriteLn aus$
aus$ = x$
Else
If Len(aus$)
aus$ = aus$; ;x$
Else
aus$ = x$
EndIf
EndIf
Else
ende% = 1
EndIf
EndWhile
WriteLn aus$
WriteLn *** ENDE ***
WaitInput
EndProc
Ein Beispiel für die Verwertung der Variablennamen.
Proc ZeigeAlles
Parameters Tst$
Declare ende%,i%,x$,y$
Clear ende%,i%
ClearList
WhileNot ende%
Inc i%
x$ = SubStr$(Tst$,i%,,)
If Len(x$)
y$ = @GetEnv$(x$)
AddString x$ + = + y$
Else
ende% = 1
EndIf
EndWhile
ListBox$(Inhalt des Environment,2)
EndProc
Test$ = GetEnvVars$()
ZeigeEnvVars Test$
='./../../function-references/XProfan/zeigealles/'>ZeigeAlles Test$
Fin
|
|
|
| |
|
|