PDA

Ver la Versión Completa : Cómo averiguar la extensión del archivo elegido en un "TOpenFileDialog"


Comandant
31-08-2012, 23:36:29
Hola a todos tengo una pregunta simple pero que no lo he podido resolver y es como saber la extension del archivo de imagen que eligio un usuario desde un topendialog? ya que quiero asiganarlas a unas variables y para que se me entienda mejor dejo algo de codigo.

var
Jpg: TJPEGImage;
bmp: TBitMap;
begin

with TOpenDialog.Create(nil) do
try
Filter:= 'Archivos de imagen(*.bmp;*.ico;*.jpg)|*.bmp;*.ico;*.jpg';
if Execute then
begin
Fondo:= TPicture.Create;
try
if Filename.extension? = jpg then
Jpg:= TJPEGImage.Create
else
bmp:= TBitMap.Create;

Comandant
31-08-2012, 23:41:06
Como verán necesito saber la extensión o el tipo de archivo para aplicarle algunas funciones según sea la extensión para luego de todo esto darme un resultado(ya aplicada la funcion) y asignarla a fondo que es un tpicture; Desde ya Gracias

dec
01-09-2012, 00:19:27
Hola,

Prueba con la función "ExtractFileExt" de la unidad "SysUtils" (http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.ExtractFileExt).

Casimiro Notevi
01-09-2012, 00:20:31
ExtractFileExt (http://www.delphibasics.co.uk/RTL.asp?Name=ExtractFileExt)

* Se me adelantó dec.

Comandant
01-09-2012, 00:34:55
Gg me las tuve que ingeniar pero ya lo cambio por las dudas dejo publicado mi code para que lo ven nada mas.


var
imagen: TPicture;
Jpg: TJPEGImage;
bmp: TBitMap;
begin

with TOpenDialog.Create(nil) do
try
Filter:= 'Archivos de imagen(*.bmp;*.ico;*.jpg)|*.bmp;*.ico;*.jpg';
if Execute then
begin
Fondo:= TPicture.Create;
try
imagen:= TPicture.Create;
imagen.LoadFromFile(FileName);
if imagen.graphic is tjpegImage then
Jpg:= TJPEGImage.Create
else
if imagen.graphic is tbitmap then
bmp:= TBitMap.Create;


Obviamente gracias manes y saludos.

Casimiro Notevi
01-09-2012, 00:56:25
Vale, pero no habías preguntado cómo saber el tipo, sino la extensión.
Tu imagen puede ser un .jpg y sin embargo alguien lo ha podido renombrar como .txt (aunque sea para fastidiar).