schaukoski Postado Junho 26, 2007 Denunciar Share Postado Junho 26, 2007 (editado) Olá muito boa tarde.Pessoal estou com algumas duvidas para fazer o seguinte:eu tenho em minha tela um DirectoryListBox1, e um FileListBox1 ligado à ele.O que eu estou tentando fazer é, ao clickar em meu button, eu alterar as propriedades do arquivo selecionado no FileListBox1.Eu Queria saber os comandos para alterar mas eu já procurei e não acho, achei FileExists('c:\meusdocumentos\arquivo.doc');, e DeleteFile('c:\arquivo.doc'); mas não axei para alterar as dataseu procuro por alterar datas de:(aquelas datas que aparecem nos arquivos nas propriedades)Criado em:Modificado em:Acessado em:essas datas que eu estou tentando alterar via delphi...Abraço!!!Obrigado .. até mais! Editado Junho 26, 2007 por schaukoski Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --HDELPHI -- Postado Junho 26, 2007 Denunciar Share Postado Junho 26, 2007 Olá muito boa tarde.Pessoal estou com algumas duvidas para fazer o seguinte:eu tenho em minha tela um DirectoryListBox1, e um FileListBox1 ligado à ele.O que eu estou tentando fazer é, ao clickar em meu button, eu alterar as propriedades do arquivo selecionado no FileListBox1.Eu Queria saber os comandos para alterar mas eu já procurei e não acho, achei FileExists('c:\meusdocumentos\arquivo.doc');, e DeleteFile('c:\arquivo.doc'); mas não axei para alterar as dataseu procuro por alterar datas de:(aquelas datas que aparecem nos arquivos nas propriedades)Criado em:Modificado em:Acessado em:essas datas que eu estou tentando alterar via delphi...Abraço!!!Obrigado .. até mais!Colega ai vai uma dica: Função para verificar as propriedades de um arquivoVoce pode modificar para obter outras informações do arquivo... ok ?function TForm1.VerificaPropriedadeArquivo(Arquivo,Propriedade: String): String; const InfoNum = 10; InfoStr : Array[1..InfoNum] of String = ('CompanyName', 'FileDescription', 'FileVersion', 'InternalName', 'LegalCopyright', 'LegalTradeMarks', 'OriginalFilename', 'ProductName', 'ProductVersion', 'Comments'); var fCompanyName : String; fFileDescription : String; fFileVersion : String; fInternalName : String; fLegalCopyright : String; fLegalTradeMark : String; fOriginalFileName : String; fProductName : String; fProductVersion : String; fComments : String; S : String; Len : Cardinal; n : Cardinal; Buf : PChar; Value : PChar; begin S := Arquivo; n := GetFileVersionInfoSize(PChar(S), n); if n > 0 then begin Buf := AllocMem(n); try GetFileVersionInfo(PChar(S), 0, n, Buf); if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[1]), Pointer(Value), Len) then fCompanyName := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[2]), Pointer(Value), Len) then fFileDescription := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[3]), Pointer(Value), Len) then fFileVersion := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[4]), Pointer(Value), Len) then fInternalName := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[5]), Pointer(Value), Len) then fLegalCopyright := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[6]), Pointer(Value), Len) then fLegalTradeMark := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[7]), Pointer(Value), Len) then fOriginalFileName := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[8]), Pointer(Value), Len) then fProductName := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[9]), Pointer(Value), Len) then fProductVersion := Value; if VerQueryValue(Buf, PChar('StringFileInfo41604E4\' + InfoStr[10]), Pointer(Value), Len) then fComments := Value; finally FreeMem(Buf, n); end; end else begin fCompanyName := ''; fFileDescription := ''; fFileVersion := ''; fInternalName := ''; fLegalCopyright := ''; fLegalTradeMark := ''; fOriginalFileName := ''; fProductName := ''; fProductVersion := ''; fComments := ''; end; result := '?????'; if Propriedade = 'CompanyName' then result := fCompanyName; if Propriedade = 'FileDescription' then result := fFileDescription; if Propriedade = 'FileVersion' then result := fFileVersion; if Propriedade = 'InternalName' then result := fInternalName; if Propriedade = 'LegalCopyright' then result := fLegalCopyright; if Propriedade = 'LegalTradeMarks' then result := fLegalTradeMark; if Propriedade = 'OriginalFilename' then result := fOriginalFileName; if Propriedade = 'ProductName' then result := fProductName; if Propriedade = 'ProductVersion' then result := fProductVersion; if Propriedade = 'Comments' then result := fComments; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 schaukoski Postado Junho 26, 2007 Autor Denunciar Share Postado Junho 26, 2007 Obrigado pela resposta.então cara, eu não intendi muito bem não.essa rotina ele meio que "descobre" a propriedade e salva? mas e alterá-la?eu axei um pouco confuso, será que não existe uma maneira mais fácil de fazer isso? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --HDELPHI -- Postado Junho 26, 2007 Denunciar Share Postado Junho 26, 2007 Obrigado pela resposta.então cara, eu não intendi muito bem não.essa rotina ele meio que "descobre" a propriedade e salva? mas e alterá-la?eu axei um pouco confuso, será que não existe uma maneira mais fácil de fazer isso?Voce não pode alterar propriedades mas pode alterar atributos que são coisas bem diferentes.por exemplo se você quiser alterar o atributo de somente para leitura de um arquivo:var Attrib: integer; begin Attrib:=FileGetAttr('C:\ARQUIVO.XYZ'); if Attrib<>-1 then begin Attrib:=Attrib and not faReadOnly; if FileSetAttr('C:\ARQUIVO.XYZ', Attrib)=0 then Alteração Efetuada else Windows code error; end; end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --HDELPHI -- Postado Junho 26, 2007 Denunciar Share Postado Junho 26, 2007 Exibindo as propriedades do arquivoA dica abaixo apresenta o código de implementação para exibir na tela uma janela padrão Windows de propriedades do arquivo.Para implementar este procedimento é necessário acrescentar a unit ShellAPI.As propriedades do arquivo são armazenadas numa estrutura chamada TShellExecuteInfo, que corresponde a um registro com os campos: tamanho do arquivo (cbSize), atributos (fMask), nome (lpFile) , shell (lpVerb) e modo de apresentação da janela (nShow).O primeiro passo do procedimento é zerar todas a propriedades da Shell ( FillChar(S,SizeOf(S),0) ), segundo passo é atualizar estas propriedades (With S do ) em relação ao arquivo indicado (Arq :String) e o terceiro passo é abrir a janela de propriedades com os valores atualizados (ShellExecuteEx(@S)).Código Completo: Uma outra maneira mais simplificadaProcedure Propriedades(Arq:String); Var s:TShellExecuteInfo; Begin FillChar(S,SizeOf(S),0); With S do Begin cbSize := SizeOf(S); fMask := SEE_MASK_FLAG_NO_UI or SEE_MASK_INVOKEIDLIST or SEE_MASK_NOCLOSEPROCESS; wnd := Handle; lpVerb := 'properties'; lpFile := Pchar(Arq); nShow := sw_ShowNormal; End; ShellExecuteEx(@S); End; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 schaukoski Postado Junho 26, 2007 Autor Denunciar Share Postado Junho 26, 2007 Então cara.. eu axei aqui uma rotina para exibir exatamente o que eu precisava:var SearchFile: TSearchRec; lpSystemTime: TSystemTime; begin { arquivo } FindFirst(FileListBox1.FileName,faAnyFile,SearchFile); try { Criação } FileTimeToSystemTime (SearchFile.FindData.ftCreationTime,lpSystemTime); Edit1.text:=DateTimeToStr(SystemTimeToDateTime(lpSystemTime)); { Modificado } FileTimeToSystemTime (SearchFile.FindData.ftLastWriteTime,lpSystemTime); Edit2.text:=DateTimeToStr (SystemTimeToDateTime(lpSystemTime)); { Acessado } FileTimeToSystemTime (SearchFile.FindData.ftLastAccessTime,lpSystemTime); Edit3.text:=DateTimeToStr(SystemTimeToDateTime(lpSystemTime)); finally FindClose(SearchFile); end;eu so consigo mostrar as datas, mas.. voce disse então que não tem como alterar?, não existe essa possibilidade?obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --HDELPHI -- Postado Junho 26, 2007 Denunciar Share Postado Junho 26, 2007 Então cara.. eu axei aqui uma rotina para exibir exatamente o que eu precisava:var SearchFile: TSearchRec; lpSystemTime: TSystemTime; begin { arquivo } FindFirst(FileListBox1.FileName,faAnyFile,SearchFile); try { Criação } FileTimeToSystemTime (SearchFile.FindData.ftCreationTime,lpSystemTime); Edit1.text:=DateTimeToStr(SystemTimeToDateTime(lpSystemTime)); { Modificado } FileTimeToSystemTime (SearchFile.FindData.ftLastWriteTime,lpSystemTime); Edit2.text:=DateTimeToStr (SystemTimeToDateTime(lpSystemTime)); { Acessado } FileTimeToSystemTime (SearchFile.FindData.ftLastAccessTime,lpSystemTime); Edit3.text:=DateTimeToStr(SystemTimeToDateTime(lpSystemTime)); finally FindClose(SearchFile); end;eu so consigo mostrar as datas, mas.. voce disse então que não tem como alterar?, não existe essa possibilidade?obrigadoVoce pode alterar datas sim, basta mudar a data do seu micro, editar o arquivo e salva-lo ; ele ficara mostrando a data em que foi salvo .... ok ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 schaukoski Postado Junho 26, 2007 Autor Denunciar Share Postado Junho 26, 2007 é isso seria manualmente.mas digo.. tem como eu fazer isso através do delphi?a data que eu estaria alterando desta forma seria a de modificação.. mas e a de criação? não tem como alterá-la de forma alguma?valeu! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --HDELPHI -- Postado Junho 26, 2007 Denunciar Share Postado Junho 26, 2007 é isso seria manualmente.mas digo.. tem como eu fazer isso através do delphi?a data que eu estaria alterando desta forma seria a de modificação.. mas e a de criação? não tem como alterá-la de forma alguma?valeu!voce pode construir no delphi uma rotina para isto, o procedimento é aquele ...mudar a data, abrir o arquivo em questão e salva-lo novamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Junho 27, 2007 Denunciar Share Postado Junho 27, 2007 Olá muito boa tarde.Pessoal estou com algumas duvidas para fazer o seguinte:eu tenho em minha tela um DirectoryListBox1, e um FileListBox1 ligado à ele.O que eu estou tentando fazer é, ao clickar em meu button, eu alterar as propriedades do arquivo selecionado no FileListBox1.Eu Queria saber os comandos para alterar mas eu já procurei e não acho, achei FileExists('c:\meusdocumentos\arquivo.doc');, e DeleteFile('c:\arquivo.doc'); mas não axei para alterar as dataseu procuro por alterar datas de:(aquelas datas que aparecem nos arquivos nas propriedades)Criado em:Modificado em:Acessado em:Existe uma uma função da API Win32 para isso sim: SetFileTimeEu dei uma pesquisada e, a princípio, não encontrei nada que fizesse tudo em uma única função, então criei uma e coloquei na sessão Tutoriais & Dicas (ver tópico) para que outros possam facilmente encontrá-la.Usei como ponto de partida esta função na página do Torry's - link ref.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
schaukoski
Olá muito boa tarde.
Pessoal estou com algumas duvidas para fazer o seguinte:
eu tenho em minha tela um DirectoryListBox1, e um FileListBox1 ligado à ele.
O que eu estou tentando fazer é, ao clickar em meu button, eu alterar as propriedades do arquivo selecionado no FileListBox1.
Eu Queria saber os comandos para alterar mas eu já procurei e não acho, achei FileExists('c:\meusdocumentos\arquivo.doc');, e
DeleteFile('c:\arquivo.doc'); mas não axei para alterar as datas
eu procuro por alterar datas de:
(aquelas datas que aparecem nos arquivos nas propriedades)
Criado em:
Modificado em:
Acessado em:
essas datas que eu estou tentando alterar via delphi...
Abraço!!!
Obrigado .. até mais!
Editado por schaukoskiLink para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.