Clipper On Line • Ver Tópico - Índices - Arquivos Temporários

Índices - Arquivos Temporários

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Índices - Arquivos Temporários

Mensagempor Mário Isa » 14 Jan 2010 09:53

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
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Re: Índices - Arquivos Temporários

Mensagempor Mário Isa » 14 Jan 2010 10:00

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
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Re: Índices - Arquivos Temporários

Mensagempor Mário Isa » 14 Jan 2010 10:06

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)
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Re: Índices - Arquivos Temporários

Mensagempor Hasse » 15 Jan 2010 20:33

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.
Hasse
CP200 / CP500 / Basic / dBase III / dBase IV / Clipper Summer / RTlink / Exospace.
Clipper 5.3b / Blinker 7.0 / CDX com TAG
xHarbour 1.2.1-6604 / Borland C++ (5.5.1) 32 bit / HBmake.
Harbour 3.2.0dev (r1412121623) / MINGW / HBM2 / MiniGui HMG 3.1.4 / IDE (Roberto Lopez).
"Conheça todas as teorias, domine todas as técnicas, mas, quando tocares uma alma humana, seja apenas outra alma humana." (C.G.Jung)
Avatar de usuário

Hasse
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 815
Data de registro: 19 Out 2004 10:30
Cidade/Estado: Jaraguá do Sul - SC
Curtiu: 0 vez
Mens.Curtidas: 24 vezes

Re: Índices - Arquivos Temporários

Mensagempor alxsts » 15 Jan 2010 22:34

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:
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.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Re: Índices - Arquivos Temporários

Mensagempor Mário Isa » 16 Jan 2010 06:54

obrigadão pelas dicas!
Valeu muito !

Mário
:xau :{
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Re: Índices - Arquivos Temporários

Mensagempor Mário Isa » 16 Jan 2010 07:17

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á

:-´
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Re: Índices - Arquivos Temporários

Mensagempor Euclides » 16 Jan 2010 09:29

Olá Mario,
no FWH, eu utilizo:
 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
Euclides
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 154
Data de registro: 12 Mai 2007 14:07
Cidade/Estado: São Paulo, Capital
Curtiu: 1 vez
Mens.Curtidas: 14 vezes

Índices - Arquivos Temporários

Mensagempor Mário Isa » 22 Mai 2017 19:39

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
:%
Avatar de usuário

Mário Isa
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 902
Data de registro: 07 Jul 2004 13:54
Cidade/Estado: Ilha Solteira-sp
Curtiu: 5 vezes
Mens.Curtidas: 8 vezes

Índices - Arquivos Temporários

Mensagempor asimoes » 22 Mai 2017 21:08

Mário

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

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

// -----------------------
// 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 )
                                     ) ) ;
}
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro