ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Limpar Arquivo da Memória [RESOLVIDO]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Lippi
Membro Junior
Membro Junior


Registrado: Terça-Feira, 25 de Novembro de 2008
Mensagens: 352

MensagemEnviada: Qua Jun 13, 2018 2:48 pm    Assunto: Limpar Arquivo da Memória [RESOLVIDO] Responder com Citação

Senhores do Delphi, boa tarde.

D7
Fb 2,5

Tenho uma rotina que ao ser executada deixa o arquivo excel na memória. Quanto tento acessá-lo (excel) via explorador de arquivos abre a mensagem "está bloqueado para edição" . Essa rotina (abaixo) tem como objetivo fazer a leitura do arquivo excel para o Delphi.

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  v_caminho: String;
  v_excel, v_excel2: OleVariant;
  v_i, v_j: Integer;
begin
  if OpenDialog1.Execute then
    begin
      v_caminho:=OpenDialog1.FileName;
      v_excel:=CreateOleObject('Excel.Application');
      v_excel.Visible:=False;
      v_excel.Application.Workbooks.Open(v_caminho);
      v_excel2:=CreateOleObject('Excel.Application');
      v_excel2.Visible:=False;
      v_excel2.Application.Workbooks.Open(v_caminho);
      v_j:=0;
      while not (AnsiUpperCase(v_excel.cells.item[v_j + 1, 1].value)='') do
        begin
          inc(v_j);
        end;
      for v_i:= 0 to v_j - 1 do
        begin
          StringGrid1.Cells[01, v_i]:=AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,1].Value);
          StringGrid1.Cells[02, v_i]:=AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,2].Value);
          StringGrid1.Cells[03, v_i]:=AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,3].Value);
          StringGrid1.Cells[04, v_i]:=AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,4].Value);
        end;
      Unassigned;
      MessageDlg('Importação realizada com sucesso!', mtconfirmation, [mbOk], 0);
    end;
end;


Como devo fechar (eliminar a memória retida) esse arquivo excel?

Abraço a todos.
Lippi.
_________________
Longo e difícil é o caminho que, das trevas, nos leva à luz.


Editado pela última vez por Lippi em Qua Jun 13, 2018 6:14 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10267
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Qua Jun 13, 2018 3:20 pm    Assunto: Responder com Citação

Você esqueceu de dar um "QUIT" na aplicação amigo, assim como neste exemplo, sendo assim, no seu caso, a instância continua aberta com o arquivo que você abriu.


http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/OleAuto_CreateOleObject.html




bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Lippi
Membro Junior
Membro Junior


Registrado: Terça-Feira, 25 de Novembro de 2008
Mensagens: 352

MensagemEnviada: Qua Jun 13, 2018 6:13 pm    Assunto: Valeu Responder com Citação

Caro Johnny-Wlaker,

Muito obrigado.

Acrescentei antes do comando Unassigned:

v_excel.quit <---
v_excel2.quit <---
Unassigned;

Obrigado.
Lippi.
_________________
Longo e difícil é o caminho que, das trevas, nos leva à luz.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10267
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Sex Jun 15, 2018 9:50 am    Assunto: Responder com Citação

Disponha, estamos aqui para ajudar mesmo.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB