Jump to content
Fivewin Brasil

Erro lógico


betovsp

Recommended Posts

Olá Pessoal, mais uma vez venho solicitar a ajuda de vcs.

Na Indexação dos meus arquivos, me deparei com um problema.

Quando ele está reindexando, e clico em um outro aplicativo aberto,as vezes a indexação volta ao inicio, as vezes dá erro de arquivo já em uso.

Agora, se deixo fazendo a indexação, no problemas.

Alguém já passou por isso.

Abraços.

Beto

betovsp@hotmail.com

(16)9148-1515

Ribeirão Preto/SP

Editado por - betovsp on 09/06/2004 13:30:33

Link to comment
Share on other sites

Olá Beto,

Isso é pq vc está, mandando dar um meter no On Paint da dialog icon_smile_big.gif, então toda vez que a dialog for pintada irá executar a operação, o q vc pode fazer seria, colocar uma var static, onde verificasse se já está ativa, e não processar novamente a ordenação

Abraços

Vagner Wirts

São Paulo-Brasil

Link to comment
Share on other sites

Lá vai Mauricio:

FUNCTION CriaCdx(indexa)

* -> Objetivo: Recria os indices dos arquivos de dados.

LOCAL oDlgCdx

PRIVATE qTotDbf:=DIRECTORY("DADOS\*.DBF","D")

PRIVATE qTotCdx:=DIRECTORY("DADOS\*.CDX","D")

PRIVATE dAllCdx:=IF(indexa==NIL,.T.,.F.)

PRIVATE ntotDbf:=0,nTotCdx:=0

PRIVATE oMetDbf,oMetCdx,fim:=.F.

PRIVATE oTxt1:=cTxt1:=oTxt2:=cTxt2:=" "

indexa:=IF(indexa==NIL,1,indexa)

IF dAllCdx

AEVAL(DIRECTORY(".\DADOS\*.cdx"),{|aFile| FErase(".\DADOS\"+aFile[1])})

END

CursorWait()

qTotDbf:=LEN(QTOTDBF)

qTotCdx:=LEN(QTOTCDX)

DEFINE FONT oFnt1 NAME "Tahoma" SIZE 0,-12

DEFINE DIALOG oDlgCdx FROM 1,15 TO 336,655 PIXEL STYLE nOr(DS_MODALFRAME,WS_POPUP,WS_VISIBLE,WS_DLGFRAME) COLOR nRgb(0,0,0),nRgb(214,211,206)

@ 4.5,1 GROUP oGroup1 TO 11,45 OF oDlgCdx

@ 1.9,9 BITMAP oBmp RESOURCE "Indice" SIZE 25,24 OF oDlgCdx

@ 2,20 SAY "Reorganização dos Arquivos de Sistema" FONT oFnt1 SIZE 150,8 OF oDlgCdx

@ 2.7,20 SAY "Aguarde o Término da Reorganização" FONT oFnt1 SIZE 150,8 OF oDlgCdx

@ 3.4,20 SAY "Obs.: Todas as Estações devem estar Fora do Sistema" FONT oFnt1 SIZE 180,8 OF oDlgCdx

@ 6.9,10.7 SAY oTxt1 VAR cTxt1 FONT oFnt1 SIZE 200,8 OF oDlgCdx

@ 6.6,7 METER oMetDbf VAR nTotDbf TOTAL qTotDbf FONT oFnt1 SIZE 210,10 OF oDlgCdx BARCOLOR nRgb(0,130,132),nRgb(255,255,255)

@ 9.2,10.7 SAY oTxt2 VAR cTxt2 FONT oFnt1 SIZE 200,8 OF oDlgCdx

@ 8.6,7 METER oMetCdx VAR nTotCdx TOTAL qTotCdx FONT oFnt1 SIZE 210,10 OF oDlgCdx BARCOLOR nRgb(0,130,132),nRgb(255,255,255)

ACTIVATE DIALOG oDlgCdx CENTER ON PAINT ScrolMeter(oDlgcdx,indexa) VALID(IF(!fim,MsgAlert("Aguarde o Término da Reorganização","Atenção"),),fim)

oFnt1:End() ; CursorArrow() ; SysRefresh() ; RETURN(NIL)

STATIC FUNCTION ScrolMeter(oDlgcdx,indexa)

while .T.

oMetDbf:Set(indexa)

IF indexa==1

oTxt1:SetText("Arquivo de Ruas")

USE DADOS\arqrua NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Ruas")

INDEX ON rua TAG rua EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por C.E.P.")

INDEX ON cep TAG cep EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 2

oTxt1:SetText("Arquivo de Agenda / Calendário")

USE DADOS\arqage NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Data")

INDEX ON data TAG data EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 3

oTxt1:SetText("Arquivo de Informações do Sistema")

USE DADOS\arqimp NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Situações")

INDEX ON estacao TAG estacao EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 4

oTxt1:SetText("Arquivo de Usuários do Sistema")

USE DADOS\arquse NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Nome do Usuário")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 5

oTxt1:SetText("Arquivo de Clientes")

USE DADOS\arqcli NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome/Razão Social")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por C.N.P.J.")

INDEX ON cgc TAG cgc EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 6

oTxt1:SetText("Arquivo de Especialidade do Cliente")

USE DADOS\arqatv NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Especialidade")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 7

oTxt1:SetText("Arquivo de Médicos")

USE DADOS\arqmed NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome/Razão Social")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por C.N.P.J.")

INDEX ON cgc TAG cgc EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 8

oTxt1:SetText("Arquivo de Visitas aos Médicos")

USE DADOS\arqmd1 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 9

oTxt1:SetText("Arquivo de Fornecedor")

USE DADOS\arqfor NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome/Razão Social")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por C.N.P.J.")

INDEX ON cgc TAG cgc EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 10

oTxt1:SetText("Arquivo de Representantes de Fornecedor")

USE DADOS\arqfo1 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 11

oTxt1:SetText("Arquivo de Produtos")

USE DADOS\arqmat NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON codmat TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Descrição")

INDEX ON nommat TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 12

oTxt1:SetText("Arquivo de Funcionários")

USE DADOS\arqfun NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por C.P.F.")

INDEX ON cgc TAG cgc EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Função")

INDEX ON fun TAG fun EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 13

oTxt1:SetText("Arquivo de Transportadoras")

USE DADOS\arqtra NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome/Razão Social")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por C.N.P.J.")

INDEX ON cgc TAG cgc EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 16

oTxt1:SetText("Arquivo de Bancos")

USE DADOS\arqbco NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 17

oTxt1:SetText("Arquivo do Contas a Receber")

USE DADOS\arqcar NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Fatura")

INDEX ON dupl TAG dupl DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Cliente")

INDEX ON codc+dupl TAG codc DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Emissão")

INDEX ON dtem TAG dtem EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Vencimento")

INDEX ON dtpr TAG dtpr EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Vendedor")

INDEX ON codv+espc TAG codv EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 18

oTxt1:SetText("Arquivo das Contas Financeiras")

USE DADOS\arqcta NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Descrição")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 19

oTxt1:SetText("Arquivo de Classificação Fiscal")

USE DADOS\arqclf NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código Fiscal")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Descrição")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 20

oTxt1:SetText("Arquivo de Pedidos")

USE DADOS\arqpd1 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Número de Pedido")

INDEX ON STR(pcpv,1)+nupd TAG nupd DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Código de Cliente")

INDEX ON STR(pcpv,1)+codc TAG codc DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 21

oTxt1:SetText("Arquivo de Pedidos")

USE DADOS\arqpd2 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Número de Pedido")

INDEX ON STR(pcpv,1)+nupd TAG nupd FOR !Deleted() EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 22

oTxt1:SetText("Arquivo de Pedidos")

USE DADOS\arqpd3 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Número de Pedido")

INDEX ON STR(pcpv,1)+nupd TAG nupd FOR !Deleted() EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa = 23

oTxt1:SetText("Arquivo do Contas a Pagar")

USE DADOS\arqcap NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Processos")

INDEX ON dupl TAG dupl DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Fornecedor")

INDEX ON codf TAG codf DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Emissão")

INDEX ON dtem TAG dtem DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nota Fiscal")

INDEX ON dcto TAG dcto DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 24

oTxt1:SetText("Arquivo de Produtos das Notas Fiscais de Compra")

USE DADOS\arqent NEW EXCLUSIVE

dbPack()

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Número da Nota Fiscal e Fornecedor")

INDEX ON nota+codf TAG nota FOR !Deleted() EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 25

oTxt1:SetText("Arquivo de Notas Fiscais de Compra")

USE DADOS\arqnfe NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Número da Nota Fiscal")

INDEX ON nota TAG nota DESCENDING EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Código do Fornecedor")

INDEX ON nota+codf TAG codf EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Data de Emissão")

INDEX ON dtem TAG dtem EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 26

oTxt1:SetText("Arquivo de Condições de Pagamento")

USE DADOS\arqcpg NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Descrição")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 27

oTxt1:SetText("Arquivo de Produtos")

USE DADOS\arqpro NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON codpro TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Descrição")

INDEX ON nompro TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Fornecedor do Produto")

INDEX ON forpro TAG for EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 28

oTxt1:SetText("Arquivo de Situações")

USE DADOS\arqsit NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Descrição")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 29

oTxt1:SetText("Arquivo de Cidades")

USE DADOS\arqcid NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código")

INDEX ON cod TAG cod EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nome")

INDEX ON nom TAG nom EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 30

oTxt1:SetText("Arquivo de Caixa")

USE DADOS\arqcx1 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Data")

INDEX ON data TAG data EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 31

oTxt1:SetText("Arquivo de Caixa - Lançamentos")

USE DADOS\arqcx2 NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Data")

INDEX ON data TAG data EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Nº de Documento")

INDEX ON docto TAG docto EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

ELSEIF indexa == 32

oTxt1:SetText("Arquivo de Movimentação Bancária")

USE DADOS\arqctb NEW

oMetCdx:nTotal:=RecCount()

oTxt2:SetText("Indexando o Arquivo Por Código/Documento")

INDEX ON codb+docb TAG docb EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

oTxt2:SetText("Indexando o Arquivo Por Código/Data")

INDEX ON codb+DTOS(data) TAG codb EVAL (CursorWait(),oMetCdx:Set(RecNo()),SysRefresh())

END

dbCloseArea()

IF dAllCdx .AND. indexa <= qTotDbf

indexa++

ELSE

EXIT

END

END

fim:=.T.

oDlgCdx:End() ; CursorArrow() ; RETURN(NIL)

Beto

betovsp@hotmail.com

(16)9148-1515

Ribeirão Preto/SP

Link to comment
Share on other sites

O que eu Faço e o seguinte coloco um botao de confirmaçao no dialogo e so ativo a indexaçào atraves do botao de confirmacao , a resposta que o vagner deu é o que esta acontecendo .

Tenho certeza que se vc colocar qualquer perg. que seja neste forum : vc nao deixara de ser respondido.

Um Abraço

Mauricio (RJ)

Link to comment
Share on other sites

Ke tal Colocar botoes??? Como abaixo?

REDEFINE BUTTON oAceitar ID 701 OF oDlg ;

ACTION( Click(), ReIndPack( lPack, oMeter1, oMeter2, ;

oMeter3 ), oDlg:End() )

oAceitar:cToolTip = ( OemToAnsi( "Indexar os Bancos de Dados!" ) )

REDEFINE BUTTON oCancelar ID 702 OF oDlg ACTION( oDlg:End() )

oCancelar:cToolTip = ( OemToAnsi( "Cancelar Indexa‡Æo dos Bancos de Dados!" ) )

// Depois de , Desligar botoes como eu faco!

oAceitar:Disable()

oCancelar:Disable()

//

Ou entao...

//

Static lAbertura := .F.

Function Indexar()

Local oBrush, oBar, oHand, oIco

Local NN

Local cBmpFile := ( "FundoWnd.Bmp" )

// Para Impedir Uma 2¦ Abertura de Janela!!!

IF lAbertura = .F.

lAbertura := .T.

ELSE

SndPlaySound(".\Erro.wav" )

MsgInfo( OemToAnsi( "Esta Janela J  Est  em Uso..." +CRLF+ ;

"Verifique Rodap‚ do Windows." +CRLF+ ;

"Ou Minimize o Programa... " +CRLF+ ;

"Pois Ela Pode Estar Por Tr s" +CRLF+ ;

"do Menu Principal. Verifique!"), ;

"Verifique, Por Favor!" )

SndPlaySound(".\Lembrete.wav" )

RETURN NIL

ENDIF

//...Bla bla

RETURN NIL

João Santos

São Paulo-Brasil

(11) 3106-2832 a Noite

karinhannah@ubbi.com.br

Link to comment
Share on other sites

Ola Beto

em vez de usar o PAINT na diagol eu utilizo desta forma e não tenho o problema com erros e o usuario pode inclusive ficar passeando com a DIALOG pela Tela

LOCAL lEsc := False

oScr:bStart := {||__Indexa( oMeter, oScr ),;

lEsc := True, oScr:End() }

ACTIVATE DIALOG oScr CENTERED VALID lEsc

Elias Abrão Júnior

Fone : (0**19) 3885-3447 São Paulo - SP

eajunior.fw@terra.com.br

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...