Gravar no CD-RW

Delphi

17/02/2004

Estou tentando gravar no CD-ROM R/W usando o compactador WinRar e com o comando abaixo. Algumas vezes a gravação e bem sucedida mas a maiores das vezes não. Da a mensagem de CD cheio, e não está. Alguém saberia por que ? Estou usando Delphi-7 e Paradox.

ShellExecute(0,nil,´WinRar.exe´,´a -agDD-MMM-YY-HHMM E:\BKBDMACOM C:\BANCODADOS\*.*´,nil,sw_show);


Agonzaga

Agonzaga

Curtidas 0

Respostas

Vinicius2k

Vinicius2k

17/02/2004

Colega,

Podem haver tabelas abertas durante a compactação... isso normalmente gera erro, mas também é possível que seja uma falha do inCD, DirectCD ou outro que vc esteja usando...
Dica: a rotina teria um desempenho melhor, e talvez livre de falhas se a compactação fosse efetuada no drive C e depois só o arquivo compactado pronto copiado para o CD...

T+


GOSTEI 0
Agonzaga

Agonzaga

17/02/2004

Vinicius2k.
Fecho todas as tabelas antes.
Fora do delphi o gravador esta funcinando Ok.
Já tentei compactar no C: e depois copiar para o CD utilizando o comando FileCopy ou CopyFile e não acontence nada, passa pelo comando e nada.


GOSTEI 0
Gandalf.nho

Gandalf.nho

17/02/2004

Já tentou usar um componente de compactação para isso em vez de um programa externo? Uma boa sugestão é o ZipMaster.


GOSTEI 0
Vinicius2k

Vinicius2k

17/02/2004

Já tentei compactar no C: e depois copiar para o CD utilizando o comando FileCopy ou CopyFile e não acontence nada, passa pelo comando e nada.


mas fazendo dessa forma você precisa aguardar a compactação terminar antes de fazer a cópia do arquivo, pq até então não existe arquivo ainda...
vc precisa criar um processo e aguardar que ele termine, para copiar... veja um exemplo de como criar um processo :

procedure TForm1.Button1Click(Sender: TObject);
var StartupInfo: Tstartupinfo;
    ProcessInfo: TprocessInformation;
begin
 FillChar(StartupInfo,sizeof(TStartupInfo),0);
 StartupInfo.cb:=sizeof(TStartupInfo);
 if CreateProcess(nil,pchar(´c:\windows\calc.exe´), nil, nil,false,
                 normal_priority_class, nil,pchar(´c:\windows´),
                 StartupInfo,ProcessInfo) then
                   WaitForSingleObject(ProcessInfo.hprocess,infinite);
  winexec(pchar(´c:\windows\notepad.exe´),SW_SHOWNORMAL);
end;


no exemplo acima a calculadora é chamada e a apliação aguarda até que ela seja fechada para continuar a execução da rotina, no exemplo, chamar o bloco de notas...

espero ter ajudado...


GOSTEI 0
Alexandremarcondes

Alexandremarcondes

17/02/2004

Estou tentando gravar no CD-ROM R/W usando o compactador WinRar e com o comando abaixo. Algumas vezes a gravação e bem sucedida mas a maiores das vezes não. Da a mensagem de CD cheio, e não está. Alguém saberia por que ? Estou usando Delphi-7 e Paradox.


Porque você não tenta gravar o CD diretamente do Delphi? Com o Nero instalado na máquina e usando o projeto que está na minha assinatura você tem mais controle sobre a gravação. No projeto temos exemplos de códigos de gravação de CDs de áudio, Vídeo CD, imagens de CD e estou trabalhando agora para lançar esta semana ou na do carnaval os exemplos para CD de dados ISO e UDF (que é o que o InCD usa).


GOSTEI 0
POSTAR