OS2.org Site Index - Feedback - Impressum
Sprachauswahl / Choose your Language News Software Hardware Projekte Forum Tipps Links Verschiedenes
Editorial Diskussion HelpDesk Umfrage
[Forum]
in nach (Erweiterte Suche)
[Forum]
( Archiv ) ( Neues Thema )
14.07.2000
Re: REXX: Wie ObjectID von bestehendem Dateiordner ermitteln? (von: Andreas Schnellbacher, 20:54:13) « ^
Moin Thomas,

Du brauchst fuer SysCreateObject (oder einfacher mit: SysSetObjectData) nicht unbedingt die ObjectID. Du kannst auch den vollst. Pfadnamen angeben. Die ObjectID ist nur fuer abstrakte Objekte (z.B. Programmobjekte), nicht aber Dateiobjekte erforderlich.

Ich empfehle Dir die hervorragende REXX-Dokumentation bzw. -Ergaenzung zu den Ori-Warp4-REXX- und OS/2-Inf-Dateien:
REXX Tips & Tricks 3.0 (Gibt's bestimmt auf Hobbes oder Leo als rxtt30.zip).

Zusaetzlich brauchst Du zum Abfragen der aktuellen Objekteinstellungen wptools.dll
aus WPTools 3.2 (wptool32.zip) von Henk Kelder.

Die Objekteinstellungen (auch die ObjectID) zeigt auch XWorkplace an. Fuer Programmobjekte kannst Du ObjectIDs bequem mit DragText 3.3 aendern.

Hier als Beispiel ein REXX-Script von mir, mit dem man Objekteinstellungen zum spaeteren Zuruecksetzen in eine .cmd-Datei sichern kann (geht auch fuer die Klickstartleiste, sehr zu empfehlen vor Neuinstallation):

--- Alle ~ durch Space ersetzen ---

/*~Abfragen~von~Objekt-Einstellungen
~~~Parameter~=~Vollständiger~Pfadname~oder
~~~~~~~~~~~~~~~"<OBJECTID>"~oder~^<OBJECTID^>~oder
~~~~~~~~~~~~~~~#OBJECTHANDLE~~(hex)

~~Für~SysCreateObject~darf~title~nicht~gleich~""~sein!!!

~~Abfrage~ob~class~=~SmartCenter~oder~WPLaunchPad~erweitern:
~~In~ini~"user"~unter~Appl~"PM_Workplace:ReplaceList"~suchen~ob~beide~classes
~~Keyw~=~"SmartCenter"~oder~"WPLaunchPad"~ersetzt~worden~sind.

~~To~do:
~~Falls~Ordner~nicht~vorhanden:
~~Pfadname~eingeben~können.

*/

/*'@mode~co80,40'
*/

CALL~RxFuncAdd~'SysLoadFuncs',~'RexxUtil',~'SysLoadFuncs'
CALL~SysLoadFuncs

CALL~RxFuncAdd~'WPToolsLoadFuncs',~'WPTOOLS',~'WPToolsLoadFuncs'
CALL~WPToolsLoadFuncs

/*~Konfiguration~*/
Show~~~~~~~~~~~~~=~1~~~~~~~~~~/*~0|1~*/
Pause~~~~~~~~~~~~=~0~~~~~~~~~~/*~0|1~*/
WriteCmdFile~~~~~=~'ASK'~~~~~~~~~~/*~0|1|'ASK'~*/
CmdFileOverwrite~=~1~~~~~~/*~0|1|'ASK'~*/
CmdFileDir~=~''

NORMALCOLOR~=~'1b'x~||~'[0m'
COLOR1~~~~~~=~'1b'x~||~'[1;32;40m'
COLOR2~~~~~~=~'1b'x~||~'[1;36;40m'
COLOR3~~~~~~=~'1b'x~||~'[1;31;47m'
COLOR4~~~~~~=~'1b'x~||~'[30;47m'
COLOR5~~~~~~=~'1b'x~||~'[1;33;44m'

say
/*
parse~arg~args
args~=~strip(args)
if~left(~args,~1~)~=~'"'~then
~~do
~~~~parse~var~args~'"'~arg1~'"'~rest
~~~~arg1~=~strip(arg1)
~~end~/*~do~*/
else
~~do
~~~~parse~var~args~arg1~rest
~~~~arg1~=~strip(arg1)
~~~~arg1~=~strip(~arg1,~,~'"'~)
~~end~/*~do~*/
*/
parse~arg~arg1
arg1~=~strip(arg1)
arg1~=~strip(~arg1,~,~'"'~)
if~arg1~=~''~then
~~do
~~~~say~'Objekt~eingeben~(Dateiname~oder~<OBJECT_ID>~oder~#HANDLE_IN_HEX):'
~~~~parse~pull~arg1
~~~~arg1~=~strip(arg1)
~~~~arg1~=~strip(~arg1,~,~'"'~)
~~end~/*~do~*/

if~left(~arg1,~1)~<>~'#'~&~left(~arg1,~1~)~<>~'<'~then
~~do
~~~~call~SysFileTree~arg1,~'Obj',~'DO'
~~~~if~Obj.0~>~0~then
~~~~~~Object~=~Obj.1
~~~~else
~~~~~~do
~~~~~~~~lp~=~lastpos(~'',~arg1~)
~~~~~~~~ParentDir~=~substr(~arg1,~1,~max(~0,~lp~-~1~)~)
~~~~~~~~call~SysFileTree~ParentDir'*',~'SearchObj',~'O'
~~~~~~~~do~s~=~1~to~SearchObj.0
~~~~~~~~~~/*say~s'~~'SearchObj.s*/
~~~~~~~~~~/*cSearchObj~=~translate(~SearchObj.s,~'',~'^'~)*/
~~~~~~~~~~cSearchObj~=~replace_str(~SearchObj.s,~'',~'^'~)
~~~~~~~~~~/*say~'~~~'cSearchDir*/
~~~~~~~~~~if~translate(cSearchObj)~=~translate(arg1)~then
~~~~~~~~~~~~do
~~~~~~~~~~~~~~Object~=~SearchObj.s
~~~~~~~~~~~~~~leave
~~~~~~~~~~~~end~/*~do~*/
~~~~~~~~end~/*~do~s~*/
~~~~~~end~/*~do~*/
~~~~/*say~'Object~=~'Object;'@pause'*/
~~~~arg1~=~Object
~~end~/*~do~*/


rc~=~WPToolsQueryObject(~arg1,~"Class",~"Title",~"Setup",~"Location")

if~rc~=~0~then
~~do
~~~~say~'Für~das~Objekt~'arg1
~~~~say~'sind~keine~Object~Settings~definiert.'
~~~~return
~~end~/*~do~*/

/*~WriteCmdFile~*/
if~symbol('WriteCmdFile')~<>~'VAR'~|~WriteCmdFile~=~''~then
~~WriteCmdFile~=~value(~'WRITECMDFILE',~,~'os2environment'~)
if~WriteCmdFile~=~''~then
~~WriteCmdFile~=~'ASK'~~~~/*~0|1|'ASK'~*/

/*~CmdFileDir~*/
if~symbol('CmdFileDir')~<>~'VAR'~|~CmdFileDir~=~''~then
~~CmdFileDir~=~directory(arg1)
if~CmdFileDir~=~''~then
~~CmdFileDir~=~value(~'CMDFILEDIR',~,~'os2environment'~)
if~CmdFileDir~=~''~then
~~CmdFileDir~=~directory(~strip(~arg1,~'t',~''~)'..'~)
if~CmdFileDir~=~''~then
~~CmdFileDir~=~directory()

/*~CmdFileOverwrite~*/
if~symbol('CmdFileOverwrite')~<>~'VAR'~|~CmdFileOverwrite~=~''~then
~~CmdFileOverwrite~=~value(~'CMDFILEOVERWRITE',~,~'os2environment'~)
if~CmdFileOverwrite~=~''~then
~~CmdFileOverwrite~=~'ASK'~~~~/*~0|1|'ASK'~*/

if~Show~=~1~then
~~do

~~~~say~'C~L~A~S~S'
~~~~say~Class
~~~~say~'T~I~T~L~E'
~~~~say~color5||Title||normalcolor
~~~~say~'L~O~C~A~T~I~O~N'
~~~~say~Location
~~~~say~'S~E~T~U~P'
~~~~say~setup

~~~~if~Pause~=~1~then
~~~~~~do
~~~~~~~~say
~~~~~~~~'@pause'
~~~~~~end~/*~do~*/

~~end~/*~do~*/

if~Title~=~''~then
Title~=~filespec(~'NAME',~arg1~)
ConvTitle~=~Title
ConvTitle~=~translate(~ConvTitle,~'_',~'.'~)
ConvTitle~=~translate(~ConvTitle,~'_',~'~'~)
ConvTitle~=~translate(~ConvTitle,~'!',~':'~)
ConvTitle~=~translate(~ConvTitle,~'!',~'/'~)
ConvTitle~=~translate(~ConvTitle,~'!',~'0a'x~)
ConvTitle~=~translate(~ConvTitle,~'!',~'0d'x~)
ConvTitle~=~translate(~ConvTitle,~'!',~'<'~)
ConvTitle~=~translate(~ConvTitle,~'!',~'>'~)

CmdFile~=~strip(~CmdFileDir,~'t',~''~)'set_'ConvTitle'.cmd'

say

select
~~when~WriteCmdFile~=~0~then
~~~~return
~~when~WriteCmdFile~=~1~then
~~~~do
~~~~~~say~'Name~für~CMD-Datei~zum~Setzen~der~Einstellungen:'
~~~~~~say~'~~~~~set_'ConvTitle'.cmd'
~~~~~~say~'~~~~~im~Verzeichnis~'CmdFileDir
~~~~end~/*~do~*/
otherwise
~~do
~~~~say~'Name~für~CMD-Datei~zum~Setzen~der~Einstellungen~angeben~oder:'
~~~~say~'~~~~~X+Return~->~keine~CMD-Datei~erzeugen'
~~~~say~'~~~~~Return~~~->~Name~=~set_'ConvTitle'.cmd'
~~~~say~'~~~~~~~~~~~~~~~~~im~Verzeichnis~'CmdFileDir
~~~~parse~pull~answer
~~~~answer~=~strip(answer)
~~~~select
~~~~~~when~translate(answer)~=~'X'~then
~~~~~~~~return
~~~~~~when~answer~=~''~then
~~~~~~~~nop
~~~~otherwise
~~~~~~CmdFile~=~answer
~~~~end~~/*~select~*/
~~end~/*~do~*/
end~/*~select~*/

do~forever
~~if~stream(~CmdFile,~'C',~'QUERY~EXISTS'~)~<>~''~then
~~~~exist~=~1
~~else
~~~~exist~=~0
~~if~exist~=~1~then
~~~~do
~~~~~~select
~~~~~~~~when~CmdFileOverwrite~=~0~then
~~~~~~~~~~return
~~~~~~~~when~CmdFileOverwrite~=~1~then
~~~~~~~~~~leave
~~~~~~otherwise
~~~~~~~~say~cmdfile'~existiert~bereits!'
~~~~~~~~say~'Anderen~Namen~angeben~oder:'
~~~~~~~~say~'~~~~~X+Return~->~keine~CMD-Datei~erzeugen'
~~~~~~~~say~'~~~~~Return~~~->~Überschreiben'
~~~~~~~~parse~pull~answer
~~~~~~~~answer~=~strip(answer)
~~~~~~~~select
~~~~~~~~~~when~translate(answer)~=~'X'~then
~~~~~~~~~~~~return
~~~~~~~~~~when~answer~=~''~then
~~~~~~~~~~~~leave
~~~~~~~~otherwise
~~~~~~~~~~CmdFile~=~answer
~~~~~~~~end~~/*~select~*/
~~~~~~end~~/*~select~*/
~~~~end~/*~do~*/
~~else
~~~~leave
end~/*~do~forever~*/

if~exist~=~1~then
~~call~SysFileDelete~CmdFile

call~lineout~cmdfile,~'/*~Einstellungen~setzen~für~'arg1'~*/'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'CALL~RxFuncAdd~"SysLoadFuncs",~"RexxUtil",~"SysLoadFuncs"'
call~lineout~cmdfile,~'CALL~SysLoadFuncs'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'say'
call~lineout~cmdfile,~'say~"Einstellungen~setzen~für~'Class'~»'Title'«"'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'class~~~~=~"'Class'"'
call~lineout~cmdfile,~''
Title2~=~Title
if~Title2~=~""~then
~~Title2~=~filespec('name',~arg1)
call~lineout~cmdfile,~'title~~~~=~"'Title2'"'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'location~=~"'Location'"'
call~lineout~cmdfile,~'do~forever'
call~lineout~cmdfile,~'~~say~"***~In~welchem~Ordner~soll~das~Objekt~erstellt~werden?"'
call~lineout~cmdfile,~'~~say~"~~~~(Return~=~"location",~X~=~Abbruch)"'
call~lineout~cmdfile,~'~~parse~pull~newloc'
call~lineout~cmdfile,~'~~newloc~=~strip(newloc)'
call~lineout~cmdfile,~'~~if~translate(newloc)~=~"X"~then'
call~lineout~cmdfile,~'~~~~return'
call~lineout~cmdfile,~'~~if~newloc~<>~""~then'
call~lineout~cmdfile,~'~~~~location~=~newloc'
call~lineout~cmdfile,~'~~if~ExistObj(~location~)~=~1~then'
call~lineout~cmdfile,~'~~~~leave'
call~lineout~cmdfile,~'~~else'
call~lineout~cmdfile,~'~~~~do'
call~lineout~cmdfile,~'~~~~~~say~"~~~~Der~Ordner~"location"~existiert~nicht!"'
/*
call~lineout~cmdfile,~'~~~~~~say~"~~~~Soll~er~erstellt~werden?~(j/n)"'
call~lineout~cmdfile,~'~~~~~~parse~pull~answer'
*/
call~lineout~cmdfile,~'~~~~end~/*~do~*/'
call~lineout~cmdfile,~'end~/*~do~forever~*/'
call~lineout~cmdfile,~''

s~=~0
smax~=~0
Rest~=~Setup
do~forever
~~sp1~=~pos(~'DRAWEROBJECTS=',~Rest~~)
~~if~sp1~=~0~then
~~~~leave
~~sp2~=~pos(~';',~Rest,~sp1~+~1~)
~~len~=~sp2~-~sp1~+~1
~~s~=~s~+~1
~~smax~=~s
~~Setup.s~=~substr(~Rest,~sp1,~len~)
~~Rest~=~delstr(~Rest,~sp1,~len~)
end~/*~do~forever~*/
Setup.0~=~Rest
do~s~=~0~to~smax
~~SetupLines~=~SplitSetupAtSemicolons(~Setup.s~)
~~/*say~SetupLines*/
~~call~lineout~cmdfile,~'setup.'s'~=~,'
~~call~lineout~cmdfile,~SetupLines
~~call~lineout~cmdfile,~''
end~/*~do~s~*/
call~lineout~cmdfile,~'smax~=~'smax
call~lineout~cmdfile,~'if~class~=~"WPLaunchPad"~then'
call~lineout~cmdfile,~'~~orinames~=~"FPOBJECTS=~DRAWEROBJECTS="'
call~lineout~cmdfile,~'else'
call~lineout~cmdfile,~'~~orinames~=~"EXENAME=~SHADOWID=~STARTUPDIR="'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'do~s~=~0~to~smax'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'~~setup~=~setup.s'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'~~do~n~=~1~to~words(~orinames~)'
call~lineout~cmdfile,~'~~~~oriname~=~word(~orinames,~n~)'
call~lineout~cmdfile,~'~~~~p1~=~pos(~oriname,~setup~)'
call~lineout~cmdfile,~'~~~~if~p1~=~0~then'
call~lineout~cmdfile,~'~~~~~~iterate~n'
call~lineout~cmdfile,~'~~~~p2~=~p1~+~length(oriname)'
call~lineout~cmdfile,~'~~~~if~oriname~=~"DRAWEROBJECTS="~then'
call~lineout~cmdfile,~'~~~~~~p2~=~pos(~",",~setup,~p2~+~1~)~+~1'
call~lineout~cmdfile,~'~~~~p3~=~pos(~";",~setup,~p2~+~1~)'
call~lineout~cmdfile,~'~~~~objstring~=~substr(~setup,~p2,~max(~0,~p3~-~p2~)~)'
call~lineout~cmdfile,~'~~~~newobjstring~=~""'
call~lineout~cmdfile,~'~~~~rest~=~objstring'
call~lineout~cmdfile,~'~~~~do~until~rest~=~""'
call~lineout~cmdfile,~'~~~~~~startp~=~length(objstring)~-~length(~rest~)'
call~lineout~cmdfile,~'~~~~~~parse~var~rest~oriobj","rest'
call~lineout~cmdfile,~'~~~~~~neworiobj~=~oriobj'
call~lineout~cmdfile,~'~~~~~~do~while~ExistObj(~neworiobj~)~=~0'
call~lineout~cmdfile,~'~~~~~~~~say~"~~~~"oriname""objstring'
call~lineout~cmdfile,~'~~~~~~~~neworiobj~=~GetNotExistAnswer(~neworiobj~)'
call~lineout~cmdfile,~'~~~~~~end~/*~do~while~*/'
call~lineout~cmdfile,~'~~~~~~if~newobjstring~=~""~then'
call~lineout~cmdfile,~'~~~~~~~~newobjstring~=~neworiobj'
call~lineout~cmdfile,~'~~~~~~else'
call~lineout~cmdfile,~'~~~~~~~~newobjstring~=~newobjstring","neworiobj'
call~lineout~cmdfile,~'~~~~end~/*~do~until~*/'
call~lineout~cmdfile,~'~~~~newsetup~=~delstr(~setup,~p2,~max(~0,~p3-p2~)~)'
call~lineout~cmdfile,~'~~~~newsetup~=~insert(~newobjstring,~newsetup,~p2-1~)'
call~lineout~cmdfile,~'~~~~setup~=~newsetup'
call~lineout~cmdfile,~'~~end~/*~do~n~*/'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'~~/*if~s~=~0~&~(~class~=~"WPLaunchPad"~|~class~=~"SmartCenter"~)~then'*/
call~lineout~cmdfile,~'~~if~s~=~0~&~(~class~=~"WPLaunchPad"~)~then'
call~lineout~cmdfile,~'~~~~updatereplace~=~"r"'
call~lineout~cmdfile,~'~~else'
call~lineout~cmdfile,~'~~~~updatereplace~=~"u"'
call~lineout~cmdfile,~'~~retcode~=~SysCreateObject(~class,~title,~location,~setup,~updatereplace~)'
call~lineout~cmdfile,~'~~if~retcode~then~say~"OK!"'
call~lineout~cmdfile,~'~~else~say~"Fehler!"'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'end~/*~do~s~*/'
call~lineout~cmdfile,~''

call~lineout~cmdfile,~'return~retcode'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'ExistObj:~~procedure'
call~lineout~cmdfile,~'~~Obj~=~arg(1)'
call~lineout~cmdfile,~'~~if~Obj~=~""~then'
call~lineout~cmdfile,~'~~~~ExistRC~=~0'
call~lineout~cmdfile,~'~~else'
call~lineout~cmdfile,~'~~~~ExistRC~=~SysSetObjectData(~Obj,~""~)'
call~lineout~cmdfile,~'~~if~ExistRC~=~0~then'
call~lineout~cmdfile,~'~~~~ExistRC~=~(~SysSearchPath(~"PATH",~Obj~)~<>~""~)'
call~lineout~cmdfile,~'return~ExistRC'
call~lineout~cmdfile,~''
call~lineout~cmdfile,~''
call~lineout~cmdfile,~'GetNotExistAnswer:~~procedure'
call~lineout~cmdfile,~'~~neworiobj~=~arg(1)'
call~lineout~cmdfile,~'~~say~"***~Das~Objekt~"neworiobj"~existiert~nicht!"'
call~lineout~cmdfile,~'~~say~"~~~~Neues~Objekt~eingeben:"'
call~lineout~cmdfile,~'~~say~"~~~~(<OBJECTID>~oder~Dateinamen,~X~=~Abbruch,~K~=~keins,"'
call~lineout~cmdfile,~'~~say~"~~~~Return~=~"neworiobj")"'
call~lineout~cmdfile,~'~~parse~pull~answer'
call~lineout~cmdfile,~'~~answer~=~strip(answer)'
call~lineout~cmdfile,~'~~select'
call~lineout~cmdfile,~'~~~~when~translate(answer)~=~"X"~then'
call~lineout~cmdfile,~'~~~~~~return'
call~lineout~cmdfile,~'~~~~when~translate(answer)~=~"K"~then'
call~lineout~cmdfile,~'~~~~~~do~'
call~lineout~cmdfile,~'~~~~~~~~neworiobj~=~""'
call~lineout~cmdfile,~'~~~~~~~~leave'
call~lineout~cmdfile,~'~~~~~~end~/*~do~*/'
call~lineout~cmdfile,~'~~~~when~translate(answer)~=~""~then'
call~lineout~cmdfile,~'~~~~~~leave'
call~lineout~cmdfile,~'~~otherwise'
call~lineout~cmdfile,~'~~~~neworiobj~=~answer'
call~lineout~cmdfile,~'~~end~/*~select~*/'
call~lineout~cmdfile,~'return~neworiobj'
call~lineout~cmdfile,~''
call~stream~cmdfile,~'c',~'close'

return


SplitSetupAtSemicolons:~procedure
/*****************************************************************************/
parse~arg~String
i~=~0
CRLF~=~'0d0a'x
SetupLines~=~''

do~until~String~=~''
~~i~=~i~+~1
~~parse~var~String~StringPart.i~';'~String
~~StringPart.i~=~strip(StringPart.i)
~~StringPart.0~=~i
end

do~j~=~1~to~StringPart.0
~~SetupLines~=~SetupLines'"'StringPart.j';"'
~~if~j~<>~StringPart.0~then
~~~~SetupLines~=~SetupLines'~||,'CRLF
end

/*
rest~=~String
do~while~rest~<>~''
~~parse~var~rest~next~';'~rest
~~if~length(next)~>~250~then
~~~~do
~~~~~~rrest~=~next
~~~~~~do~while~rrest~<>~''
~~~~~~~~lp~=~lastpos(~',',~rrest,~250~)
~~~~~~~~if~lp~=~0~then
~~~~~~~~~~lp~=~250
~~~~~~~~SetupLines~=~SetupLines'"'substr(~rrest,~1,~lp~)'"~||,~'CRLF
~~~~~~end~/*~do~while~*/
~~~~end~/*~do~*/
~~i~=~i~+~1
end~/*~do~while~*/
*/

return~SetupLines



/*~String~(Zeichenkette)~in~einem~String~(z.B.~Zeile)~ersetzen,~auch~mehrfach~*/
/*~arg(1)~bis~arg(3)~wie~translate~*/
/*~defproc~replace_str(from_str,~to_str,~source_str)~*/
replace_str:~~procedure
/*****************************************************************************/
~~~source_str~=~arg(1)
~~~to_str~~~~~=~arg(2)
~~~from_str~~~=~arg(3)
~~~do~forever
~~~~~~p~=~pos(from_str,~source_str)
~~~~~~if~p~=~0~then~leave
~~~~~~source_str=insert(to_str,~delstr(source_str,~p,~length(from_str)),~p-1)
~~~end~/*~do~*/
~~~return~source_str


[ Leser: 40 ]

Datum Thema
07.01.2017 *

*

Name: * eMail: Benachrichtigung

Mit * markierte Felder müssen ausgefüllt werden !

( Zeige alle Einträge ) ( Zur Startübersicht )
Thema von: Leser Datum Zeit
 REXX: Wie ObjectID von bestehendem Dateiordner ermitteln?
Thomas Kämmerer4814.07.200016:01
 Re: REXX: Wie ObjectID von bestehendem Dateiordner ermitteln?
Thomas Nolte4414.07.200019:04
 Re: REXX: Wie ObjectID von bestehendem Dateiordner ermitteln?
Andreas Schnellbacher4014.07.200020:54


php.net OpenIT © 1998-2017 by WebTeam OS2.org