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 )
) ) ;
}