| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
zelongatto Novato

Registrado: Sábado, 14 de Julho de 2012 Mensagens: 1
|
Enviada: Sáb Jul 14, 2012 2:07 pm Assunto: duvida delphi |
|
|
tudo bem pessoal, sou iniciante em delphi e estou com uma duvida que nao sei nem por onde começo.
queria criar um programa que tenha um botao que ao clicar ele abre para procurar a pasta que quero ex: ai eu escolho documentos-sistema-teste e ele armazene o resultado em um arquivo de texto em c:\teste\teste.txt mas no final do arquivo tipo um append, tem como fazer isso? tipo pegar o caminho da pasta que eu selecionar com botao e jogar no fim de um arquivo de texto?
tem como fazer isso em delphi? |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Dom Jul 15, 2012 1:21 am Assunto: |
|
|
Boa noite!
Pra você escrever algo dentro do arquivo texto, basta utilizar o código:
| Código: | var
Arquivo: TextFile;
begin
AssignFile(Arquivo, 'C:\teste\teste.txt');
If FileExists('C:\teste\teste.txt') then
Append(Arquivo)
else
ReWrite(Arquivo);
WriteLn(Arquivo, 'Texto dentro do arquivo');
CloseFile(Arquivo);
end; |
Sobre a questão de selecionar a pasta, existe um componente chamado TOpenDialog, utilizado para selecionar arquivos. Não sei se ele também serve para selecionar pastas. |
|
| Voltar ao Topo |
|
 |
kud Aprendiz

Registrado: Sexta-Feira, 20 de Abril de 2012 Mensagens: 142 Localização: São Paulo - SP
|
Enviada: Sáb Jul 21, 2012 12:42 am Assunto: |
|
|
Ola meu caro, se quizer selecionar somente a pasta, tenho uma função super eficiente para isto, segue ela:
| Código: |
function BrowseDialog(const Title: string; const Flag: integer): string;
var
lpItemID : PItemIDList;
BrowseInfo : TBrowseInfo;
DisplayName : array[0..MAX_PATH] of char;
TempPath : array[0..MAX_PATH] of char;
begin
Result:='';
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
with BrowseInfo do begin
hwndOwner := Application.Handle;
pszDisplayName := @DisplayName;
lpszTitle := PChar(Title);
ulFlags := Flag;
end;
lpItemID := SHBrowseForFolder(BrowseInfo);
if lpItemId <> nil then begin
SHGetPathFromIDList(lpItemID, TempPath);
Result := TempPath;
GlobalFreePtr(lpItemID);
end;
end;
|
Crie um evento OnClick num botão e cole isto na procedure
| Código: | Label1.Caption := BrowseDialog('Selecione a pasta',BIF_RETURNONLYFSDIRS);
|
Neste caso,o diretorio será colocado num Label.
Essa função utiliza a API do Windows SHBrowseForFolder.
Se caso preferir, como o Batera cito, tem o OpenDialog também.
Na Tool Palete, acesse o grupo DIALOGS, e escolha o OpenDialog,
logo após adicione um botão e crie um evento OnClick para ele, sua procedure tem que estar mais ou menos assim:
| Código: |
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then //Verifica se o Open Dialog foi executado
begin
Caminho_Arquivo.Text:= copy(OpenDialog1.FileName,pos('\',OpenDialog1.FileName)+ -3,1000);
end;
end; |
A função BrowseDialog, você so seleciona pastas, com o OpenDialog você so seleciona arquivos.
Espero ter ajudado, qualquer coisa posta novamente.
KUD*~ _________________ Segurança custa caro?
Experimente um acidente! |
|
| Voltar ao Topo |
|
 |
Batera Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008 Mensagens: 4899 Localização: Maringá
|
Enviada: Sáb Jul 21, 2012 12:50 am Assunto: |
|
|
kud, a sua dica é muito boa!
Testei a função aqui e funcionou perfeitamente!
Só precisei adicionar a unit ShlObj no uses.
Valeu! |
|
| Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Sáb Jul 21, 2012 1:04 am Assunto: |
|
|
| O Delphi tem uma função que utiliza a mesma api da função BrowseDialog do kud, mas serve somente para pastas. É a SelectDirectory da unit FileCtrl. |
|
| Voltar ao Topo |
|
 |
kud Aprendiz

Registrado: Sexta-Feira, 20 de Abril de 2012 Mensagens: 142 Localização: São Paulo - SP
|
Enviada: Sáb Jul 21, 2012 11:35 am Assunto: |
|
|
Perdoem-me amigos, eu esqueci de mencionar a unit necessária para o funcionamento.
Gustavo Toyota, posta para nos a função, eu estou montando uma biblioteca de códigos aqui, tudo que eu vejo que é muito eficiente eu guardo num local dedicado.
Obrigado.
KUD*~ _________________ Segurança custa caro?
Experimente um acidente! |
|
| Voltar ao Topo |
|
 |
GustavoToyota Profissional


Registrado: Domingo, 9 de Outubro de 2011 Mensagens: 605 Localização: Sorocaba - SP
|
Enviada: Sáb Jul 21, 2012 2:00 pm Assunto: |
|
|
Amigo, olha lá ja postei a função  |
|
| Voltar ao Topo |
|
 |
kud Aprendiz

Registrado: Sexta-Feira, 20 de Abril de 2012 Mensagens: 142 Localização: São Paulo - SP
|
Enviada: Sáb Jul 21, 2012 2:03 pm Assunto: |
|
|
Desculpe a minha falta de atenção.
Assim que migrar para o XE2, acredito que ainda hoje, eu testo essa.
Obrigado.
KUD*~ _________________ Segurança custa caro?
Experimente um acidente! |
|
| Voltar ao Topo |
|
 |
|