
Eder
Membros-
Total de itens
1.002 -
Registro em
-
Última visita
Tudo que Eder postou
-
Micheus.....testei o seu exemplo e algo não ta dando certo e não to conseguindo consertar. Tipo.....no seu exemplo quando rodo o codigo...o gause fica processando paradão no 76%(independente do tamanho do arquivo) e a barra também fica ali no 76%...mas se eu espero um pouco depende o tamanho do arquivo....logo em seguida começa aparece uma barrinha na fundo dando o real progresso..e ai ela mal chega ao final tipo uns 93% e já encerra. já o codigo do Jonas....faz semelhante...só que ele dependendo do tamanho do arquivo, as vezes fica paradão no 4% e ai também logo em seguida aparece uma barrinha la no fundo mostrando o progresso....e acaba certtinho. Pergunta: É correto assim como esta mostrando?? porque o (%)pecentual que mostra não é real!! Poderias dar um explicada mais detalhada do processo?? Eu achei que ele mostraria o processo real de conversão o percentual acompanhando a barra do processo. muito Grato.
-
Pessoal..desculpe a demora em responder...muito Obrigado a todos em ajudar. quando a idéia do Micheus ...testei também e o programa não compilou nesta linha: ArqSize := FileSize(Arq) *128; // *** FileSize assume blocos de 128 quando não é arquivo "tipado" tentei mudar assim..acho que você esqueceu: ArqSize := FileSize(ArqLido) *128; // *** FileSize assume blocos de 128 quando não é arquivo "tipado" mas deu erro: [Error] CSV_DB.pas(260): Incompatible types Nesta linha também tem errinho: ArqLido := ArqLido +Length(Linha)+2; //*** este 2 = CR+LN (presumido) tentei trocar linha por linhas..mas o erro persiste. Valeu..Pessoal...Grato :)
-
Ola..pessoal Eu tenho este galge programado neste codigo..porem ele não me da o resultado esperado real..ou seja, neste codigo eu tou lendo um arquivo *.csv e convertendo ele pra paradox...porem o gauge não ta correto..pois ele esta colocado da maneira que me da o resultado por registro...e eu gostaria que ele me retornasse o resultado por conversão geral, ou seja eu quero converter o csv pra db e gostaria que o Gauge mostrasse o real progresso da conversão....pois as vezes a conversão demora uns 5 minutos e é bom mostrar pro usuario o REAL. Por favor Veja o codigo abaixo: procedure TForm1.XiButton1Click(Sender: TObject); Var Txt: TextFile; Entrada: String; Linhas: Integer; now_temp: TDateTime;//variavel contadora de tempo begin //CONTADOR DE TEMPO now_temp:=now;//recebe tempo tempo.caption:= '00:00:00'; // gauge1.Progress:=30; TABLE1.Active:=TRUE; Assignfile(Txt,'c:\xxxxx\yyyy.csv');//caminho do arquivo CSV Reset(Txt); Linhas := 0; While not Eoln(Txt) do begin gauge1.Progress:=50; Readln(Txt,Entrada); Inc(Linhas); If Linhas > 3 then//aqui verifica e desconcidera AS 4 primeiras linhas do CSV if (Copy(Entrada, 1, 1) = '3') then //AQUI CONSIDERA SOMENTE AS LINHAS QUE TEM O CAMPO 1 = 3 begin gauge1.Progress:=80; Table1.Insert; //Abaixo converte pra *.DB // Table1.FieldByName('1').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('sigla_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('numero_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('ctrc/subcontr').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('situacao_ctrc').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('entr_cep').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('entr_cidade').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('entr_uf').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('tabela_calculo').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('desc_tabela').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('frete_peso').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); Table1.FieldByName('cod_vendedor').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); // {====ESTE CODIGO ABAIXO.....ALEM DE PROCESSAR COMO OS DEMAIS ACIMA...ELE EVITA DE CAIR NO BANCO DE DADOS O PONTO E VIRGULA...POR ISTO TERMINO A LEITURA COM ESTA LINHA ABAIXO.===} Table1.FieldByName('nome_vendedor').Value := Copy(Entrada,1, Pos(PathSep, Entrada) - 1); Delete(Entrada, 1, Pos(PathSep, Entrada)); {===abaixo fecha o ultimo campo a ser convertido, EXCETO NOS CASOS Table1.FieldByName('contador').Value := 1; // Table1.Post; gauge1.Progress:=95; end; end; gauge1.Progress:=96; CloseFile(Txt); //aqui abaixo conta os registros gauge1.Progress:=97; while not TABLE1.Eof do begin Table1.Next; gauge1.Progress:=98; end; Label2.Caption := IntToStr(Table1.RecordCount); Table1.First; Beep; gauge1.Progress:=100; Tempo.caption:=(FormatDateTime('hh:mm:ss',now-now_temp));//conta o tempo de conversão Showmessage('Ok..Arquivo C:\xxxxx\yyyy.db criado com Sucesso E Já Processou o campo CONTADOR!'); end; Note que o Gauge esta sendo processado a cada registro convertido, acho que é isto que não pode acontecer.... Neste caso, qual seria a idéia pra fazer rodar o progresso Real? muito Grato
-
Beleza...carinha ...valeu a dica.
-
Jonas....bza?? carinha este resultado que você colocou que sai no label...é a memoria do aplicativo..ou seja memoria de pagina do arquivo??? é isto que o programa ocupa de memoria?? Se for.....por favor me responda porque no aplicativo diz que tem 1481 MB e no gerenciador do winxp dia que tem 2364 K ??? valeu muito Grato T+ :)
-
Ola..tou tentando mandar uma mensagem pra um lista de emails...o problema que as vezes alguns destes email´s são invalidos por algum motivo..tipo dominio invalido ou ate mesmo o proprio email..e ai o outlook express não deixa enviar até que eu retire este email. Mas como são mtos fica muito trabalhoso...inviavel o processo. Teria alguma maneira ou configuração no outlook EXPRESS que não verificasse esta situação e enviasse tudo que mandei enviar?? Grato
-
R.: Carinha seria ótimo, seria uma ajuda em tanto, pois francamente, com sinceridade, a gente que ta aprendendo é muito complicado estes manuais todos, mtas vezes em ingles e que também na maioria das vezes são muito técnicos....não quer dizer que não devemos aprender o conceito técnico, mas ver funcionando algo que ser quer ver é mais emocionante. As vezes uma passo a passo seria muito mais interessante, faria com que a pessoa que esta aprendendo, se anime em aprender cada vez mais porque vê progresso na situação, enquanto que na siatuação atual cria um certo desânimo, sei lá. Mas é isto ai..carinha, aguardo ansioso o seu material, com certeza será útil pra mtos colegas do Forum. muito Grato ;)
-
Ola..eu peguei este codigo na net e dei uma modificada. procedure TForm1.Timer2Timer(Sender: TObject); const cBytesPorMb=1024*1024; var M: TMemoryStatus; T : string; begin M.dwLength:=SizeOf(M); GlobalMemoryStatus(M); begin label4.caption:=(Format('Memória em uso: %d%%', [M.dwMemoryLoad])); label3.caption:=(format('Total de física: %f MB', [M.dwTotalPhys/cBytesPorMB])); T := formatfloat('#,##',(diskfree(0))); label1.caption:=('Espaço Livre do HD: '+ copy(T,1,4)+' MB'); T:= formatfloat('#,##',(DiskSize(0))); label2.caption:=('Tamanho do HD: '+copy(T,1,4)+' MB'); end; ele apresenta a memoria da maquina total e a usada, o tamanho do hd e o espaço livre...funciona perfeito. Eu Gostaria de saber como posso colocar juntos com estas informações a MEMÓRIA USADA PELO PROGRAMA? tipo vou colocar um timer em um programa é quero que apareça pro usuario quanto que o programa ocupa de memória. Tem Como? Grato
-
Siga a lógica do que você pôs: DBCOMBOBOX1.Text := DBCOMBOBOX1.Items[1] ou DBCOMBOBOX1.Text := DBCOMBOBOX1.Items[DBCOMBOBOX1.ItemIndex] deve funcionar. Verifique R.: Ok...Micheus...deu certo valeu. Tks Jonas: R.: Não..... porque eu não tou acessando dados de outra tabela...e sim inseri apenas 5 strings nos Items do DbCombobox...e estou fazendo verificação em cima delas. Mas valeu a tentativa de ajudar De mais muito grato a você Jonas e Micheus t+ :D ;)
-
Jonas..já havia tentado....a unica maneira que tinha dado certo é no OnChange do proprio DbCombobox..mas se usuario quizer voltar atraz e escolher uma outra opção ai ele não deixa e da erro. tentei também no OnEnter dele... Mas como você sugeriu da erro não ACEITA. que pepa... SE tiver mais uma ideia..manda por favor..já tentei de tudo....parece tão simples..mas.. Grato
-
Ok...valeu. Grato....a você e ao Jonas também.. t+
-
Ola..pessoal Estou fazendo uma verificação, e apos a verificação eu digo que o DbCombobox1 deve receber o seguinte valor: DBCOMBOBOX1.ItemINDEX:=1; porem quando clicko no botão de gravar...diz que o campo da tabela atrelado a o DbCombobox1 não esta selelecionado..ai tenho que clickar com o mouse e selecionar ai funciona....é como se o codigo acima não fosse aceito...somente visualmente, ai tenho que usar o mouse. EI tentei como text(QUE na pratica dario o mesmo resultado)...porem ai ele nem aceita.: DBCOMBOBOX1.TEXT:='DOMINGO'; alguém teria uma dica de como fazer funcionar?? muito Grato
-
Oba..bza? R.: bom vou dar uma olhada..embora no ingles...dou uns chutes. R..tentei me registrar mas não estava dando certo....mas vou tentar de novo. R.: mas o programa parece bom..vale a pena você dar um Bizu.... R.: WinXp Prof...minha máquina esta toda liberada...mas vou dar mais uma olhada. R. Ok....aos pouquinhos vou vendo....afinal pra entender este processo tenho que ler bastante. valeu.....Grato..e t+ ;) Carinha..consegui baixar o IBExpert e instala-lo...é realmente também tem portugues... Seguinte to me enrrolando no seguinte... Qual o primeiro passo depois de ter instalado?? seria CRIAR BASE DE DADOS? TENTEI...mas ai ele aponta pro CAMINHA DA BASE DE DADOS, mas eu ainda não criei...(eu queria testar no LOCAL, minha maquina)...mas ai estou emperrando aqui... Poderias dar as instruçoes dos primeiros passos(criar banco e tabelas, acho que é isto, tou acostumado com o Paradox....hehehe)....do IBEXpert. valeu Mais...uma..O firebird...tem que aparecer um icone no painel de controle?? O meu não apareceu!! quando instalei apareceu uma mensagem dizendo que o firebird seria instalado e não configurado e que eu teria que configura-lo manualmente. Mas mesmo assim instalei... já ai baixei o PostGree...e instalou beleza....mas ai eu esbarro sempre no mesmo problema...o que devo fazer no proximo passo!! Instalei também pra manipular o PostGree o EMS PostgreSQL Manager 3 Lite parece bom.. você Deve me perguntar....porque já estou no PostGree se nem comecei no Firebird... R. é porque não to me achando no firebird e então pra conhecer to dando uns pulos no PostGree....pra ver se segue um mesmo criteio. t+
-
Hum...entendi...porem o seu código não funciona perfeito. quando faca em cima do DbLookupCombobox ele não deixa passar......só com tab... FormKeyPress. if not (ActiveControl is TDBLookupComboBox) and // você deve usar AND not (ActiveControl is TCustomGrid) then If Key = #13 then Begin Key := #0; Perform(WM_NextDlgCtl, 0, 0); End; ai retirei as linhas que você inseriu e voltar ao meu codigo inicial...e é a melhor forma ainda....voltei a estaca zero de onde comecei este tópico...hehehe Mas entendi tudo que você mencionou..que cada componente tem suas particularidades... Veja o que o usuario faz... quando chega no DbLookupCombobox ele pega o mouse seleciona o item..e depois ao invés de dar um click com o mouse em cima do item...ele da um enter...ai ele não é atendido.... entendeu??.... Mas beleza..vou continuar com meu código inicial e dar instruções ao usuario. ;) Haaa..Carinha......este codigo do enter...eu uso em cada form ....não teria uma maneira de eu colocar num lugar onde no programa todo seja aceito?? sem ter que inserir em cada form?? procedure TFormAjuste.FormKeyPress(Sender: TObject; var Key: Char); begin If Key = #13 then Begin Key := #0; Perform(WM_NextDlgCtl, 0, 0); End; end; Valeu muito Grato :D
-
Jonas....no meu programa tem um problema, alias dois... 1-Tenho um codigo no OnKeyPress que verifica se o cara degitou letras....tive que desativar pra funcionar o seu......pois cada enter que eu dava chamava o showmessage procedure TFormAjuste.EditKmInicialAKeyPress(Sender: TObject; var Key: Char); begin if key in['a'..'z',#13] then begin key:= #0; showmessage('Por Favor, Digite apenas Números'); end; end; 2-Mesmo assim o TDBLookupComboBox nãu funcionar...venho com enter ate ele e depois dali pra frente só com tab senão ele não sai. Mas eu notei no codigo ele ta habilitado a aceitar o TDBLookupComboBox, então não sei. Estranho!! Mas se no seu funciona....sei lá...agora ferrou. Grato
-
Cara...o erro tava que eu tava colocando o codigo maior no OnKeyPress do Form(você nem tinha notado também né?...rs).....ai fiz o correto e o erro não apareceu mais..compilou.... Mas não funcionou no meu form que estou trabalhando....fiz em um formTeste e funcionou mas no outro não...deve ter algo impedindo o funcionamento.....barrando. Tens alguma ideia do que pode ser??.....simplismente ele não funciona..somente o TAB.... Grato :(
-
R. também TINHA imaginado isto ...mas não é não...veja meu uses: uses Windows, Messages, DbiProcs, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, StdCtrls, Mask, DBCtrls, DBTables, ExtCtrls, XiPanel, XiButton, ComCtrls, ActnList, Grids, DBGrids, Buttons, RxCalc, ToolEdit, CurrEdit, RXDBCtrl; meu delphi é 4 será isto?? :(
-
Jonas..perdão mais esta dando o mesmo erro: nesta linha: If Msg.message = WM_KEYDOWN then erro: [Error] Ajuste.pas(803): Object or class type required fiz assim: procedure TFormAjuste.FormKeyPress(Sender: TObject; var Key: Char); begin If not ((Screen.ActiveControl is TCustomMemo) or // se não for um memo (Screen.ActiveControl is TDBLookupComboBox) or // se não for um DbLookup (Screen.ActiveControl is TCustomGrid) or // se não for uma grid o controle mudara com enter (Screen.ActiveForm.ClassName = 'TMessageForm')) then begin If Msg.message = WM_KEYDOWN then begin Case Msg.wParam of VK_RETURN,VK_DOWN : Screen.ActiveForm.Perform(WM_NextDlgCtl,0,0); //,VK_TAB VK_UP : Screen.ActiveForm.Perform(WM_NextDlgCtl,1,0); end; end; end; end; type: procedure EditNFExit(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn); //TRATAMENTO DE erros bd //CODIGO DO ENTER procedure MudarComEnter(var Msg: TMsg; var Handled: Boolean); // private { Private declarations } public { Public declarations } end; FormOnActivate: procedure TFormAjuste.FormActivate(Sender: TObject); begin //CODIGO DO ENTER Application.OnMessage := MudarComEnter; end; O que tem de errado?? Grato
-
Jonas O que você quer dizer: porque montei ...e deu este erro: [Error] Ajuste.pas(802): Object or class type required Grato
-
Jonas..Consegui....peguei a sua ideia com duas queries....ai fiz o controle com você sugeriu.... deu certo Fiz o controle nos botões...novo, salvar etc.. valeu..muito grato..t+ ;)
-
Ola...Carinha..andei dando umas lidas...e instalei o Firebird 1.5 e entrei nele na opção: Firebird ISQL Tool e lá apareceu assim e ai digitei um comando pra criar um banco de dados assim: CREATE DATABASE 'C:\TESTE.GDB' ai deu enter e caiu numa outra linha assim>: CON> e ai será que ta certo...porque procurei na unidade c: e não criou o banco teste.gdb será que ta errado?? Haaa....baixei o Ibexpert, mas como é pago já desisti do programa...ai procurando na net achei um programa que parece ser muito bom chamado: MDOconsole TODO EM Portugues. Veja o Linck: Click Aqui Mas tentei mexer no prograna...e la tem um botão de CRIAR BANCO DE DADOS mas ele esta desabilitado, será que a instalação do firebird não deu certo..ou ele não esta reconhecendo. sei lá..mas ele é pra FIREBIRD...pelo menos esta anunciado.. O legal dele é que ele apresenta pra criar banco de dados, manipular tabelas e mais um monte de opções, tudo visual e em portugues..parece muito bom..pela que não entendo ainda do firebird...mas chego lá...hehehe. consultei a instalação no adicionar remover programas e la esta o firebird tudo certinho. Li algumas apostilas...mas um passo a passo é dificil de encontrar mesmo. Bom é isto ai?? Grato
-
OLA...JONAS R>Ok...até aqui beleza.. faça um controle para hora mostrar e hora não mostrar ... R> mas este controle como faço?? não sei por onde começar pois....hoje ele é controlado pela Table1 e mostrado Pela table2...como vou controla isto?? :( Grato
-
Ola..pessoal.. eu já estou pra ver este problema a algum tempo....seguinte eu uso este codigo pra trabalhar com enter no form: propriedade KeyPreview=True No Form onkeypress Begin If Key = #13 then Begin Key := #0; Perform(WM_NextDlgCtl, 0, 0); End; End; O Codigo funciona legal...exceto com DBLookupComboBox, POIS quando o usuario pega a lista do DBLookupComboBox, tipo um nome la do meio com o enter ou com as flexinhas do teclado ele não busca...ai o usuario tem que selecionar no mouse ai da certo...isto é um saco...eu concordo com o usuario..e teria que achar uma maneira de funcionar corretamente sem ter que pegar o mouse. Daria pra adpatar este codigo acima ou outro codigo que funcione 100% procurei outros codigos mais sempre a uma falha nos que achei.... muito Grato
-
Ola. Eu tenho um DBLookupComboBox onde eu configuro datasource=table1 onde esta a tabela a qual estou gravando e no listsouce eu aponto pra table2 que é a consulta da tabela PLACA onde vem as placas dos veiculos. Até aqui beleza..ela lista pro usuario escolher a placa cadastrada e lançar no controle combustivel. ok. O porem é que eu criei no cadastro de veiculos agora um campo que BAIXA o veiculo quando ele não existe mais(perda total)...e eu agora não queria que este veiculo aparece no controle de combustivel(pois se não existe mais porque aparecer). Eu até troquei a table2 por um query e fiz uma consulta instrução assim: Select CodVei, Placa, DataBaixa from VEI where DATABAIXA is null funcionou...mas ai esbarrei num problema, este veiculo baixado pertence a um lançamento deste controle e ai ele já não aparece mais na tela de lançamentos...devido a consulta da query. Não sei se fui claro... :huh: Tem como eu fazer com que aparece o registro baixo e ao mesmo tempo não aparece mais pra cadastrar novos registros?? Grato
-
Ok...Amigão..vou dar uma pesquisa.. Grato :D