Jore 0 Denunciar post Postado Novembro 5, 2013 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
Roberto Fagundes 40 Denunciar post Postado Novembro 5, 2013 Utilize a função: ExtractFileName(Diretório_do_arquivo); Compartilhar este post Link para o post Compartilhar em outros sites
Jore 0 Denunciar post Postado Novembro 6, 2013 Olá Roberto Fagundes, Você tem algum exemplo de como utilizar? Muito obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Novembro 6, 2013 É 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
Jore 0 Denunciar post Postado Novembro 6, 2013 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
Roberto Fagundes 40 Denunciar post Postado Novembro 6, 2013 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
Jore 0 Denunciar post Postado Novembro 6, 2013 Deu este erro na hora de salvar a imagem: O que pode ser? Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Novembro 6, 2013 A imagem não foi encontrada, se ela existe é questão de direitos do windows 7 Tente executar seu sistema como administrador. Compartilhar este post Link para o post Compartilhar em outros sites
Jore 0 Denunciar post Postado Novembro 6, 2013 A Imagem existe e mesmo executando como administrador da este erro! Compartilhar este post Link para o post Compartilhar em outros sites
Roberto Fagundes 40 Denunciar post Postado Novembro 6, 2013 Tenta fazer esta processo com uma imagem jpg ou bmp Compartilhar este post Link para o post Compartilhar em outros sites
Jore 0 Denunciar post Postado Novembro 6, 2013 Dá o mesmo erro ... Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Novembro 6, 2013 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
Jore 0 Denunciar post Postado Novembro 6, 2013 Olá Chrnos, O erro é este da imagem: 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
Chrnos 30 Denunciar post Postado Novembro 6, 2013 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
Jore 0 Denunciar post Postado Novembro 6, 2013 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
Chrnos 30 Denunciar post Postado Novembro 6, 2013 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
Jore 0 Denunciar post Postado Novembro 6, 2013 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
Roberto Fagundes 40 Denunciar post Postado Novembro 6, 2013 O diretório de erro da sua imagem esta diferente do diretório que você escreveu. Será que tem alguma coisa que não esta batendo nesse diretório ai ? Compartilhar este post Link para o post Compartilhar em outros sites
Chrnos 30 Denunciar post Postado Novembro 6, 2013 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
Jore 0 Denunciar post Postado Novembro 7, 2013 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