Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jore

Como salvar só o nome da Imagem

Recommended Posts

Olá amigos,

Tenho um campo DBEdit para salvar o caminho das imagens que vou utilizar no meu projeto.
Gostaria de abreviar os nomes e mostrar somente o nome da imagem e extensão.
Por exemplo: Vamos supor que a imagem esteja em:
C:\Projeto\Itens\Imagens\Carimbo.png

Gostaria de mostrar no DBEdit apenas o nome da imagem e a extensão: Carimbo.png

Alguém sabe como posso fazer isto?

PS.: Meu Banco é Firebird e deixei um Varchar 40 para salvar o nome das imagens.

Um abraço a todos e Muito obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

É exatamente isso que te passei no seu caso ficaria assim:

Diretorio := 'C:\Projeto\Itens\Imagens\Carimbo.png';
NomeArquivo := ExtractFileName(Diretorio);

 

 

Neste caso a variável NomeArquivo vai estar com o valor 'Carimbo.png'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Roberto Fagundes,

Desculpe minha ignorância mas...

Olha eu terei muitas imagens + de 1000 como fica tem como?

Este comando entra onde? Coloco junto com o botão de abrir a imagem?

 

Estou chamando a imagem assim:

 

 

 

procedure TForm1.sButton2Click(Sender: TObject);
Begin
If OpenPictureDialog1.Execute then
Begin
Image1.Picture.LoadFromFile(openpicturedialog1.FileName);
DataModule1.IBTab_Teste.edit;
DataModule1.IBTab_TesteTE_IMGITENS.value:=OpenPictureDialog1.FileName;
End;
End;

 

Muito Obrigado por sua ajuda!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficaria assim:

 

procedure TForm1.sButton2Click(Sender: TObject);
Begin
  If OpenPictureDialog1.Execute then
    Begin
      Image1.Picture.LoadFromFile(openpicturedialog1.FileName);
      DataModule1.IBTab_Teste.edit;
      DataModule1.IBTab_TesteTE_IMGITENS.value:=ExtractFileName(openpicturedialog1.FileName);
    End;
End;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o erro que ocorreu? Em que momento ele ocorre no código? Como está o código fonte onde o erro ocorre? Já debugou o mesmo para verificar o valor das variáveis envolvidas no momento que o erro ocorre pra ver se não é erro nas mesmas?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Chrnos, O erro é este da imagem:

j686.jpg

 

Eu abro a imagem tudo certinho porém O erro ocorre na hora em que eu clico no DBNavigator em salvar.

 

E depois aponta para esta linha:

 

raise EFOpenError.CreateResFmt(@SFOpenErrorEx, [ExpandFileName(AFileName), SysErrorMessage(GetLastError)]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jore, nem todos conseguem visualizar imagens no fórum (eu não consigo aqui, a rede parcialmente bloqueada), então seria melhor trazer o erro escrito... outra coisa, como está o código no seu botão salvar? Lembre-se que não tenho como ver seu fonte por telepatia ainda rs...

 

De boa, dê mais detalhado o problema, sempre trazendo no post o código em que está tendo problema. Porque não sei se você está dando um post ou outra coisa na sua gravação sem ver o código saca?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa amigo, Juro que não sabia...

Segue a mensagem de erro:

 

Cannot Open File "C:\Teste\Win32\Debug\1.png". O sistema não pode encontrar o arquivo especificado.

No Botão para abrir a imagem esta assim:

procedure TForm1.sButton2Click(Sender: TObject); 
Begin 
If OpenPictureDialog1.Execute then 
Begin 
Image1.Picture.LoadFromFile(openpicturedialog1.FileName);
DataModule1.IBTab_Teste.edit;
DataModule1.IBTab_TesteTE_IMGITENS.value:=ExtractFileName(openpicturedialog1.FileName); 
End; 
End;

 

Eu uso um DBNavigator e ele tem

Uso Delphi XE4

Banco FireBird

Ligação com Interbase (IBDtaBase, IBTable e IBTransaction)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se entendi direito, seu problema está no load da imagem no seu TImage certo? No delphi 7 (ainda não usei o XE), para poder usar certos tipos de imagem com este componente eu precisava adicionar na lista de uses do formulário onde estava o TImage a chamada a JPeg... no seu form você está utilizando esta unit? Outra coisa: a imagem que está tentando carregar existe no caminho indicado?

 

Se o erro não está no loadfromfile do TImage, em que ponto o erro ocorre?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Chnos,

Sim a imagem existe! E sim para o jpeg.

Eu consigo carregar a imagem certinho porém na hora em que eu cloco em salvar é que aparece este erro.

 

Se eu tirar a parte do código (ExtractFileName) para mostrar só o nome sem o caminho da imagem roda normalmente!

Você conhece outro método de fazer isto?

 

Um Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você debuga, o erro ocorre nesta linha?

 

 

DataModule1.IBTab_TesteTE_IMGITENS.value:=ExtractFileName(openpicturedialog1.FileName);

 

Porque não faz sentido dar erro neste ponto, visto que se seu campo no BD é uma string, ele só vai receber uma string desta instrução... O seu botão de gravação executa outro código que não o postado anteriormente? O que está enviando para o BD na hora de gravar de instrução?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos,

Fiz um novo projeto pequeno só para testar se iria salvar com o nome abreviado e mesmo assim deu erro.

 

Uso Delphi XE4

Banco FireBird

Ligação com Interbase

Form - Contendo:

Três campos (Codigo, Nome e Imagem),

Componentes: (um Image, Um DBNavigator, um Button e um OpenpictureDialog).

 

DataModule Contendo:

(IBDtaBase, IBTable, IBTable_Cod, IBTransaction e um DataSource)

 

Segue abaixo o código completo para vocês poderem ver:

unit Utabtit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Mask,
  Vcl.DBCtrls, Vcl.ExtDlgs, db, jpeg, acPNG;

type
  TForm1 = class(TForm)
    Image1: TImage;
    GroupBox1: TGroupBox;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    DBNavigator1: TDBNavigator;
    procedure Button1Click(Sender: TObject);
    procedure DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses UDaMo;

procedure TForm1.Button1Click(Sender: TObject);
Begin
If OpenPictureDialog1.Execute then
Begin
Image1.Picture.LoadFromFile(openpicturedialog1.FileName);
DataModule2.IBTable1.edit;
DataModule2.IBTable1TTI_IMGITENS.value:=(openpicturedialog1.FileName);
End;
End;

procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
var
ultcod:integer;
Begin
if DataModule2.DataSource1.state in [dsInsert] then
Begin
DataModule2.IBTable_Cod.Open;
DataModule2.IBTable_Cod.last;
ultcod:=DataModule2.IBTable_CodTTI_CODIGO.value+1;
DataModule2.IBTable1TTI_CODIGO.value:=ultcod;
DataModule2.IBTable_Cod.close;
DBEdit2.SetFocus;
DataModule2.IBTable1TTI_ImgItens.value:='';
Image1.PICTURE.ASSIGN(NIL);
end
else
Image1.picture.loadfromfile (datamodule2.IBTable1TTI_IMGITENS.Value);

end;


procedure TForm1.FormShow(Sender: TObject);
begin
datamodule2.IBTable1.open;
Image1.picture.loadfromfile (datamodule2.IBTable1TTI_IMGItens.Value);
end;

end.

 

Um abraço e Obrigado a todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.