Problema com Quick Tips : Compactar e Descompactar com Winrar + Delphi
Olá gente, é o seguinte:
[url:descricao=Quick Tips : Compactar e Descompactar com Winrar + Delphi - Parte I]https://www.devmedia.com.br/quick-tips-compactar-e-descompactar-com-winrar-delphi-parte-i/16256[/url]
[url:descricao=Quick Tips : Compactar e Descompactar com Winrar + Delphi - Parte II]https://www.devmedia.com.br/quick-tips-compactar-e-descompactar-com-winrar-delphi-parte-ii/16257#comentariosArtigo[/url]
Fiz aqui em casa com Delphi 2010. Está funcionando, porém ele não reconhece os arquivos que aponto na CheckListBox e salva tudo que está na raiz do executável.
As Unit's seguintes são as do projeto que fiz seguindo o tutorial. É na primeira que acredito estar o problema, me parece que falta uma linha, seria algo como: "Original := CheckListBox.Items;" mas dessa forma retorna o erro: Incompatible types: 'TStringList' and 'TStrings'
Pelo pouco que entendo de Delphi, acho que não está declarado para a variável Original que ela precisa receber da CheckListBox.
Alguém pode analisar e me ajudar?
Desde já agradeço!
[url:descricao=Quick Tips : Compactar e Descompactar com Winrar + Delphi - Parte I]https://www.devmedia.com.br/quick-tips-compactar-e-descompactar-com-winrar-delphi-parte-i/16256[/url]
[url:descricao=Quick Tips : Compactar e Descompactar com Winrar + Delphi - Parte II]https://www.devmedia.com.br/quick-tips-compactar-e-descompactar-com-winrar-delphi-parte-ii/16257#comentariosArtigo[/url]
Fiz aqui em casa com Delphi 2010. Está funcionando, porém ele não reconhece os arquivos que aponto na CheckListBox e salva tudo que está na raiz do executável.
As Unit's seguintes são as do projeto que fiz seguindo o tutorial. É na primeira que acredito estar o problema, me parece que falta uma linha, seria algo como: "Original := CheckListBox.Items;" mas dessa forma retorna o erro: Incompatible types: 'TStringList' and 'TStrings'
Pelo pouco que entendo de Delphi, acho que não está declarado para a variável Original que ela precisa receber da CheckListBox.
Alguém pode analisar e me ajudar?
unit uAutoBackup; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uDescompactar, uCompactar, StdCtrls, Buttons, ComCtrls, CheckLst; type TfrmPrincipal = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; EdtCaminhoWinrar: TEdit; EdtArquivoOriginal: TEdit; EdtDestino: TEdit; EdtExtensao: TEdit; BtnCaminhoWinrar: TBitBtn; BtnArquivoOriginal: TBitBtn; BtnDestino: TBitBtn; BtnDescompactar: TBitBtn; OpenDialog1: TOpenDialog; Label5: TLabel; EdtCaminhoWinrarCompactar: TEdit; BtnCaminhoWinrarCompactar: TBitBtn; Label6: TLabel; CheckListBox: TCheckListBox; BtnCheckListBoxAbrir: TBitBtn; BtnCheckListBoxLimpar: TBitBtn; Label7: TLabel; EdtDestinoCompactar: TEdit; BtnDestinoCompactar: TBitBtn; BtnCompactar: TBitBtn; procedure BtnCaminhoWinrarClick(Sender: TObject); procedure BtnArquivoOriginalClick(Sender: TObject); procedure BtnDestinoClick(Sender: TObject); procedure BtnDescompactarClick(Sender: TObject); procedure BtnCaminhoWinrarCompactarClick(Sender: TObject); procedure BtnCheckListBoxAbrirClick(Sender: TObject); procedure BtnCheckListBoxLimparClick(Sender: TObject); procedure BtnDestinoCompactarClick(Sender: TObject); procedure BtnCompactarClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private declarations } public { Public declarations } CompactarWinrar: TCompactarWinrar; end; var frmPrincipal: TfrmPrincipal; implementation {$R *.dfm} procedure TfrmPrincipal.BtnArquivoOriginalClick(Sender: TObject); begin if OpenDialog1.Execute then EdtArquivoOriginal.Text := OpenDialog1.FileName; end; procedure TfrmPrincipal.BtnCaminhoWinrarClick(Sender: TObject); begin if OpenDialog1.Execute then EdtCaminhoWinrar.Text := OpenDialog1.FileName; end; procedure TfrmPrincipal.BtnCaminhoWinrarCompactarClick(Sender: TObject); begin if OpenDialog1.Execute then EdtCaminhoWinrarCompactar.Text := OpenDialog1.FileName; end; procedure TfrmPrincipal.BtnCheckListBoxAbrirClick(Sender: TObject); begin if OpenDialog1.Execute then begin CompactarWinrar.Original.Add(OpenDialog1.FileName); CheckListBox.Items.Add(OpenDialog1.FileName); end; end; procedure TfrmPrincipal.BtnCheckListBoxLimparClick(Sender: TObject); begin CompactarWinrar.Original.Clear; CheckListBox.Clear; end; procedure TfrmPrincipal.BtnCompactarClick(Sender: TObject); Var CompactarWinrar : TCompactarWinrar; begin Try CompactarWinrar := TCompactarWinrar.Create; with CompactarWinrar do begin //Acredito que aqui falta algo como "Original := CheckListBox..." Tentei: "Original := CheckListBox.Items;" Mas ele retorna o erro: Incompatible types: 'TStringList' and 'TStrings' Destino := EdtDestinoCompactar.Text; PathInstalacao := EdtCaminhoWinrarCompactar.Text; Compactar; end; Finally FreeAndNil(CompactarWinrar); end; end; procedure TfrmPrincipal.BtnDescompactarClick(Sender: TObject); Var DescompactarWinrar : TDescompactarWinrar; begin Try DescompactarWinrar := TDescompactarWinrar.Create; with DescompactarWinrar do begin ArquivoOriginal := EdtArquivoOriginal.Text; Extensao := EdtExtensao.Text; PathDestino := EdtDestino.Text; PathInstalacao := EdtCaminhoWinrar.Text; Descompactar; end; Finally FreeAndNil(DescompactarWinrar); end; end; procedure TfrmPrincipal.BtnDestinoClick(Sender: TObject); begin if OpenDialog1.Execute then EdtDestino.Text := OpenDialog1.FileName; end; procedure TfrmPrincipal.BtnDestinoCompactarClick(Sender: TObject); begin if OpenDialog1.Execute then EdtDestinoCompactar.Text := OpenDialog1.FileName; end; procedure TfrmPrincipal.FormCreate(Sender: TObject); begin CompactarWinrar := TCompactarWinrar.Create; end; procedure TfrmPrincipal.FormDestroy(Sender: TObject); begin CompactarWinrar.Original.Destroy; FreeAndNil(CompactarWinrar); end; end.
unit uCompactar; interface uses Windows, Dialogs, SysUtils, Classes; Type TCompactarWinrar = class private FPathInstalacao: String; FDestino: String; FOriginal: TStringList; procedure SetDestino(const Value: String); procedure SetOriginal(const Value: TStringList); procedure SetPathInstalacao(const Value: String); { private declarations } protected { protected declarations } public { public declarations } property PathInstalacao : String read FPathInstalacao write SetPathInstalacao; property Original : TStringList read FOriginal write SetOriginal; property Destino : String read FDestino write SetDestino; procedure Compactar; constructor Create; published { published declarations } end; implementation { TCompactarWinrar } procedure TCompactarWinrar.Compactar; Var cmd, Arquivos : String; I: Integer; begin for I := 0 to Original.Count - 1 do begin Arquivos := Arquivos + '"' + Original.Strings[I] + '" ' ; end; Cmd := PathInstalacao + ' a "' + Destino + '"' + ' ' + Arquivos; WinExec( PAnsiChar(AnsiString(Cmd)), SW_HIDE); Showmessage('Arquivo Compactado com sucesso !!!'); end; constructor TCompactarWinrar.Create; begin Original := TStringList.Create; end; procedure TCompactarWinrar.SetDestino(const Value: String); begin if DirectoryExists(ExtractFileDir(Value)) then FDestino := Value else raise Exception.Create('Arquivo de Destino não existe ' + #13+ 'Arquivo : ' + Value ); end; procedure TCompactarWinrar.SetOriginal(const Value: TStringList); begin FOriginal := Value end; procedure TCompactarWinrar.SetPathInstalacao(const Value: String); begin FPathInstalacao := Value; end; end.
Desde já agradeço!
Luziraldo Godinho
Curtidas 0