Página 1 de 1

Índices - Arquivos Temporários

Enviado: 14 Jan 2010 10:53
por Mário Isa
Alow!

Quando executo o comando INDEX ON

Ele está criando um arquivo .TMP lá numa pasta do windows vejam.
Este erro pode ter sido causado por causa que eu estou utilizando um software que inibe o acesso a algumas pastas do windows, para me proteger de vírus

Error DBFNTX/1061 Write error: C:\DOCUME~1\usuario1\CONFIG~1\Temp\xhtD7.tmp
Called from (b)ERRORSYS(72)
Called from ORDCREATE(0)
Called from INDEXON(9489)
Called from FAZ_NTX2(374)
Called from ABRE(213)
Called from USEI(292)
Called from TELAEROB(9)


Tem como "falar" pro programa que os arquivos .TMP (TEMP) / tem que ficar numa certa pasta de minha preferência ?

Abraços

Re: Índices - Arquivos Temporários

Enviado: 14 Jan 2010 11:00
por Mário Isa
Olhando o manual descobri que / se eu inserir a cláusula / TEMPORARY / no comando INDEX ON

diz, traduzido para o português:

Se esta opção for especificada, um índice temporário é criado, que é destruído automaticamente quando o índice está fechado. O índice temporário pode ser criada somente na memória ou em um arquivo temporário. Esta reside na responsabilidade do RDD utilizado para criação de índice.

Sim / tudo bem / se precisa criar um .TEMP / tudo bem / mas eu gostaria de especificar a pasta onde ele é criado / tem como ?

Mário

Re: Índices - Arquivos Temporários

Enviado: 14 Jan 2010 11:06
por Mário Isa
Acho que eu já descobri

Abrindo o AVISO DO MS-DOS e digitando SET <enter>

vemos / entre outras variáveis de ambiente:

TEMP=C:\DOCUME~1\note1\CONFIG~1\Temp
TMP=C:\DOCUME~1\note1\CONFIG~1\Temp

pelo jeito é isso:

Eu devo definir / ainda no aviso do DOS / digamos:

set TEMP=D:\MINHAPASTA
e
set TMP=D:\MINHAPASTA

Mas só tem jeito lá pelo DOS né ?

Teria algum comando do XHARBOUR para definir ?

É que eu quero "fugir" de ter que mexer nas config's do DOS. Porque se não teria que ir em cada cliente .
(A)

Re: Índices - Arquivos Temporários

Enviado: 15 Jan 2010 21:33
por Hasse
Olá Mario.

Bem eu tentaria e usaria uma das 5 formas abaixo:

1-Setar as variáveis TEMP e TMP via Painel de Controle -> Sistema -> Configurações avançadas do Sistema -> Variáveis de ambiente -> Variáveis de usuário. Alí você tem TEMP=%USERPROFILE%\AppData\Local\Temp. Altere para a pasta desejada.

2-Criar um BAT que seria disparado antes do executável MeuPrograma.exe. Alí as variáveis seriam setadas:
set TEMP=D:\MINHAPASTA
set TMP=D:\MINHAPASTA
MeuPrograma.exe


3-No Autoxec.nt que está na pasta System32 incluir os set's desejados.
set TEMP=D:\MINHAPASTA
set TMP=D:\MINHAPASTA


4-De dentro do PRG setar as variáveis, usando o comando RUN ou !:
RUN set TEMP=D:\MINHAPASTA
RUN set TMP=D:\MINHAPASTA


5-De dentro do PRG setar as variáveis, usando uma função API do Windows:
winexec("set TEMP=D:\MINHAPASTA")
winexec("set TMP=D:\MINHAPASTA")


Certamente uma destas formas vai satisfazer as tuas necessidades.

Re: Índices - Arquivos Temporários

Enviado: 15 Jan 2010 23:34
por alxsts
Olá!

Perdoem minha ignorancia sobre [x]Harbour. Não sei como funciona o processo de linkedição nessa plataforma.

Em Clipper, quando se utilizava o Blinker (não me lembro se isso é possível também no Exospace), podia-se definir ("burn") as variáveis de ambiente no próprio script de linkedição.
Exemplo:

Código: Selecionar todos

BLINKER EXECUTABLE CLIPPER //Dynf:8 //F:254 //TEMPPATH:'C:\WINDOWS\TEMP'
É uma idéia. Se for viável, o executável distribuido já conteria essa informação, sendo desnecessário alterar configurações de cada máquina.

Re: Índices - Arquivos Temporários

Enviado: 16 Jan 2010 07:54
por Mário Isa
obrigadão pelas dicas!
Valeu muito !

Mário
:xau :{

Re: Índices - Arquivos Temporários

Enviado: 16 Jan 2010 08:17
por Mário Isa
mas eu tentei / e de todas as formas não deu certo / a única forma q dá certo é a primeira / pelo painel de controle / sistema /////

nem mesmo pelo autoexec.nt não dá

:-´

Re: Índices - Arquivos Temporários

Enviado: 16 Jan 2010 10:29
por Euclides
Olá Mario,
no FWH, eu utilizo:

Código: Selecionar todos

 cTemp:=getenv("TEMP")+"\temp"
 ...
 index on <expression> to &cTemp

Nota: com 32 bits, manda para C:\DOCUME~1\<usuario>\CONFIG~1\Temp
      com 16 bits, manda para C:\windows\TEMP 
Espero que isso ajude,
Euclides

Índices - Arquivos Temporários

Enviado: 22 Mai 2017 19:39
por Mário Isa
Depois de tanto tempo tive que ressuscitar esse tópico por causa dos recentes ataques de virus daqueles tipos que compactam os arquivos do computador e criptografam e ainda pedem um $$$ prá devolver .....

então pensei ...

quero proteger minha pasta (onde estão meus programas) para que ninguém, a não ser o meu programa, tenha direito de alterar tais arquivos e ninguém mais ....

Tentei pela aba segurança e ainda não obtive sucesso.

Qq coisa posto aqui
:%

Índices - Arquivos Temporários

Enviado: 22 Mai 2017 21:08
por asimoes
Mário

Para definir uma variável de ambiente em tempo de execução:

SetEnvironmentVariable( "TEMP", "D:\TMP" )

Código: Selecionar todos

// -----------------------
// AUTOR: Alexandre Simäes
// 10-2012
// Miscellaneous functions
// -----------------------
//_WINMISC.CPP
//------------------------
#define _WIN32_WINNT   0x0400

#include <windows.h>
#include <shlobj.h>
#include <math.h>
#include "hbapi.h"
#include "hbvm.h"
#include "hbstack.h"
#include "hbapiitm.h"

#include "time.h"
#include "hbapifs.h"
#include <shellapi.h>
#include <shlwapi.h>
#include <lmcons.h>
#include <commctrl.h>

#ifndef LONG_PTR
#define LONG_PTR LONG
#endif

//-----------------------------------------------------------------------------
// WINBASEAPI LPSTR WINAPI GetEnvironmentStrings( VOID );

// note: returns the actual pointer

HB_FUNC( GETENVIRONMENTSTRINGS )
{
   hb_retnl( (LONG) GetEnvironmentStrings(  ) ) ;
}

//-----------------------------------------------------------------------------
// WINBASEAPI LPSTR WINAPI GetEnvironmentStrings( VOID );

HB_FUNC( FREEENVIRONMENTSTRINGS )
{
   hb_retl( (LONG) FreeEnvironmentStrings( (LPTSTR) hb_parnl(1) ) ) ;
}

//-----------------------------------------------------------------------------
// WINBASEAPI DWORD WINAPI GetEnvironmentVariableA( IN LPCSTR lpName, OUT LPSTR lpBuffer, IN DWORD nSize );

HB_FUNC( GETENVIRONMENTVARIABLE )
{
   UINT dwLen = MAX_PATH ;
   char *cText = (char*) hb_xgrab( MAX_PATH+1 );
   DWORD dwRet ;

   dwRet = GetEnvironmentVariableA( (LPCSTR) hb_parcx( 1 ),
                                    (LPSTR) cText ,
                                    (DWORD) dwLen
                                  ) ;
   hb_retclen( cText, dwRet );
   hb_xfree( cText );

}

//-----------------------------------------------------------------------------
// WINBASEAPI BOOL WINAPI SetEnvironmentVariableA( IN LPCSTR lpName, IN LPCSTR lpValue );

HB_FUNC( SETENVIRONMENTVARIABLE )
{
   hb_retl( SetEnvironmentVariableA( (LPCSTR) hb_parcx( 1 ),
                                     (LPCSTR) hb_parcx( 2 )
                                     ) ) ;
}