-
Posts
455 -
Joined
-
Last visited
-
Days Won
7
Posts posted by rubensma
-
-
-
Boa tarde.
Estava procurando também outra IDE para os projetos, vou sair da xDev que é fantástica como disse, muita gratidão mesmo ao Vailton.
Grato por compartilhar os links, vou ver o que consigo. Quem tiver algumas dicas, por favor postar aqui.
Abraços
-
Boa tarde.
Resgatei esse tópico antigo somente para registrar que hoje tive esse erro E0032 porque no projeto novo que criei, que copiei de outro programa tinha um arquivo xxx.c que estava sendo direcionado a uma pasta \obj que não exestia.
Foi só criar a pasta que voltou ao normal.
Procurei pelo erro e só achei esse tópico. Fica a dica ai.
Obrigado
-
Olá, boa tarde.
Uso dessa forma para importar planilhas xls, e vai muito bem sem muita demora, se quiser tentar tem dois modelos ai
#include "fivewin.ch"
#include "Fileio.ch"
#include "Inkey.ch"
#define SW_NORMAL 1
#define SW_RESTORE 9
//--------------------------------------------------------------------
// Importar a planilha do excel - cadastro de funcionários
function importacad()cMod := "ARQUIVOS DE APOIO"
cSer := "Entrada no módulo de importação dos cadastros de funcionários"
registra( cMod , cSer )MsgMeter( {|oMeter,oText|LerXLScadastro(1,oMeter,oText)}," ", "Importando arquivo do Excel" )
return nil
**************************************************************************
* Montagem de arquivos de apoio - importação do cadastro direto do excel *
**************************************************************************
Function LerXLScadastro(vTot,oMeter,oText)
Local vEsc := .f. // teste se foi teclado esc
if !msgNoYes("Será importado do Excel o arquivo cadastro de funcionários!"+;
chr(13)+chr(13)+"Deseja continuar?","..: Atenção :..")
Return nil
Endif
cArq1 := cGetFile32("cadast*.X*","Escolha o arquivo a importar")
If !File(cArq1) .or. ! "cadastro" $ cArq1
msginfo("Arquivo inválido ou não disponível."+chr(13)+;
"Verifique o nome do arquivo !","Informação")
Return nil
Endif
oExcel:=TOleAuto():New("Excel.Application")
oBook := oExcel:Workbooks:Open(cArq1)
oHoja := oExcel:Get( "ActiveSheet" )
nTotRowCount := oHoja:UsedRange:Rows:Count() // TOTAL DE LINHAS DO ARQUIVO
dbSelectArea( "cad" ) // zerar o arquivo base
cad->( dbzap() ) // arquivo foi aberto com uso exclusivo
oMeter:nTotal := nTotRowCount - 2 // descontar o cabeçalho
nCount := 0
FOR Q = 3 TO nTotRowCount // começa na linha
cad->( dbAppend() )
cad->( rlock() )
cad->filial := iif(oHoja:Cells( Q, 1 ):Value == nil,"",oHoja:Cells( Q, 1 ):Value)
cad->matricula := iif(oHoja:Cells( Q, 2 ):Value == nil,0,oHoja:Cells( Q, 2 ):Value)
cad->nome := iif(oHoja:Cells( Q, 3 ):Value == nil,"",oHoja:Cells( Q, 3 ):Value)
cad->datadm := iif(oHoja:Cells( Q, 4 ):Value == nil,ctod(" / / "),oHoja:Cells( Q, 4 ):Value) //oHoja:Cells( Q, 4 ):Value
cad->situacao := iif(oHoja:Cells( Q, 5 ):Value == nil,"",oHoja:Cells( Q, 5 ):Value)
cad->ccusto := iif(oHoja:Cells( Q, 6 ):Value == nil,"",oHoja:Cells( Q, 6 ):Value)
cad->tipo := iif(oHoja:Cells( Q, 7 ):Value == nil,"",oHoja:Cells( Q, 7 ):Value)
cad->gerencia := iif(oHoja:Cells( Q, 8 ):Value == nil,"",oHoja:Cells( Q, 8 ):Value)
cad->area := iif(oHoja:Cells( Q, 9 ):Value == nil,"",oHoja:Cells( Q, 9 ):Value)
cad->(Dbunlock() )
oMeter:Set(++nCount)
oText:SetText("Importando cadastro de funcionários!"+chr(13)+;
"Processando Registro : "+str(nCount,6)+"/"+str(oMeter:nTotal,6) )
if lastkey() = 27
vEsc := .t.
exit
endif
NEXT
oExcel:WorkBooks:Close()
oExcel:Application:Quit()
RELEASE oHoja
RELEASE oExcel
if vEsc
msginfo("Importação interrompida pelo usuário")
else
msginfo("Arquivo importado com sucesso!")
endif
cad->( dbGoTop() )
browse()
Return nilOutro, com campos numéricos
***************************************************************************
* Montagem de arquivos de apoio - importação da tabela de código do excel *
***************************************************************************
Function LerXLStabela(vTot,oMeter,oText)
Local vEsc := .f. // teste se foi teclado esc
if ! msgNoYes("Será importado do Excel o arquivo tabela de códigos!"+;
chr(13)+chr(13)+"Deseja continuar?","..: Atenção :..")
Return nil
Endif
cArq2 := cGetFile32("Tabela de códigos|Tabe*.XL*|","Escolha o arquivo a importar")
If ! File(cArq2) .or. ! "Tabela" $ cArq2
msginfo("Arquivo inválido ou não disponível."+chr(13)+;
"Tente novamente !","Informação")
Return nil
Endif
oExcel:=TOleAuto():New("Excel.Application")
oBook := oExcel:Workbooks:Open(cArq2)
oHoja := oExcel:Get( "ActiveSheet" )
nTotRowCount := oHoja:UsedRange:Rows:Count() // TOTAL DE LINHAS DO ARQUIVO
dbSelectArea( "tab" ) // zerar o arquivo base
tab->( dbzap() ) // arquivo foi aberto com uso exclusivo
oMeter:nTotal := nTotRowCount - 1 // descontar o cabeçalho
*::: Formato de Columnas
//oHoja:Columns( 22 ):Set("NumberFormat","@") // formatar a coluna para texto
//oHoja:Columns( 23 ):Set("NumberFormat","@") // formatar a coluna para texto
nCount := 0
FOR Q = 2 TO nTotRowCount // começa na linha
tab->( dbAppend() )
tab->( rlock() )
tab->cod := iif(oHoja:Cells( Q, 1 ):Value == nil, 0,oHoja:Cells( Q, 1 ):Value)
tab->desc := iif(oHoja:Cells( Q, 2 ):Value == nil,"",oHoja:Cells( Q, 2 ):Value)
tab->in := iif(oHoja:Cells( Q, 3 ):Value == nil,"",oHoja:Cells( Q, 3 ):Value)
tab->ir := iif(oHoja:Cells( Q, 4 ):Value == nil,"",oHoja:Cells( Q, 4 ):Value)
tab->fg := iif(oHoja:Cells( Q, 5 ):Value == nil,"",oHoja:Cells( Q, 5 ):Value)
tab->br := iif(oHoja:Cells( Q, 6 ):Value == nil,"",oHoja:Cells( Q, 6 ):Value)
tab->de := iif(oHoja:Cells( Q, 7 ):Value == nil,"",oHoja:Cells( Q, 7 ):Value)
tab->lq := iif(oHoja:Cells( Q, 8 ):Value == nil,"",oHoja:Cells( Q, 8 ):Value)
tab->es := iif(oHoja:Cells( Q, 9 ):Value == nil,"",oHoja:Cells( Q, 9 ):Value)
tab->dp := iif(oHoja:Cells( Q,10 ):Value == nil,"",oHoja:Cells( Q, 10 ):Value)
tab->ra := iif(oHoja:Cells( Q,11 ):Value == nil, 0,oHoja:Cells( Q, 11 ):Value)
tab->un := iif(oHoja:Cells( Q,12 ):Value == nil,"",oHoja:Cells( Q, 12 ):Value)
tab->di := iif(oHoja:Cells( Q,13 ):Value == nil,"",oHoja:Cells( Q, 13 ):Value)
tab->vig := iif(oHoja:Cells( Q,14 ):Value == nil,"",oHoja:Cells( Q, 14 ):Value)
tab->un1 := iif(oHoja:Cells( Q,15 ):Value == nil,"",oHoja:Cells( Q, 15 ):Value)
tab->un2 := iif(oHoja:Cells( Q,16 ):Value == nil,"",oHoja:Cells( Q, 16 ):Value)
tab->fx := iif(oHoja:Cells( Q,17 ):Value == nil,"",oHoja:Cells( Q, 17 ):Value)
tab->val_ := iif(oHoja:Cells( Q,18 ):Value == nil,"",oHoja:Cells( Q, 18 ):Value)
tab->dup := iif(oHoja:Cells( Q,19 ):Value == nil,"",oHoja:Cells( Q, 19 ):Value)
tab->rend := iif(oHoja:Cells( Q,20 ):Value == nil, 0,oHoja:Cells( Q, 20 ):Value)
tab->t1 := iif(oHoja:Cells( Q,21 ):Value == nil, 0,oHoja:Cells( Q, 21 ):Value)
tab->cont := iif(oHoja:Cells( Q,22 ):Value == nil, 0,oHoja:Cells( Q, 22 ):Value)
tab->t2 := iif(oHoja:Cells( Q,23 ):Value == nil, 0,oHoja:Cells( Q, 23 ):Value)
if ValType( oHoja:Cells( Q,24 ):Value ) = "N" // se for campo numérico
tab->deb := iif(oHoja:Cells( Q,24 ):Value == nil,0,str(oHoja:Cells( Q, 24 ):Value))
else
tab->deb := iif(oHoja:Cells( Q,24 ):Value == nil,"",oHoja:Cells( Q, 24 ):Value)
endif
if ValType( oHoja:Cells( Q,25 ):Value ) = "N" // se for campo numérico
tab->cre := iif(oHoja:Cells( Q,25 ):Value == nil,0,str(oHoja:Cells( Q, 25 ):Value))
else
tab->cre := iif(oHoja:Cells( Q,25 ):Value == nil,"",oHoja:Cells( Q, 25 ):Value)
endif
tab->dg := iif(oHoja:Cells( Q,26 ):Value == nil, 0,oHoja:Cells( Q, 26 ):Value)
tab->(Dbunlock() )
oMeter:Set(++nCount)
oText:SetText("Importando tabela de códigos!"+chr(13)+;
"Processando Registro : "+str(nCount,6)+"/"+str(oMeter:nTotal,6) )
if lastkey() = 27
vEsc := .t.
exit
endif
NEXToExcel:WorkBooks:Close()
oExcel:Application:Quit()
RELEASE oHoja
RELEASE oExcel
if vEsc
msginfo("Importação interrompida pelo usuário")
else
msginfo("Arquivo importado com sucesso!")
endif
tab->( dbGoTop() )
//browse()
Return nil -
Bom-dia!
Simplesmente parou de funcionar enviar dados para o Excel no mesmo Windows 10 que estava funcionando, acho que depois de uma atualização
Segue parte do PRG e Log de erro
function gerarlote(vTot,oMeter,oText,nOption,numlote)
LOCAL oExcel, oHojadbSelectArea( "con" ) // seleciona arquivo contábil
con->( dbGoTop() )
vNomenum := "Lote_"+"&numlote."+".txt" // usando macro precisa por ponto
if nOption = 2 // foi selecionado arquivo texto
copy to &vNomenum delimited // separado por virgula
WinExec("Notepad &vNomenum",1) // 1 = diretorio corrente
return nil
endif
nRow := 1 // reinicia a linha da planilha
nCount := 0 // Zerar o total do meter
oExcel := TOleAuto():New( "Excel.Application" ) <======== AQUI O ERRO
oExcel:WorkBooks:Add()
oHoja := oExcel:Get( "ActiveSheet" )
*::: Seleciona a guia BOLETINS para preenchimento
//oExcel:Sheets("Planilha1"):Name := "Boletins" // nomear a 1ª guia
//oExcel:Sheets("Boletins"):Select() // selecionar a guia nomeada
oMeter:cCaption := "Lote dos Boletins"
oHoja := oExcel:Get( "ActiveSheet" )FOR nCol := 1 TO FCOUNT() // percorrer todas as colunas
oHoja:Cells( nRow, nCol ):Value := FieldName( nCol )
// linhadegrade(oHoja,nRow,nCol)
NEXTError.log
Application
===========
Path and name: C:\Boletim\boletim.EXE (32 bits)
Size: 4,255,744 bytes
Compiler version: xHarbour 1.2.3 Intl. (SimpLex) (Build 20180715)
FiveWin version: FWH 18.05
C compiler version: Borland/Embarcadero C++ 7.3 (32-bit)
Windows version: 6.2, Build 9200Time from start: 0 hours 2 mins 45 secs
Error occurred at: 02/02/2020, 22:31:06
Error description: Error TOleAuto/65535 : TOLEAUTO:NEW
Args:
[ 1] = C Excel.ApplicationStack Calls
===========
Called from: => THROW( 0 )
Called from: source\rtl\win32ole.prg => TOLEAUTO:NEW( 0 )
Called from: C:\Boletim\excel_bol.prg => GERARLOTE( 584 )
Called from: C:\Boletim\excel_bol.prg => (b)ENVIA_BOLETIM( 556 )
Called from: C:\Boletim\excel_bol.prg => (b)MSGMETER( 216 )
Called from: .\source\classes\DIALOG.PRG => (b)TDIALOG:TDIALOG( 94 )
Called from: => TDIALOG:DISPLAY( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1037 )
Called from: => DIALOGBOXINDIRECT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 287 )
Called from: C:\Boletim\excel_bol.prg => MSGMETER( 219 )
Called from: C:\Boletim\excel_bol.prg => ENVIA_BOLETIM( 556 )
Called from: C:\Boletim\excel_bol.prg => (b)MONTARLOTE( 285 )
Called from: .\source\classes\BUTTON.PRG => TBUTTON:CLICK( 179 )
Called from: .\source\classes\CONTROL.PRG => TBUTTON:HANDLEEVENT( 1686 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3451 )
Called from: => SENDMESSAGE( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:COMMAND( 409 )
Called from: => TWINDOW:HANDLEEVENT( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:HANDLEEVENT( 1050 )
Called from: => DIALOGBOX( 0 )
Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 287 )
Called from: C:\Boletim\excel_bol.prg => MONTARLOTE( 290 )
Called from: C:\Boletim\BOLETIM.PRG => (b)MAIN( 186 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 693 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 970 )
Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1722 )
Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1953 )
Called from: .\source\classes\WINDOW.PRG => _FWH( 3451 )
Called from: => WINRUN( 0 )
Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1052 )
Called from: C:\Boletim\BOLETIM.PRG => MAIN( 267 )System
======
CPU type: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz 2195 Mhz
Hardware memory: 8095 megsFree System resources: 90 %
GDI resources: 90 %
User resources: 90 %Windows total applications running: 6
1 ,
2 , C:\Boletim\boletim.EXE
3 , C:\WINDOWS\System32\shcore.dll
4 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.17763.914_none_4d607d8
5 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL
6 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.17763.914_none_7e4b706e762fa5cVariables in use
================
Procedure Type Value
==========================
THROW
Param 1: O Class: ERROR
Local 1: U
Local 2: U
TOLEAUTO:NEW
Param 1: C "Excel.Application"
Local 1: U
Local 2: U
Local 3: O Class: TOLEAUTO
Local 4: O Class: ERROR
Local 5: C "C"
GERARLOTE
Param 1: N 1
Param 2: O Class: TMETER
Param 3: O Class: TSAY
Param 4: N 1
Param 5: C " "
Local 1: U
Local 2: U
(b)ENVIA_BOLETIM
Param 1: O Class: TMETER
Param 2: O Class: TSAY
Param 3: O Class: TDIALOG
Param 4: L .F.
Param 5: O Class: TBUTTON
(b)MSGMETER
Param 1: U
(b)TDIALOG:TDIALOG
Param 1: O Class: TDIALOG
TDIALOG:DISPLAY
TDIALOG:HANDLEEVENT
Param 1: N 15
Param 2: N 0
Param 3: N 0
Local 1: O Class: TDIALOG
DIALOGBOXINDIRECT
Param 1: N 4194304
Param 2: C "€ È€ &ÿ·ÿŸ E E x p o r t a n d o o a r q u i v o c o n t a b i l P , v S T A T I C P # — w T M E T E R P > 4 ! x B U T T O N & C a n c e l a "
Param 3: N 855676
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: B {|| ... }
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Local 1: O Class: TDIALOG
Local 2: N 855676
Local 3: U
Local 4: U
Local 5: U
Local 6: O Class: TDIALOG
MSGMETER
Param 1: B {|| ... }
Param 2: C " "
Param 3: C "Exportando o arquivo contabil"
Local 1: O Class: TDIALOG
Local 2: O Class: TMETER
Local 3: O Class: TSAY
Local 4: O Class: TBUTTON
Local 5: O Class: TFONT
Local 6: L .F.
Local 7: L .F.
Local 8: N 0
ENVIA_BOLETIM
(b)MONTARLOTE
Param 1: O Class: TBUTTON
TBUTTON:CLICK
Local 1: O Class: TBUTTON
TBUTTON:HANDLEEVENT
Param 1: N 2048
Param 2: N 0
Param 3: N 0
Local 1: O Class: TBUTTON
Local 2: U
_FWH
Param 1: N 0
Param 2: N 2048
Param 3: N 0
Param 4: N 0
Param 5: N 28
Local 1: O Class: TBUTTON
SENDMESSAGE
Param 1: N 3736930
Param 2: N 2048
Param 3: N 0
Param 4: N 0
TDIALOG:COMMAND
Param 1: N 302
Param 2: N 3736930
Local 1: O Class: TDIALOG
Local 2: O Class: TBUTTON
Local 3: N 0
Local 4: N 302
Local 5: N 3736930
Local 6: U
TWINDOW:HANDLEEVENT
Param 1: N 273
Param 2: N 302
Param 3: N 3736930
TDIALOG:HANDLEEVENT
Param 1: N 273
Param 2: N 302
Param 3: N 3736930
Local 1: O Class: TDIALOG
DIALOGBOX
Param 1: N 4194304
Param 2: C "montalote"
Param 3: N 5244362
Param 4: O Class: TDIALOG
TDIALOG:ACTIVATE
Param 1: U
Param 2: U
Param 3: U
Param 4: L .T.
Param 5: U
Param 6: L .T.
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Local 1: O Class: TDIALOG
Local 2: N 5244362
Local 3: U
Local 4: U
Local 5: U
Local 6: O Class: TDIALOG
MONTARLOTE
Local 1: O Class: TDIALOG
Local 2: U
Local 3: O Class: TBUTTON
Local 4: U
Local 5: U
Local 6: U
Local 7: U
Local 8: U
Local 9: U
(b)MAIN
Param 1: O Class: TBTNBMP
TBTNBMP:CLICK
Local 1: O Class: TBTNBMP
TBTNBMP:LBUTTONUP
Param 1: N 36
Param 2: N 37
Param 3: O Class: TBTNBMP
Local 1: U
Local 2: L .T.
Local 3: N 0
TCONTROL:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 2359333
Local 1: O Class: TBTNBMP
Local 2: U
TBTNBMP:HANDLEEVENT
Param 1: N 514
Param 2: N 0
Param 3: N 2359333
Local 1: O Class: TBTNBMP
_FWH
Param 1: N 2359333
Param 2: N 514
Param 3: N 0
Param 4: N 2359333
Param 5: N 7
Local 1: O Class: TBTNBMP
WINRUN
Param 1: N 5244362
TWINDOW:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: U
Param 7: U
Param 8: B {|| ... }
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: U
Param 18: U
Param 19: U
Param 20: L .F.
Local 1: O Class: TWINDOW
Local 2: U
Local 3: U
MAINLinked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFCDX
DBFNTXDataBases in use
================1: SENHAS RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 7 .F. .F.Indexes in use TagName
=> upper(senhas->usuari) USUARIRelations in use
2: SIS RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
2808 2808 .F. .F.Indexes in use TagName
Relations in use
3: DIA RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 0 .T. .T.Indexes in use TagName
Relations in use
4: NUM RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 1194 .F. .F.Indexes in use TagName
Relations in use
5: LTS RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
186 186 .F. .F.Indexes in use TagName
Relations in use
6: FUN RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
580 1998 .F. .F.Indexes in use TagName
=> fun->matricula FUNRelations in use
7: CAD RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 1996 .F. .F.Indexes in use TagName
=> cad->matricula CADRelations in use
8: TAB RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 763 .F. .F.Indexes in use TagName
=> tab->cod TABRelations in use
9: ERR RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 0 .T. .T.Indexes in use TagName
Relations in use
10: BIN RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
3319 3318 .F. .T.Indexes in use TagName
Relations in use
11: LHO RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 16 .F. .F.Indexes in use TagName
Relations in use
12: => CON RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 8 .F. .F.Indexes in use TagName
=> con->histor HISTORRelations in use
13: PAR RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 0 .T. .T.Indexes in use TagName
Relations in use
14: IND RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 5 .F. .F.Indexes in use TagName
Relations in use
15: MEM RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 1 .F. .F.Indexes in use TagName
Relations in use
16: CACF RddName: DBFCDX
==============================
RecNo RecCount BOF EOF
1 9 .F. .F.Indexes in use TagName
Relations in use
Classes in use:
===============
1 ERROR
2 HASHENTRY
3 HBCLASS
4 HBOBJECT
5 TINI
6 TFONT
7 TWINDOW
8 TCONTROL
9 TICON
10 TBRUSH
11 TMENU
12 TREG32
13 TMENUITEM
14 TBAR
15 TRECT
16 TBTNBMP
17 TMSGBAR
18 TMSGITEM
19 TTIMER
20 TBITMAP
21 TDIALOG
22 TGET
23 GET
24 TCLIPGET
25 TBUTTON
26 TWBROWSE
27 TSCROLLBAR
28 TRADMENU
29 TRADIO
30 TCHECKBOX
31 TSAY
32 TMETER
33 TOLEAUTO
34 TSTRUCTMemory Analysis
===============
1200 Static variablesDynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes -
Valeu Kapi, grato por responder
-
Bom-dia!
Não achei bitmaps (pode ser 16x16 ou pouco maior) das fases da lua, para imprimir num calendário
Aqui tenho restrições de procura na internet, então se alguém tiver ai agradeço.
-
oExcel := TOleAuto():New( "Excel.Application" )
oExcel:Workbooks:Open(cXlsArquivo)
oFolha := oExcel:Get( "ActiveSheet" )
nTotRow:= oFolha:UsedRange:Rows:Count()FOR n := 6 TO nTotRow
dDATA := oExcel:Cells(n,2):Value
? dDATA
? VALTYPE(dDATA)
Nesse seu exemplo, não seria:
dDATA := oFolha:oExcel:Cells(n,2):Value
-
Olá.
Essa célula é de formato data e ao exibí-la aparece 13/04/18 00:00:00.000.
Porém ao ver o tipo com ValType() aparece .T., de modo que não posso usar CTOD()
Obrigado
No meu caso a célula esta formatada no excel para "dd/mm/yy"
-
Ola,
Veja se ajuda, faço assim
FOR nCol := 1 TO FCOUNT()
if ValType( FieldGet( nCol ) ) = "D" // se for campo data converte p/string
oHoja:Cells( nRow, nCol ):Value := dtoc(FieldGet( nCol ))
else
if ValType( FieldGet( nCol ) ) = "N" // se for campo numérico
oHoja:Cells( nRow, 7 ):NumberFormat = "###.##0,00" // FORMATAR numerico
else
oHoja:Cells( nRow, nCol ):NumberFormat = "@" // FORMATAR TEXTO
endif
oHoja:Cells( nRow, nCol ):Value := FieldGet( nCol ) // OUTRO FORMATO
endif
NEXT
-
Valeu João, muito importante, já havia perdido um .RES, não tinha essa informação.
Obrigado pela dica.
Abs
-
Uma dúvida, qual a diferença de arquivo RES e RC, sempre usei RES
-
-
Valdir, o que faz esse comando
::Assign()
-
-
Quer uma solução bem arcaica, fiz pra quebrar o galho e ainda está lá. Coloquei botões falsos no meio, sem nada, dá até vergonha de postar isso, mas
DEFINE BUTTON oBtn3 FILE "source.BMP" OF oBar ;
ACTION imprimir() ; // relboletim.prg
TOOLTIP "Imprimir os boletins." ;
MESSAGE oemtoansi("Imprimir os boletins gravados") ;
GROUP ;
NOBORDERDEFINE BUTTON oBtn11 FILE "" OF oBar ;
ACTION nil ; //calend() ;
TOOLTIP "" ;
MESSAGE "" ;
NOBORDERDEFINE BUTTON oBtn12 FILE "" OF oBar ;
ACTION nil ; //calend() ;
TOOLTIP "" ;
MESSAGE "" ;
NOBORDERDEFINE BUTTON oBtn4 FILE "exit.bmp" OF oBar ;
ACTION msgYesNo("Deseja sair do programa ?","Informacao", sair(oWnd) , oWnd:End(.t.) ) ; //oWnd:End(.t.)
TOOLTIP "Finalizar" ;
MESSAGE "Finalizar o aplicativo" ;
NOBORDER -
Assim também retorna caracter
oINI:= TIni():New(cIniFile)
gerabol := oINI:GET("config" , "gerabol")
deixei o valor de 3,40 mas ficou caracter não numérico
[config]
gerabol=3.40 -
No Crome está baixando normal, obrigado pela disponibilização.
-
O Google liberou um novo conjunto de recursos de detecção de objetos inteligentes para a comunidade de código aberto como parte do desenvolvimento contínuo de sua estrutura TensorFlow.
A API de Detecção de Objeto TensorFlow fornece aos cientistas de dados e aos desenvolvedores acesso à mesma tecnologia que o Google usa para seus próprios sistemas, como o Nest Cam, itens similares na Pesquisa de imagens e identificação de número de rua no Street View. O sistema que o Google lançou ganhou o desafio de detecção de objetos da Microsoft Common Objects in Context (COCO) no ano passado, superando outras 23 equipes.
A primeira versão de código aberto do Google inclui um conjunto de modelos treináveis que são criados para detecção de objetos. Também estão incluídos um conjunto de parâmetros para os modelos que foram treinados no conjunto de dados do COCO, de modo que é possível que os usuários comecem com a API sem tomar o tempo para treinar os modelos. Um notebook incluído da Jupyter encaminhará os usuários interessados para testar as novas capacidades.
Para aqueles desenvolvedores e cientistas de dados que querem treinar seus próprios modelos, o Google incluiu scripts para fazê-lo localmente, bem como no conjunto de serviços de nuvem da empresa.
A intenção do Google é trazer as ferramentas de Inteligência Artificial para as massas e pode ajudar a acelerar a criação de sistemas inteligentes mais avançados, permitindo que outros cientistas de dados e desenvolvedores se desenvolvam no topo do trabalho existente da Google.
Esses recursos também podem ajudar a dar ao TensorFlow uma vantagem quando se trata de compartilhar entre pessoas que usam diferentes estruturas de aprendizagem de máquinas . O Google não é o único: a Microsoft oferece o seu Cognitive Toolkit , enquanto a Amazon está apoiando o Apache MXNet e o Facebook derrubou o Caffe2 e PyTorch.
Um dos principais benefícios desta versão é que o Google lançou um sistema de detecção de objetos que pode ser executado em dispositivos móveis como parte deste projeto. Baseia-se nos modelos de reconhecimento de imagens do MobileNets que o gigante tecnológico abriu anteriormente.
-
Sim Jorge, com certeza daria erro, também não sei acho que modifiquei no tópico, mas agora está assim e funcionando,
// definição do número do boletim e registro no arquivo
dbSelectArea( "num" ) // registro dos numeros dos boletins
num->( dbGoBottom() ) // capturar o ultimo boletim registrado
nNumbol := num->numero + 1 // proxino numero
cSay1 := strzero(nNumbol,4)+str(year(date()),4) // nro. sequencial dos boletins
num->( dbAppend() )
num->( rLock() )
num->data := date()
num->hora := time()
num->numero := val(substr(cSay1,1,4)) // guarda o numero gerado
num->tipo := STR(nRad,1) // boletim de inclusao ou exclusão
num->status := "L" // boletim gerado pelo programa
num->usuario := cUsuario // usuario que logou
num->( dbUnlock() )// captura o numero inicial e final dos boletins para impressão
do case
case w = 1
boleini := cValToChar(nNumbol) //strzero(nNumbol,4)
boleano := year(date())
case w = 3
bolefim := cValToChar(nNumbol) //strzero(nNumbol,4)
boleano := year(date())
endcase
Bem observado, tá ligado heim
Abraços
-
Boa noite,
Valeu o cValToChar() resolveu.
Toda vida usei o STR() para mudar de numero para caracter, mas nesse não deu, depois vou tentar descobrir o que houve.
Obrigado pelas respostas parceiros.
// captura o numero inicial e final dos boletins para impressão
do case
case w = 1
boleini := cValToChar(nNumbol) //str(nNumbol)
boleano := year(date())
case w = 3
bolefim := cValToChar(nNumbol) //str(nNumbol)
boleano := year(date())
endcase -
O "W" é um FOR w = 1 to 3 NEXT que está sendo executado.
O que eu quero é passar uma variável que é numerica para caracter, mas o STR() não está fazendo isso, ela continua numérica
boleini := str(cNumbol) // passar para caracter
cNumbol é numérica e boleini continua numérica na linha seguinte
-
Também não deu certo, o STR() não muda de numerica para caracter, ela continua sendo numérica
-
Boa-tarde
// definição do número do boletim e registro no arquivo
dbSelectArea( "num" ) // registro dos numeros dos boletins
num->( dbGoBottom() ) // capturar o ultimo boletim registrado
cNumbol := num->numero + 1 // proxino numero <---------- aqui é numerérica
cSay1 := strzero(val(cNumbol),4)+str(year(date()),4) // nro. sequencial dos boletins
num->( dbAppend() )
num->( rLock() )
num->data := date()
num->hora := time()
num->numero := val(substr(cSay1,1,4)) // guarda o numero gerado
num->tipo := STR(nRad,1) // boletim de inclusao ou exclusão
num->status := "L" // boletim gerado pelo programa
num->usuario := cUsuario // usuario que logou
num->( dbUnlock() )// captura o numero inicial e final dos boletins para impressão
do case
case w = 1
boleini := str(cNumbol) // passar para caracter
boleano := year(date())
case w = 3
bolefim := str(cNumbol)
boleano := year(date())
endcase
? type(boleini),boleini,bolefimEstou passando a variável "boleini" para caracter porém continua numérica e o type() diz "N". Elas são publicas
Alguém saberia dizer o que acontece
VS CODE
in Programação
Posted
Boa noite
Obrigado Emotta por compartilhar