Ola amigos ... Aqueles que me acompanham sabem que sou fa incodicional do GIT e o considero como um dos melhores softwares de SCM (source code management) da atualidade. Entretanto alguns amigos sempre reclamavam de usa-lo via linha de comando ( particularmente eu gosto. Linha de comando te da seguranca e controle total da situacao). Para esses meu amigos, vai a dica deste post: usar o comando git gui : O gui vem de graphics user interface ou seja interface grafica com o usuario. Nesta interface voce pode realizar o add + commits + push + um montao de comandos do git, tudo de forma grafica. Eu mesmo uso bastante esse recurso. Quando se abre a tela no canto superior direito aparece o quadro chamado de Unstaged changes onde sao mostrados os itens do repositorio que foram alterados/criados e que ainda nao foram adicionados ao indice do git. Para adiciona-los ao indice basta clicar no icone do item, o que equivale a linha de comando "git add nome_do_arquivo". Logo abaixo temos o quadro de Staged changes (will commit) . nesse quadro aparecem os itens que foram adicionados ao indice, porem ainda nao foram commitados. Para retornar um item desse quadro para o quadro Unstaged Changes, apenas clique no seu icone. Digite o texto do seu commit no quadro Commit Message e clique no botao Commit. Pronto isso equivale a linha de comando "git commit -m "mensagem do commit" " . Em seguida se quiser "empurrar" suas alteracoes para o servidor, basta clicar no botao push .Alem disso voce podera selecionar um arquivo e reverter as mudancas, deletar aquivos, gerenciar branches e muito mais atraves dessa ferramenta nativa do git. Se voce ficou curioso, de uma olhada nos menus desta ferramenta e veja as inumeras possibilidades que ela oferece. No meu proximo post vou falar de outra ferramenta grafica para trabalhar com o git ... a versao do Tortoise para o GIT ... Um grande abraco e ate o proximo post. A procedure abaixo listada permite ler qualquer arquivo de texto delimitado, quer seja por virgula, ponto e virgula ou qualquer outro delimitador. Para tanto basta informar corretamente o delimitador na funcao aninhada MontaValor.No exemplo abaixo as informacoes contidas no arquivo texto serao gravadas em dois ClientDataSet.procedure TForm1.ImportarCSV;var ArquivoCSV : TextFile; Contador, I : Integer; Linha : String; // Le Linha e Monta os valores function MontaValor : String; var ValorMontado : String; begin ValorMontado := ''; inc(I); While Linha[I] >= ' ' do begin If Linha[I]= ';' then // vc pode usar qualquer delimitador ... eu estou usando o ";" break; ValorMontado := ValorMontado + Linha[I]; inc(I); end; result := ValorMontado; end;begin // Carregando o arquivo ... AssignFile(ArquivoCSV, 'c:\Nome_do_Arquivo'); try Reset(ArquivoCSV); Readln(ArquivoCSV, Linha); Contador := 1; while not Eoln(ArquivoCSV) do begin if Contador = 1 then // Primeira Linha do arquivo (Pedido); begin I := 0; cdsPedido.Append; cdsPedidoCodigoCliente.AsString := MontaValor; cdsPedidoNomeDoCliente.AsString := MontaValor; cdsPedido.Post; end else begin // Demais Linhas (Itens do Pedido ) I := 0; cdsItensDoPedido.Append; cdsItensDoPedidoCodigoProduto.AsString := MontaValor; cdsItensDoPedidoNomeDoProduto.AsString := AnsiUpperCase(MontaValor); cdsItensDoPedidoQuantidade.AsFloat := StrToFloat(MontaValor); cdsItensDoPedidoPreco.AsCurrency := StrToCurr(MontaValor); cdsItensDoPedido.Post; end;