1

Konu: GETENV("........")

Helpte "Returns the contents of the specified MS-DOS environment variable." diyor, ancak liste vermiyor.

GETENV("username"), "computername" , ....
listesi olan arkadaş var mı ?

VFP9 SP2

2

Re: GETENV("........")

Ali Abi sorunun ne? Yada elde etmek istediğin değer ?

Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

3

Re: GETENV("........")

Merhaba
Nereden elime geçti hatırlamıyorum ama umarım işine yarar.
Ayrıca ? Getenv("USERNAME")
? Getenv("USERNAME") olarak da bu fonkiyonu kullanınca liste veriyor.


func GetComputerName()
local lnResult,lcKey,lnError,lnType,lcBuffer,lnBufferSize,lnCompName,lnReserved
      lnReserved = 0
      lnResult   = 0
      lnCompName = ''
      lcKey      = "SYSTEM\CurrentcontrolSet\control\ComputerName\ComputerName"    &&COMPNAME_KEY
      lnError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, lcKey, ;
                     lnReserved, KEY_QUERY_VALUE, @lnResult)
   
      IF lnError = ERROR_SUCCESS
        lnType = 0
        lcBuffer = SPACE(128)
        lnBufferSize = LEN(lcBuffer)
       
        lnError = RegQueryValueEx(lnResult, "ComputerName", lnReserved, ;
                                  @lnType, @lcBuffer, @lnBufferSize)

        IF lnError = ERROR_SUCCESS AND lcBuffer <> CHR(0)
          lnCompName = LEFT(lcBuffer, lnBufferSize - 1)
        ENDIF
      ENDIF
      =RegCloseKey(lnResult)
return(lnCompName)

4 Son düzenleyen, ugurlu2001 (31.03.2014 16:27:32)

Re: GETENV("........")

* Kodun yazarını not almamışım
* Public code from foxpro forums. I did not take note the Author's name

Visual Fox Pro
DECLARE aEnv[1,2]

 
? GetAllEnvStrings(@aEnv)
 
 
DISP MEMO LIKE aENV
 
FUNCTION GetAllEnvStrings
LPARAMETER aEnvArray
DECLARE INTEGER GetEnvironmentStrings IN WIN32API
DECLARE SHORT FreeEnvironmentStrings IN WIN32API INTEGER lpszEnvironmentBlock
DECLARE INTEGER lstrcpyn IN WIN32API AS StrCpyN ;
    STRING @ lpDestString, ;
    INTEGER lpSource, ;
    INTEGER nMaxLength
LOCAL nOffset, nEnvironmentBlock, cEnvString, nNumEntries, cEqualPos
DECLARE aEnvArray(1,2)
nNumEntries = 0
cEnvString = ' '
nOffset = 0
nEnvironmentBlock = GetEnvironmentStrings()
DO WHILE LEN(cEnvString) > 0
   cEnvString = REPL(CHR(0), 512)
   IF StrCpyN(@cEnvString, nEnvironmentBlock + nOffset, 512) # 0
      cEnvString = LEFT(cEnvString, MAX(0,AT(CHR(0),cEnvString) - 1))
      nEqualPos = AT('=',cEnvString)
      IF nEqualPos > 0
         nNumEntries = nNumEntries + 1
         DECLARE aEnvArray(nNumEntries,2)
         aEnvArray[nNumEntries,1] = LEFT(cEnvString,nEqualPos - 1)
         aEnvArray[nNumEntries,2] = SUBST(cEnvString, nEqualPos + 1)
         nOffset = nOffset + LEN(cEnvString) + 1
 
         ? cEnvString
 
         IF nNumEntries = 12
             EXIT
         ENDIF
      ENDIF
   ENDIF
ENDDO
=FreeEnvironmentStrings(nEnvironmentBlock)
RETURN nNumEntries
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

5

Re: GETENV("........")

Visual Fox Pro
*!*    http://blogs.msdn.com/b/calvin_hsia/archive/2005/12/09/502149.aspx

*!*    Author : Calvin Hsia
CLEAR ALL
CLEAR
 
oEnv=CREATEOBJECT("environ")
?"ComputerName=",oEnv.GetVar("ComputerName")
?"Test=",oEnv.GetVar("test")
oEnv.SetVar("test",TRANSFORM(DATETIME()))
?"Test=",oEnv.GetVar("test")
!set > d:\t.txt
TYPE d:\t.txt
 
DEFINE CLASS Environ as Custom
      PROCEDURE init
            DECLARE integer GetEnvironmentVariable IN WIN32API string, string @, integer dwSize
            DECLARE integer SetEnvironmentVariable IN WIN32API string lpName, string lpValue
      PROCEDURE GetVar(cVar as string)
            LOCAL nLen,cstr
            cstr=SPACE(200)
            nLen=GetEnvironmentVariable(cVar,@cstr, LEN(cstr))
            IF nLen>0
                  cstr=LEFT(cstr,nLen-1)
            ELSE
                  cstr=""
            ENDIF
            RETURN cstr
      PROCEDURE SetVar(cVar as string, cValue as String)
            SetEnvironmentVariable(cVar, cValue)
            return
 
ENDDEFINE
Uğur
-------------------------------------------------------------------------------------------------------------
Hayat bir bisiklete binmek gibidir. Pedalı çevirmeye devam ettiğiniz sürece düşmezsiniz. Claude Peppeer
Kusuru söylenmeyen adam, ayıbını hüner sanır.  Türk Atasözü

6

Re: GETENV("........")

arkadaşlar, teşekkürler.
Çok kullanıcılı bir RD uygulama yapmaya çalışıyordum. Bazı GETENV() komutları çok işime yarıyor. Başkaları da var mı diye merak etmiştim. Varmış - ve mutlaka birçok şey halledecek.

VFP9 SP2

7

Re: GETENV("........")

Bu çabalar ile belki herkesin bildiği bir detay keşfettim, belki faydam olur:

.exe olarak derlediğimiz bir program eğer içinde "path" olarak veya "default dir" olarak kendi çalışma yerini belirtmiyorsak, orada bulunan yardımcı dosyaları görmüyor.

Örneğimde system.app ile programım.exe aynı dizinde yan yana olmasına rağmen grafiklerde hata veriyordum.
SET PATH TO SYS(2004) ADDI   ile sorun halledildi.

VFP9 SP2

8

Re: GETENV("........")

Ali,
Environment variable listesi bir anlamda sonsuz. Belli bir listesi yok yani. Yeni bir program kendi kullanimi icin yeni bir degisken adi belirleyebilir. Ornegin GOPATH ve GOROOT, Go dilinin kullandigi iki degisken. Go ile calismayanlarin makinesinde yok (neyle ugrastigim belli oldu galiba:)

Bence environment variable'lara pek guvenerek is yapma. Alabiliyorsan istedigini win32API ile al.

9

Re: GETENV("........")

konuka yazdı:

Bu çabalar ile belki herkesin bildiği bir detay keşfettim, belki faydam olur:

.exe olarak derlediğimiz bir program eğer içinde "path" olarak veya "default dir" olarak kendi çalışma yerini belirtmiyorsak, orada bulunan yardımcı dosyaları görmüyor.

Örneğimde system.app ile programım.exe aynı dizinde yan yana olmasına rağmen grafiklerde hata veriyordum.
SET PATH TO SYS(2004) ADDI   ile sorun halledildi.

Bu bana garip geldi. VFP'nin normal search path'i exe'nin bulundugu yerden basliyor. Set path ya da set default ile baska bir yer gosterilmis olmasin. Gosterilmediyse zaten varsayilan exe'nin oldugu yer.

10 Son düzenleyen, konuka (01.04.2014 16:53:33)

Re: GETENV("........")

Ben de öyle biliyordum- çözene kadar saatlece süründüm,
Resmi gerçek uygulamada RD dan aldım.
---
aşağıdaki halde esas çalışan dosyam irsql_tr1.exe (kırmızı elips içinde)
içinden grafik çağırdığında "system.app" yi görmüyor. (kırmızı kutu)

blatı deneyecek kodu daha hazırlamadım, ne olur bilmiyorum.
ancak daha enteresan VFP*.dll leri görüyor, yoksa hiç çalışamazdı.

SET DEFA ..\14 kullanıyorum - (yıllara göre çöplük, yeşil kutu içinde)
dediğim gibi exe ye  PATH TO SYS(2004) ADDI ekleyince sorun kalktı.

İleti eklentileri

rdpencere.jpg
rdpencere.jpg 109.2 kb, 1 kez indirildi, 2014-04-01 tarihinden itibaren 

Bu iletideki eklenti/leri indirmeye yetkiniz yok.
VFP9 SP2