Ir para conteúdo
Fórum Script Brasil
  • 0

Criar Pastas para Cadastro de Fotos


MagoDanger

Pergunta

Olá amigos, atualmente eu utilizo o seguinte código em meu programa para Cadastrar foto de imóveis para aluguel:

var Diretorio : String;
    Origem,
    Destino :array[0..512] of Char;
begin
dm.t_ft_vendas.Insert;
begin
  if OpenPictureDialog1.Execute then
  begin
     Diretorio := '\\server\c\listagem\img_vendas\'+ ExtractFileName

(OpenPictureDialog1.FileName);
     if FileExists(Diretorio) then
     begin
        if MessageDlg('O arquivo ' + ExtractFileName

(OpenPictureDialog1.FileName) + ' já existe no destino. Deseja 

sobrescrevê-lo?', mtConfirmation, [mbYes, mbNo], 0) = IDYes then
        begin
           DeleteFile(Diretorio);
           StrPCopy(Origem, OpenPictureDialog1.FileName);
           StrPCopy(Destino, Diretorio);
           CopyFile(Origem, Destino, True);
        end;
     end
     else
     begin
        StrPCopy(Origem, OpenPictureDialog1.FileName);
        StrPCopy(Destino, Diretorio);
        CopyFile(Origem, Destino, True);
     end;
     f_incluir_imoveis_venda.Image1.Picture.LoadFromFile(Diretorio);
     dm.t_ft_vendas.Edit;
     dm.t_ft_vendas.Fields.FieldByName('img01').AsString := 

Diretorio;  // < === *** supondo nome campo CaminhoImg
     dm.t_ft_vendas.Post;
     ShowMessage('Foto cadastada!');
     SpeedButton2.Enabled := true;
  end;
end; end;

Porém surgiu a necessidade de criar pasta para cada cadastro, para isso eu gostaria de usar a ID do cadastro...

Como posso incrementar esse código para ele criar umas pasta com a ID, dentro do diretório acima mencionado?

Se alguém puder dar essa força fico muito grato.

Obrigado.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

exemplo para voce fazer a adaptação ao seu código

basta colocar o caminho da ID do cadastro na variavel Dir


procedure TForm1.Button1Click(Sender: TObject);

var
  Dir: string;
begin

  Dir := 'C:\APPS\SALES\LOCAL';

  if ForceDirectories(Dir) then
    Label1.Caption := Dir + ' foi criado!'

end;



abraço
Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, tentei acrescentar esse comando no meu código, mas não deu certo... o que tem de errado?

begin
dm.q_img_saida.Append;
begin
  Diretorio := '\\server\sysvistoria\ftsaida\';
  if ForceDirectories(Diretorio) then
 f_cad_vissaida.DBEdit1.text := Diretorio + ' foi criado!';
  if OpenPictureDialog1.Execute then
  begin
     Diretorio := '\\server\sysvistoria\ftsaida\'+ ExtractFileName(OpenPictureDialog1.FileName);
     if FileExists(Diretorio) then
     begin
        if MessageDlg('O arquivo ' + ExtractFileName(OpenPictureDialog1.FileName) + ' já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbYes, mbNo], 0) = IDYes then
        begin
           DeleteFile(Diretorio);
           StrPCopy(Origem, OpenPictureDialog1.FileName);
           StrPCopy(Destino, Diretorio);
           CopyFile(Origem, Destino, True);
        end;
     end
     else
     begin
        StrPCopy(Origem, OpenPictureDialog1.FileName);
        StrPCopy(Destino, Diretorio);
        CopyFile(Origem, Destino, True);
     end;
     f_fotos_desocupa.Image1.Picture.LoadFromFile(Diretorio);
     dm.q_img_saida.Edit;
     dm.q_img_saida.Fields.FieldByName('img').AsString := Diretorio;  // < === *** supondo nome campo CaminhoImg
     dm.q_img_saida.Post;
     ShowMessage('Foto cadastada!');
  end;
end; end; 
Link para o comentário
Compartilhar em outros sites

  • 0

amigo, o comando ForceDirectories(Diretorio) força a criação de um diretorio se ele não existir

Diretorio := '\\server\sysvistoria\ftsaida\';
if ForceDirectories(Diretorio) then
f_cad_vissaida.DBEdit1.text := Diretorio + '
foi criado!';

veja que voce colocou o comando no inicio do codigo ... então se esse diretorio já existe ele não sera mais criado

enretanto esse codigo

Diretorio := '\\server\sysvistoria\ftsaida\'+ ExtractFileName(OpenPictureDialog1.FileName);

vai receber o caminho e o nome da figura que voce esta abrindo ... se quiser criar um novo diretorio com esse caminho o comando

if ForceDirectories(Diretorio) then

deve vir logo após esse comando.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, bom dia!

Tentei aqui mas não deu certo...

Fiz da seguinte forma:

var Diretorio : String;
    Origem,
    Destino :array[0..512] of Char;
begin
dm.q_img_saida.Append;
begin
  if OpenPictureDialog1.Execute then
  begin
     Diretorio := '\\server\sysvistoria\ftsaida\'+ f_cad_vissaida.DBEdit1.text +ExtractFileName(OpenPictureDialog1.FileName);
     if ForceDirectories(Diretorio) then
     f_cad_vissaida.DBEdit1.text := Diretorio + ' foi criado!';
     if FileExists(Diretorio) then
     begin
        if MessageDlg('O arquivo ' + ExtractFileName(OpenPictureDialog1.FileName) + ' já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbYes, mbNo], 0) = IDYes then
        begin
           DeleteFile(Diretorio);
           StrPCopy(Origem, OpenPictureDialog1.FileName);
           StrPCopy(Destino, Diretorio);
           CopyFile(Origem, Destino, True);
        end;
     end
     else
     begin
        StrPCopy(Origem, OpenPictureDialog1.FileName);
        StrPCopy(Destino, Diretorio);
        CopyFile(Origem, Destino, True);
     end;
     f_fotos_desocupa.Image1.Picture.LoadFromFile(Diretorio);
     dm.q_img_saida.Edit;
     dm.q_img_saida.Fields.FieldByName('img').AsString := Diretorio;  // < === *** supondo nome campo CaminhoImg
     dm.q_img_saida.Post;
     ShowMessage('Foto cadastada!');
  end;
end; end;   

Só que ele não cria uma pasta com o nome da id que vem do f_cad_vissaida.DBEdit1.text

Ele está criando uma pasta, por exemplo, foto.jpg (que é o nome da foto que selecionei) e não com a ID... e também não copia a foto... o que estou fazendo de errado? :(

Editado por MagoDanger
Link para o comentário
Compartilhar em outros sites

  • 0

fiz algumas alterações no seu código ...

OBS: comentei as linhas do código onde voce usa o banco de dados

procedure TForm1.Button1Click(Sender: TObject);
var Caminho, Diretorio : String;
    Origem,
    Destino :array[0..512] of Char;
begin
  //dm.t_ft_vendas.Insert;

  if OpenPictureDialog1.Execute then
  begin
     //Diretorio := '\\server\c\listagem\img_vendas\'+ ExtractFileName

     // CAMINHO DA FOTO E O NOME DA FOTO
     Caminho := ExtractFilePath(OpenPictureDialog1.FileName)+ ExtractFileName(OpenPictureDialog1.FileName);

     // DIRETORIO ONDE SERA SALVO AS FOTOS DE ACORDO COM O NOME DA FOTO
     Diretorio :=  ChangeFileExt(Caminho,'');

     // FORÇA A CRIAÇÃO DO DIRETORIO SE NÃO EXISTIR
     if ForceDirectories(Diretorio) then
        showmessage('Diretorio = '+ Diretorio + ' foi criado!')
     else
        showmessage('Diretorio = '+ Diretorio + ' já existe!');

     // VERIFICA SE O ARQUIVO JA EXISTE NO DIRETORIO E FAZ COPIA DA FOTO
     if FileExists(Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName)) then
     begin
        if MessageDlg('O arquivo ' + ExtractFileName(OpenPictureDialog1.FileName) +
        ' já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbYes, mbNo], 0) = IDYes then
        begin
           StrPCopy(Origem, Caminho);
           StrPCopy(Destino, Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName));
           CopyFile(Origem, Destino, False);
        end;
     end
     else
     begin
        StrPCopy(Origem, Caminho);
        StrPCopy(Destino, Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName));
        CopyFile(Origem, Destino, True);
     end;
     //f_incluir_imoveis_venda.Image1.Picture.LoadFromFile(Diretorio);
     //dm.t_ft_vendas.Edit;
     //dm.t_ft_vendas.Fields.FieldByName('img01').AsString := Diretorio;  // < === *** supondo nome campo CaminhoImg
     //dm.t_ft_vendas.Post;
     ShowMessage('Foto cadastrada!');
     //SpeedButton2.Enabled := true;
  end;
end;

o codigo como esta, permite voce selecionar uma foto de algum diretorio, criar um diretorio com o nome dessa foto e copiar a foto para dentro desse diretorio

faça as alterações que forem necessarias a partir disso

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo, não quero que crie um diretório com o nome da foto, e sim com a ID do imóvel cadastrado. Quando cadastro um novo imóvel gera uma id pra ele, a pasta a ser criada deve ser com o nome (no caso, número) dessa ID...

Tentei fazer assim, mas não deu certo... O que tem de errado? Não estou conseguindo fazer essa parte de jeito nenhum...

Olha como está... :wacko:

var
    Caminho, Diretorio : String;
    Origem,
    Destino :array[0..512] of Char;
begin
dm.q_img_saida.Append;
begin
  if OpenPictureDialog1.Execute then
  begin
     Diretorio := '\\server\sysvistoria\ftsaida\'+ ExtractFileName;
     if FileExists(Diretorio) then
     begin
        if MessageDlg('O arquivo ' + ExtractFileName(OpenPictureDialog1.FileName) + ' já existe no destino. Deseja sobrescrevê-lo?', mtConfirmation, [mbYes, mbNo], 0) = IDYes then
        begin
           DeleteFile(Diretorio);
           StrPCopy(Origem, OpenPictureDialog1.FileName);
           StrPCopy(Destino, Diretorio);
           CopyFile(Origem, Destino, True);
        end;
     end
     else
     begin
        StrPCopy(Origem, OpenPictureDialog1.FileName);
        StrPCopy(Destino, Diretorio);
        CopyFile(Origem, Destino, True);
     end;
     f_fotos_desocupa.Image1.Picture.LoadFromFile(Diretorio);
     dm.q_img_saida.Edit;
     dm.q_img_saida.Fields.FieldByName('img').AsString := Diretorio;  // < === *** supondo nome campo CaminhoImg
     dm.q_img_saida.Post;
     ShowMessage('Foto cadastada!');
  end;
end; end;
Editado por MagoDanger
Link para o comentário
Compartilhar em outros sites

  • 0

faça as alterações que forem necessarias a partir disso

amigo, se voce quer o ID do imóvel cadastrado, basta alterar o código para receber o valor do ID no lugar do nome da foto

veja que nesse comando

StrPCopy(Destino, Diretorio);

o certo é :

StrPCopy(Destino, Diretorio + '\'+ ExtractFileName(OpenPictureDialog1.FileName));

pois o nome do arquivo Origem deve estar tambem no Destino

abraço

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...