MS OFICE installiert?
Moderator: Moderatoren
- Muecke
- 1000 working lines a day
- Beiträge: 623
- Registriert: Di, 24. Okt 2006 7:19
- Wohnort: Samstagern CH
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 9 Mal
- Kontaktdaten:
MS OFICE installiert?
Hallo zusammen,
Weis jemand wie ich in die Registrie abfragen kann, ob MSOFFICE installiert ist?
Gruss Thomas
Weis jemand wie ich in die Registrie abfragen kann, ob MSOFFICE installiert ist?
Gruss Thomas
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Re: MS OFICE installiert?
hi,
gruss by OHR
Jimmy
man könnte ja abfragen ob EXCEL installiert ist, reicht das ?Muecke hat geschrieben: Weis jemand wie ich in die Registrie abfragen kann, ob MSOFFICE installiert ist?
Code: Alles auswählen
oReg := XbpReg() :NEW( 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\EXCEL.EXE' )
IF !oReg:Status()
MSGBOX( "Kein EXCEL installiert" )
RETURN uVal
ENDIF
Jimmy
- Manfred
- Foren-Administrator
- Beiträge: 21165
- Registriert: Di, 29. Nov 2005 16:58
- Wohnort: Kreis Wesel
- Hat sich bedankt: 206 Mal
- Danksagung erhalten: 67 Mal
Hi Thomas,
ATNUM() kommt aus den Tools III und ermittelt die Anfangsposition einer Sequenz innerhalb eines Strings.
ATNUM(<cSuchfolge>,<cZeichenfolge>)
Suche des letzten Auftretens
? ATNUM("bc", "abcdeabc") // REsultat 7
Suche des ersten Auftretens
? ATNUM("bc", "abcdeabc",1) // Resultat 2
War das gemeint?
ATNUM() kommt aus den Tools III und ermittelt die Anfangsposition einer Sequenz innerhalb eines Strings.
ATNUM(<cSuchfolge>,<cZeichenfolge>)
Suche des letzten Auftretens
? ATNUM("bc", "abcdeabc") // REsultat 7
Suche des ersten Auftretens
? ATNUM("bc", "abcdeabc",1) // Resultat 2
War das gemeint?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
hi,
du kennst doch sicherlich ausch das Alaska Forum ?
Frage : Was willst du damit anfangen ? willst du "zählen" wie oft ein
Zeichen in einem String vorkommt ? und dann ab der Position was
machen ?
gruss by OHR
Jimmy
ja und dann auch noch in der MutterspracheMuecke hat geschrieben: das suchte ich.
Ist schon eine feine Sache für einen Anfänger mit solch einem Forum arbeiten zu können.
du kennst doch sicherlich ausch das Alaska Forum ?
wie Martin schon sagte, es ist ohne Parameter, wie ein RAT().Muecke hat geschrieben: PS: Was ist das für eine Funktion AtNum?
Frage : Was willst du damit anfangen ? willst du "zählen" wie oft ein
Zeichen in einem String vorkommt ? und dann ab der Position was
machen ?
Code: Alles auswählen
FUNCTION Countat( cFile ,cExt)
LOCAL nRet := 0
LOCAL nPosi := 1
LOCAL nMax := LEN(cFile)
DO WHILE nPosi > 0
nPosi := AT(cExt,cFile,nPosi+1)
IF nPosi > 0
nRet++
ELSE
EXIT
ENDIF
ENDDO
RETURN nRet
...
// wie oft kommt es vor
nCount := Countat(UPPER(cFile),".MPG")
// starte ab Position nCount
cOutAVS := STRTRAN( UPPER(cFile),".MPG",".AVS", nCount )
Jimmy
- Muecke
- 1000 working lines a day
- Beiträge: 623
- Registriert: Di, 24. Okt 2006 7:19
- Wohnort: Samstagern CH
- Hat sich bedankt: 3 Mal
- Danksagung erhalten: 9 Mal
- Kontaktdaten:
Dies kommt in der regclass vor
Darum meine Frage.
Ist es so , dass zuerst nach der 1 Posi und dan nach der 2 posi gesucht wird.Gibt es da auch eine andere Function die das kann, oder muss ich dies einzeln ausklabuschtern mit RAt()?
Gruss Thomas
Code: Alles auswählen
DO WHILE "%" $ ::xValue
*nPos1 := AtNum( "%", ::xValue, 1 )
*nPos2 := AtNum( "%", ::xValue, 2 )
IF nPos2 = 0
EXIT
ENDIF
cTemp := SubStr( ::xValue, nPos1+1, nPos2-nPos1-1 )
IF nPos1 == 1
::xValue := GetEnv( cTemp ) + SubStr( ::xValue, nPos2+1 )
ELSE
::xValue := Substr( ::xValue, 1, nPos1-1) + ;
GetEnv( cTemp ) + SubStr( ::xValue, nPos2+1 )
ENDIF
ENDDO
Ist es so , dass zuerst nach der 1 Posi und dan nach der 2 posi gesucht wird.Gibt es da auch eine andere Function die das kann, oder muss ich dies einzeln ausklabuschtern mit RAt()?
Gruss Thomas
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Hallo Thomas,
Viele Grüße,
Günter
gibt es -- im Windows-API. Welche Machart allerdings effizienter ist, habe ich bisher nicht ausprobiert.Gibt es da auch eine andere Function die das kann, oder muss ich dies einzeln ausklabuschtern mit RAt()?
Viele Grüße,
Günter
Code: Alles auswählen
#include "dll.ch"
FUNCTION ExpandEnvironmentStrings( cIn )
STATIC tpl
LOCAL cTemp
LOCAL nSize
LOCAL nLen
if tpl = NIL
tpl := DllPrepareCall( "kernel32.dll", DLL_STDCALL, "ExpandEnvironmentStringsA" )
endif
// benötigte Puffergröße ermitteln
cTemp := ""
nSize := 1
nLen := DllExecuteCall( tpl, cIn, @cTemp, nSize ) + 2
// Puffer von ausreichender Größe bereitstellen
cTemp := space( nLen )
nSize := nLen
nLen := DllExecuteCall( tpl, cIn, @cTemp, nSize )
// erfolgreich?
IF nLen = 0
// MsgBox( "Fehler bei " + procname(), appname() )
RETURN ""
ENDIF
// Nullterminierung beseitigen
RETURN left( cTemp, nLen-1 )
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9345
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 100 Mal
- Danksagung erhalten: 359 Mal
- Kontaktdaten:
Da MS-Office immer seine Active-X-Komponenten mitinstalliert, kann man auch einfach ein entsprechendes Objekt zu erzeugen versuchen und entsprechend reagieren. Aus den Alaska-Samples:
Code: Alles auswählen
oWord := CreateObject("Word.Application")
IF Empty( oWord )
MsgBox( "Microsoft Word ist nicht installiert" )
ENDIF
Herzlich,
Tom
Tom
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
grundsätzlich solltest du die RegClass NICHT verändern !Muecke hat geschrieben:Dies kommt in der regclass vorCode: Alles auswählen
DO WHILE "%" $ ::xValue *nPos1 := AtNum( "%", ::xValue, 1 ) *nPos2 := AtNum( "%", ::xValue, 2 )
Das ganze steht ja in der RegClass unter METHOD XbpReg:GetValue()
im Abschnitt CASE nType == REG_EXPAND_SZ.
Es wird dort mit environment variablen gearbeitet die mehrer "%" haben,
wie z.b. %TEMP% und so.
Ich frage mich was du da lesen willst den GETENV() kannst du auch ohne
Registry benutzen ?
gruss by OHR
Jimmy