Ir para conteúdo
Fórum Script Brasil

Jhonas

Monitores
  • Total de itens

    9.657
  • Registro em

Tudo que Jhonas postou

  1. Jhonas

    Zero a esquerda

    preciso fazer com que o zero apareça através de uma Query se voce quer mostrar isso num DBGrid, coloque uma mascara de "00000" na propriedade DisplayFormat do campo da tabela o resultado mostrado no DBGrid será: 00001 00012 00132 05302 10987 OBS: veja mais exemplos da função LPAD que o Denis Courcy te passou https://www.w3resource.com/mysql/string-functions/mysql-lpad-function.php abraço
  2. Se voce não quiser alterar nada no seu código, é só não escolher a opção " Nenhum " que voce consegue escolher qualquer outra opção de Texto. ou coloque outro botão para habilitar os RadioGroups procedure TForm1.Button5Click(Sender: TObject); begin Libera; end; abraço
  3. Creio que a melhor opção seja mesmo o desconto em cada conta Não creio que seja a melhor opção ... veja os exempos ... não estou usando banco de dados, mas a lógica é a mesma Aqui voce teria no seu banco de dados os lançamentos das contas e o lançamento do desconto ( um em cada registro da tabela ) Nesse caso voce soma as contas e subtrai o registro do desconto e pronto procedure TForm1.Button1Click(Sender: TObject); var conta1, conta2, conta3, total, desconto : real; begin total := 0; desconto := 10.00; conta1 := 50.40; conta2 := 90.23; conta3 := 100.50; total := total + conta1; total := total + conta2; total := total + conta3; showmessage('Valor Total = ' + floattostr(total)); total := total - desconto; showmessage('Valor Total com Desconto = ' + floattostr(total)); end; Aqui voce teria no seu banco de dados os lançamentos das contas e o lançamento do desconto ( um em cada registro da tabela ) Como voce vai querer o desconto em cada conta, voce teria que usar um For para varrer os registros, para fazer o somatório das contas. Calcular o percentual de desconto em cada conta e a partir disso calcular o valor de desconto de cada conta, para depois subtrair do valor de cada conta. procedure TForm1.Button2Click(Sender: TObject); var conta1, conta2, conta3, total, desconto : real; var i : integer; begin total := 0; desconto := 10.00; conta1 := 50.40; conta2 := 90.23; conta3 := 100.50; total := total + conta1; total := total + conta2; total := total + conta3; showmessage('Valor Total = ' + floattostr(total)); desconto := desconto / total * 100; total := 0; total := total + conta1 - (conta1 * desconto / 100); total := total + conta2 - (conta2 * desconto / 100); total := total + conta3 - (conta3 * desconto / 100); showmessage('Valor Total com Desconto = ' + floattostr(total)); end; No entanto eu não posso fazer uma divisão simples, como valor desconto / numero de contas, pois terei muitos caracteres após a virgula. voce pode limitar o numero de casas decimais pelo FormatFloat ou configura isso na propria tabela no DisplayFormat e no EditFormat do campo colocando " ,0.00;-,0.00 " voce escolhe qual a melhor maneira de usar abraço
  4. sim... veja no link http://debian.udsu.ru/pub/soft/win/delphi/delphi/Soft/Delphi7/Install/ abraço
  5. Ocorre que me pediram para botar um campo para desconto. CODIGO INTEGER COD_AGENDAMENTO INTEGER COD_CONVENIO INTEGER PAGO INTEGER TOTAL DOUBLE PRECISION DATA_RECEBIMENTO DATE FORMA_PAGAMENTO VARCHAR(8) DESCONTO DOUBLE PRECISION Então ao efetuar o recebimento, terei uma divergencia de valores. Suponhamos que eu esteja baixando 3 contas que totalizam 150,00 e forneça um desconto de 10,00. Voce pode optar por colocar o desconto dividido em cada conta exemplo: TOTAL ------------ DESCONTO 50,00 ................3,333 50,00 .................3,333 50,00 .................3,333 ou pode optar por lançar somente o desconto TOTAL ------------ DESCONTO 50,00 ................0 50,00 ................0 50,00 ................0 .........................10,00 Ao tirar um relatorio de contas recebidas o usuario pensará que recebeu 150,00, mas recebeu somente 140,00 no QuickReport ou outro relatório, voce simplesmente calcula o somatório do TOTAL - DESCONTO ... neste caso voce pode usar o componente QRExpr1 abraço
  6. TextBox - Representa um controle de caixa de texto do Windows. esse componente é usado no VB no delphi, voce pode jogar o nome que foi pego no campo <xNome> em um Edit ou ListBox ou Combobox ou Memo ou RichEdit ... etc use o componente que for melhor para voce exemplo: procedure TForm1.Button1Click(Sender: TObject); var s, r : string ; i : integer; begin s := '<xNome>NEUGEBAUER ALIMENTOS S/A</xNome>'; if pos('<xNome>',s) >0 then begin r := copy(s,pos('<xNome>',s)+7,pos('</xNome>',s)-8); Edit1.Text := r; Memo1.Clear; Memo1.Lines.Append(r); ComboBox1.Clear; ComboBox1.Items.Append(r); ComboBox1.ItemIndex := 0; ListBox1.Items.Append(r); RichEdit1.Text := r; end; end; abraço
  7. -<emit> -<dest> <CNPJ> <CNPJ> <xNome> <xNome> <xFant> -<enderDest> -<enderEmit> <xLgr> <xLgr> <nro> <nro> <xCpl> <xCpl> <xBairro> <xBairro> <cMun> <cMun> <xMun> <xMun> <UF> <UF> <CEP> <CEP> <cPais> <xPais> <xPais> <fone> <fone> </enderEmit> </enderDest> <IE> <indIEDest> <CRT> <IE> </emit> </dest> OBS: Se voce fizer uma comparação com os campos, vai notar que alguns campos constam em uma coluna mas não na outra ( 4 campos ) informações não correspondentes entre emitente e destinatário: coluna A - coluna B xFant - não existe não existe - indIEDest não existe - cPais CRT - não existe o que sera feito com essas informações ??? Se voce quer trocar os campos do emitente para o destinatário e vice-versa, vai usar a mesma lógica que te passei na leitura da linha, voce deve procurar pelos identificadores que voce quer ( <CNPJ> <xNome> <xFant> ... etc ) , armazenar o valor em variaveis de controle ou uma matriz de dados um exemplo de como pegar o conteudo desses identificadores procedure TForm1.Button1Click(Sender: TObject); var s, r : string ; i : integer; begin s := '<xNome>NEUGEBAUER ALIMENTOS S/A</xNome>'; if pos('<xNome>',s) >0 then r := copy(s,pos('<xNome>',s)+7,pos('</xNome>',s)-8); showmessage(r); end; imagine que a variavel " s " é a linha que voce esta lendo do arquivo...e a variavel " r " é o valor que voce quer guardar para depois fazer a troca no arquivo que esta no Memo é só fazer a mesma coisa para todos os outros identificadores o arquivo lido, passa então para um Memo ... e nesse Memo, vai procurar os mesmos identificadores e trocar os conteúdos dos campos pelo valores que estão nas variaveis de controle ou na matriz de dados e depois é só salvar o arquivo no Memo modificado como XML abraço
  8. qual é o conteudo do campo emitente e destinatario ? porque voce precisa alterar esses campos ?
  9. Jhonas

    mapa

    como voce não especificou a plataforma, veja nesses links https://www.google.com.br/search?source=hp&ei=ix1mWqTVO8aCwgTP5bGQCw&q=como+fazer+mapa+do+brasil+interativo&o que=como+criar+mapa+do+brasil+interativo&gs_l=psy-ab.1.0.0i22i30k1.2956.18578.0.20686.36.33.0.3.3.0.188.3624.1j28.29.0....0...1c.1.64.psy-ab..4.31.3550...0j0i131k1j33i22i29i30k1j0i13i30k1j33i160k1.0.8iOLKfMNnbs abraço
  10. sintomas do HD em vias de apresentar falhas: 1 - O micro começa a desligar e reiniciar sozinho ( apesar de tambem ser um problema do sistema operacional por arquivos corrompidos ) 2 - Não roda mais programas, que anteriormente rodavam 3 - O HD apresenta varios badblocks ou badclusters 4 - Fica lento para carregar ou executar programas 5 - O HD começa a esquentar, chegando a ficar acima dos 50º centígrados 6 - O HD começa a bater cabeçote ( Braço de Leitura faz o ruído de tec, tec, tec...) 7 - Mesmo reinstalando o sistema operacional ( Sem Formatar o HD ) , os problemas acima voltam a acontecer OBS: Os procedimentos abaixo só são aplicados, quando o HD é reconhecido pela BIOS e apareçe na tela. Pois bem, cheguei a ter todos esses problemas no meu HD ... achei que teria que jogá-lo no lixo mas pesquisando um pouco na internet, encontrei alguns softwares que me ajudaram a ressuscitar o meu HD um desses softwares foi o CristalDiskInfo ( Monitora o status dos discos rígidos que suportam a tecnologia SMART. Monitora e fornece uma avaliação global da "saúde" do seu disco. ) link para baixar o programa https://crystaldiskinfo.br.uptodown.com/windows/download com ele descobri que a temperatura de meu HD estava passando dos 50º e que havia setores defeituosos no HD outro software que usei tambem foi o HDTune Pro versão 5.70 ( a versão trial funciona por 15 dias ,,, tempo suficiente para voce obter as informações que voce precisa do HD ) http://www.hdtune.com/ OBS: Os pontos vermelhos representam os badblocks encontrados no HD ... Vale lembrar que eles foram encontrados todos na Partição #0 do HD. A Partição #1 que eu uso para Backup estava integra. No entanto, acabei por usar o HDD Regenerator para tentar recuperar o HD https://www.google.com.br/search?source=hp&ei=hv9lWumnM8qqwAS8lp_ICA&q=hdd+regenerator+download&o que=hdd+rege&gs_l=psy-ab.1.1.0l10.1832.3312.0.7694.8.6.0.2.2.0.120.567.0j5.5.0....0...1c.1.64.psy-ab..1.7.590...0i131k1.0.PQFrutPeW-Y OBS: A imagem mostra algo muito semelhante encontrado no meu HD ... ( encontrado 37 bad sectors ( B ) que foram recuperados ( R ) Para fazer essa recuperação, basta criar um CD de Boot pelo proprio programa Depois de completado essa operação ( cerca de 1:30 hrs para um HD de 320 Gb ) fiz novamente um novo diagnostico no HD ( antes voce deve dar um Clear Drive Map statistics para limpar o mapa ) o resultado foi ( 1 ) Delay encontrado no HD ( um Delay significa atrazo na leitura ) nada que vá comprometer o funcionamento dele. ok ... para me livrar desse Delay, precisei formatar a partição do HD que havia apresentado esses problemas ( não use formatação rapida ) e reinstalar o sistema operacional Feito isso, o barulho do cabeçote ( Braço de Leitura ( tec, tec, tec )) parou e a temperatura do HD se manteve estáveis em 37º Centígrados Ao usar novamente o CristalDiskInfo, vi que ele apresentou um Alerta no [ C6 ] Uncorrectable Sector Count ( ou seja ... Contagem Setorial Não Corrigível )] Isso significa dizer, que aquele determinado setor não poderá mais ser utilizado pelo HD Então o CristalDiskInfo sempre irá mostrar esse Alerta e o HDD Regenerator vai identificar como sendo um problema grave, pedindo para que se faça um Backup do HD imediatamente para evitar a perda dos seus dados. Uma solução para esse caso, é zerar esses setores ( escrever zeros ) ... voce pode usar o HD Tune Pro para esse procedimento ZeroFill - Um método de limpeza definitivo do disco é o chamado Zero Fill que, como o próprio nome sugere, consiste em colocar, em cada bit do HD, o valor binário zero, como quando o disco sai de fábrica. ( Atenção ZeroFill apaga todo o conteudo do HD ) OBS: Zero Fill não é milagroso, mas se o problema no disco não for mecânico, normalmente este processo de limpeza pode resolver. Como sugestão, indico o software Speccy O Speccy é uma avançada ferramenta de informações de sistema para o PC. Ele é capaz de informar sobre o hardware usado atualmente no PC do usuário, incluindo também informações sobre a CPU, placa mãe, memória RAM, Placa de Vídeo, Discos rígidos, Drivers ópticos e suporte de áudio. http://www.piriform.com/speccy Para mim resolveu, e espero que esta minha experiência, seja útil para aqueles que estejam passando tambem por esses problemas Abraço
  11. isso é muito simples, basta colocar um componente OpenDialog no código procedure TForm1.Button1Click(Sender: TObject); var Line, x: string; i : Integer; begin Memo1.Clear; if OpenDialog1.Execute then AssignFile(Arquivo, OpenDialog1.FileName) else exit; Reset(Arquivo); if (IOResult <> 0) // verifica o resultado da operação de abertura then showmessage('Erro na abertura do arquivo !!!') else begin while not EOF(Arquivo) do begin ReadLn(Arquivo, Line); if Pos('</serie>',Line)>0 then begin x := ExtractNumberInString(line); Line := StringReplace(Line, x, '1234567', []); end; Memo1.Lines.add( Line ); Inc(num); Label1.Caption := 'Total de Linhas Anexadas = ' + inttostr(num); end; end; CloseFile(Arquivo); Memo1.Lines.SaveToFile('c:\Result.xml'); end; abraço
  12. 1 - No meu form de Cadastro de Empresa, devo trabalhar com Edits ou DBEdits? voce escolhe, mas o mais prático é usar DBEdits ( pois eles já são linkados com os campos da sua tabela). Usando Edits voce deve passar o conteudo deles para os DBEdits ou diretamente para os campos de sua tabela, e para os Edits receberem os valores da sua tabela, voce deve passar o conteudo dos campos da tabela para os Edits. 2 - Quais o métodos mais usados para realizar o Insert no Banco de Dados? voce pode usar o comando insert into ... veja os links com exemplos https://www.google.com.br/search?source=hp&ei=bqBjWvjwG8uwwgTqqbiACQ&q=insert+into+mssql&o que=insert+into+m&gs_l=psy-ab.1.4.0l10.1386.5347.0.9376.13.11.0.2.2.0.140.1241.0j11.11.0....0...1c.1.64.psy-ab..0.13.1262...0i131k1.0.3KH2PVu2VmY 3 - Como posso fazer, para que ao abrir meu form, ele já carregue os Edits de acordo com o primeiro registro da tabela? se voce usar DBEdits ou DBGrids.... ao abrir a tabela os dados já serão mostrados e voce podera navegar nos registros pelo componente TNavigator abraço
  13. Veja os exemplos na Internet: https://www.google.com.br/search?ei=b2pjWpW6HYb7wQSTna-wDg&q=captura+de+imagem+webcam+matlab&o que=captura+de+imagem+webcam+matla&gs_l=psy-ab.1.0.33i22i29i30k1.1701.6439.0.8034.6.6.0.0.0.0.160.679.0j5.5.0....0...1c.1.64.psy-ab..1.5.676...0i22i30k1j33i160k1.0.SBMghCRMqdk outro exemplo de reconhecmento facial que pode ser usado para o seu trabalho https://www.mathworks.com/help/vision/examples/face-detection-and-tracking-using-live-video-acquisition.html abraço
  14. existem varias maneiras de se fazer isso vou te dar o exemplo de uma das maneiras unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Label1: TLabel; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Arquivo : TextFile; Line : string; num : integer = 0; implementation {$R *.dfm} function ExtractNumberInString( Linha: String ): String ; var i: Integer ; begin Result := '' ; for i := 1 to length( Linha ) do begin if Linha[ i ] in ['0'..'9'] then Result := Result + Linha[ i ] ; end ; end ; procedure TForm1.Button1Click(Sender: TObject); var Line, x: string; i : Integer; begin Memo1.Clear; AssignFile(Arquivo, 'C:\Teste.Xml'); Reset(Arquivo); if (IOResult <> 0) // verifica o resultado da operação de abertura then showmessage('Erro na abertura do arquivo !!!') else begin while not EOF(Arquivo) do begin ReadLn(Arquivo, Line); if Pos('</serie>',Line)>0 then begin x := ExtractNumberInString(line); Line := StringReplace(Line, x, '1234567', []); end; Memo1.Lines.add( Line ); Inc(num); Label1.Caption := 'Total de Linhas Anexadas = ' + inttostr(num); end; end; CloseFile(Arquivo); Memo1.Lines.SaveToFile('c:\Result.xml'); end; end. Leitura do Arquivo Inicial - <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> - <infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10"> - <ide> <cUF>35</cUF> <cNF>518005127</cNF> <natOp>Venda a vista</natOp> <indPag>0</indPag> <mod>55</mod> <serie>1</serie> <nNF>1</nNF> <dEmi>2008-05-06</dEmi> <dSaiEnt>2008-05-06</dSaiEnt> <tpNF>0</tpNF> <cMunFG>3550308</cMunFG> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>3</cDV> <tpAmb>2</tpAmb> <finNFe>1</finNFe> <procEmi>0</procEmi> <verProc>NF-eletronica.com</verProc> </ide> - <emit> <CNPJ>99999090910270</CNPJ> Resultado Final ... substituindo <serie>1</serie> por <serie>1234567</serie> - <NFe xmlns="http://www.portalfiscal.inf.br/nfe"> - <infNFe Id="NFe35080599999090910270550010000000015180051273" versao="1.10"> - <ide> <cUF>35</cUF> <cNF>518005127</cNF> <natOp>Venda a vista</natOp> <indPag>0</indPag> <mod>55</mod> <serie>1234567</serie> <nNF>1</nNF> <dEmi>2008-05-06</dEmi> <dSaiEnt>2008-05-06</dSaiEnt> <tpNF>0</tpNF> <cMunFG>3550308</cMunFG> <tpImp>1</tpImp> <tpEmis>1</tpEmis> <cDV>3</cDV> <tpAmb>2</tpAmb> <finNFe>1</finNFe> <procEmi>0</procEmi> <verProc>NF-eletronica.com</verProc> </ide> - <emit> <CNPJ>99999090910270</CNPJ> Outra possibilidade seria manipulando o arquivo xml através de um ClientDataSet http://edn.embarcadero.com/de/article/37321 ou veja esses links https://www.google.com.br/search?source=hp&ei=TGZjWofzEMixwASGy5u4BA&q=ler+xml+nfe+delphi&o que=ler+xml&gs_l=psy-ab.1.7.0l10.1667.3995.0.6415.7.6.0.1.1.0.142.622.0j5.5.0....0...1c.1.64.psy-ab..1.6.635...0i131k1.0.8cZmsXIIbs8 abraço
  15. ok... já que voce esta no inicio e querendo aprender mais, vou te passar o link de 7500 dicas em delphi http://www.superdownloads.com.br/download/153/super-dicas-delphi-mps-7-500/ o interesse dos membros é justamente o que não tem nas dicas ...rs : ) abraço
  16. ok... vamos as respostas 1 Quando eu precisar um RadioGroup numa página é só usar a paleta da barra de componentes, ou terei de copiar de uma página onde já existe um ? tanto faz ... no entanto voce deve lembrar que, se voce copiar de uma pagina, o que estiver configurado nos eventos dos componentes serão os mesmos, embora nome do TRadioGroup tenha mudado. 2 O botão que carrega os arquivos selecionados para o memo, posso copiar e colar nas outras páginas ? sim ... mas vale tambem a explicação anterior para o botão, ou seja, o mesmo evento será executado em todos os botões se voce não alterar o código 3 Como faço para visualizar o mesmo conteúdo do memo padrão em outras páginas para ir visualizando os textos ? voce pode colocar um memo em cada pagina, e para visualizar o mesmo conteudo em todos eles basta alterar o código procedure TForm1.Button1Click(Sender: TObject); var Line: string; Caminho: string; i : Integer; begin case RadioGroup1.ItemIndex of 0: Caminho := 'C:\Texto0.Txt'; 1: Caminho := 'C:\Texto1.Txt'; 2: Caminho := 'C:\Texto2.Txt'; 3: Caminho := 'C:\Texto3.Txt'; end; AssignFile(Arquivo, Caminho); Reset(Arquivo); if (IOResult <> 0) // verifica o resultado da operação de abertura then Memo1.Lines.Add('Erro na abertura do arquivo !!!') else begin while not EOF(Arquivo) do begin ReadLn(Arquivo, Line); Memo1.Lines.add( Line ); Inc(num); Label1.Caption := 'Total de Textos Anexados = ' + inttostr(num); end; end; CloseFile(Arquivo); /// Colocar o mesmo conteudo do Memo1 nos outros Memos for i := 0 to ComponentCount -1 do begin if (Components[i] is TMemo) then if TMemo(Components[i]).Lines.Text <> '' then TMemo(Components[i]).Lines.Text := Memo1.Lines.Text; end; end; 4 Tem como insirir um botão em cada página para escolha de onde virão os dados dos arquivos de textos para serem carregados naquela página, em vez de eu marcar um caminho fixo no código ? sim, mas ficaria muito mais trabalhoso e demorado voce ficar escolhendo de onde virão os dados. o melhor é especificar o caminho dos arquivos textos nos TRadioGroup e pronto case RadioGroup1.ItemIndex of 0: Caminho := 'C:\Texto0.Txt'; 1: Caminho := 'C:\Texto1.Txt'; 2: Caminho := 'C:\Texto2.Txt'; 3: Caminho := 'C:\Texto3.Txt'; end; abraço
  17. Tem possibilidade de usar um só Memo na primeira página de um TPageControl e os RadiosGroups ficarem em outras páginas ? sim ... não precisa fazer modificação alguma no código marque todos os componentes do Form e de um CTRL + X ( Cortar ) adicione o TPageControl e alinhe ele com o Form, depois com o botão direito nele, adicione os TabSheets selecione um deles e cole os componentes usando o CTRL + V ( Colar ) tire o Memo de um TabSheet e passe para outro e pronto abraço
  18. para colocar o segundo RadioGroup e ia seguir o mesmo raciocinio para os outros, está correto? sim ... esta correto É possivel substituir a linha codigo ShowMessage('') , por outra linha de instrução sem ser do tipo ShowMessage('') para botão (nenhum) habilitar ou não o processamento daquele RádioGroup ?. sim... voce coloca o comando que quiser ( Para que não ocorra erro voce pode criar um arquivo de texto vazio ou não deixar que seja executado a leitura se a opção do TRadioGroup for "Nenhum" ) veja que no código, modifiquei para que quando clicar na opção ( Nenhum ) o RadioGroup seja desabilitado ( faça a mesma coisa para todos os TRadioGroup ) e só será novamente habilitado quando voce salvar o conteudo do Memo ( veja as modificações no código ) procedure TForm1.RadioGroup1Click(Sender: TObject); begin if RadioGroup1.ItemIndex = 0 then RadioGroup1.Enabled := false; end; unit ULerTexto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) RadioGroup1: TRadioGroup; Button1: TButton; Memo1: TMemo; Button2: TButton; Button3: TButton; SaveDialog1: TSaveDialog; Label1: TLabel; procedure Libera; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure RadioGroup1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Arquivo : TextFile; Arquivo1 : TextFile; Line : string; num : integer = 0; implementation {$R *.dfm} procedure TForm1.Libera; var i : integer; begin /// Habilitar todos os TRadioGroup for i := 0 to ComponentCount -1 do begin if Components[i] is TRadioGroup then TRadioGroup(Components[i]).Enabled := true; end; end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Clear; end; procedure TForm1.Button3Click(Sender: TObject); begin if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); Libera; end; procedure TForm1.Button1Click(Sender: TObject); var Line: string; Caminho: string; begin case RadioGroup1.ItemIndex of 0: Caminho := 'C:\Texto0.Txt'; 1: Caminho := 'C:\Texto1.Txt'; 2: Caminho := 'C:\Texto2.Txt'; 3: Caminho := 'C:\Texto3.Txt'; end; AssignFile(Arquivo, Caminho); Reset(Arquivo); if (IOResult <> 0) // verifica o resultado da operação de abertura then Memo1.Lines.Add('Erro na abertura do arquivo !!!') else begin while not EOF(Arquivo) do begin ReadLn(Arquivo, Line); Memo1.Lines.add( Line ); Inc(num); Label1.Caption := 'Total de Textos Anexados = ' + inttostr(num); end; end; CloseFile(Arquivo); end; procedure TForm1.RadioGroup1Click(Sender: TObject); begin if RadioGroup1.ItemIndex = 0 then RadioGroup1.Enabled := false; end; end. Abraço
  19. Você podendo me explicar o básico da interligaçao de uns dois ou tres os outros vou fazendo aos poucos. ok... vou te passar o básico, para o resto voce modifica supondo que voce já determinou todos os nomes dos arquivos Txt, vou colocar aqui para teste 3 arquivos Txt criados com o bloco de notas. Texto1.Txt conteudo ....( Este Texto pertence ao arquivo Texto1.Txt ) Texto2.Txt conteudo ....( Este Texto pertence ao arquivo Texto2.Txt ) Texto3.Txt conteudo ....( Este Texto pertence ao arquivo Texto3.Txt ) Cada item do RadioGroup ( com exceção do primeiro = Nenhum ) vai receber o caminho onde se encontra o arquivo. voce vai fazer a leitura dos arquivos e jogar o conteudo em um componente Memo depois é só salvar o conteudo do Memo em outro arquivo exemplo: unit ULerTexto; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) RadioGroup1: TRadioGroup; Button1: TButton; Memo1: TMemo; Button2: TButton; Button3: TButton; SaveDialog1: TSaveDialog; Label1: TLabel; procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; Arquivo : TextFile; Arquivo1 : TextFile; Line : string; num : integer = 0; implementation {$R *.dfm} procedure TForm1.Button2Click(Sender: TObject); begin Memo1.Clear; end; procedure TForm1.Button3Click(Sender: TObject); begin if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName); end; procedure TForm1.Button1Click(Sender: TObject); var Line: string; Caminho: string; begin case RadioGroup1.ItemIndex of 0: ShowMessage('Nenhum texto selecionado'); 1: Caminho := 'C:\Texto1.Txt'; 2: Caminho := 'C:\Texto2.Txt'; 3: Caminho := 'C:\Texto3.Txt'; end; AssignFile(Arquivo, Caminho); Reset(Arquivo); if (IOResult <> 0) // verifica o resultado da operação de abertura then Memo1.Lines.Add('Erro na abertura do arquivo !!!') else begin while not EOF(Arquivo) do begin ReadLn(Arquivo, Line); Memo1.Lines.add( Line ); Inc(num); Label1.Caption := 'Total de Textos Anexados = ' + inttostr(num); end; end; CloseFile(Arquivo); end; end. abraço
  20. quais são os itens dos RadioGroup ? são os nomes dos seus arquivos txt ?
  21. voce já experimentou usar esse evento ? procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin // comandos end;
  22. pode ser antes ou depois ( voce configura isso ) ... voce escolhe abraço
  23. ok... na verdade foi a figura do post que apareceu, clique no titulo (Resolvido) o Lazarus tem problemas com o CHARSET Converta tudo para UTF-8 - Seus fontes (arquivos .PAS e .LFM) devem estar codificados em UTF-8... - Seu Banco de Dados idem pra ver/modificar a codificação de um arquivo fonte use: Botão direito no editor -> File Settings -> Encoding -> UTF-8 Veja tambem esse link http://forum.lazarus-ide.org/index.php?topic=2028.15 abraço
×
×
  • Criar Novo...