Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   determinar el tamaño de una fichero (https://www.clubdelphi.com/foros/showthread.php?t=76631)

lmpadron 14-11-2011 18:39:40

determinar el tamaño de una fichero
 
Hola amigos

tengo una BD en MySQL y necesito que mi soft cargue una imagen, eso lo logre hacer bien, sin embargo el MySQL me da un error diciendome que el maximo que acepta de envio es 512 kb
Código SQL [-]
max_allowed_packet
como no puedo cambiar el MySQL necesito que al momento de cargar la imagen pueda determinar si es mayor o no de ese tamaño para evitar un error de SQL, en estos momentos uso un OpenDialog para cargar la imagen.

La pregunta en concreto es:

Como puedo determinar el tamaño de una fichero X usando el OpenDialog.

Gracias de antemano

Chris 14-11-2011 18:45:49

Utiliza la función de Sizeof de la clase TFileStream. Ejemplo:
Código Delphi [-]
var
    Archivo: TFileStream;
begin
if OpenDialog1.Execute then
    try
        Archivo := TFileStream.Create(OpenDialog1.Filename, {segundo parámetro*});
        Archivo.Sizeof // <-- esta función te da el tamaño en bytes del archivo elegido.

        // ... guardar el archivo en la DB si el tamaño es adecuado.
    finally
        Archivo.Free;
    end;

* No recuerdo el nombre del segundo parámetro de constructor. Sé que es para determinar el modo de acceso al archivo. Consulta la ayuda de Delphi al respecto.

Saludos,
Chris

lmpadron 14-11-2011 18:49:43

Cita:

Empezado por Chris (Mensaje 418474)
Utiliza la función de Sizeof de la clase TFileStream.

ok jajja Gracias mi amigo pero primero tengo que ver como convierto tu codigo c++ jejeje pero igual es una idea excelente voy a ver si lo logro !!! gracias

ecfisa 14-11-2011 19:06:34

Hola.

Otra opción:
Código:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSearchRec sr;
  if(OpenDialog1->Execute()){
    FindFirst(OpenDialog1->FileName,faArchive, sr);
    ShowMessage(OpenDialog1->FileName+" Size:"+IntToStr(sr.Size /1024)+ "Kb.");
  }
}

Y creo que la traducción de la sugerida por Chris sería:
Código:

void __fastcall TForm1::Button2Click(TObject *Sender)
{
 TFileStream *FStream;
 if(OpenDialog1->Execute()) {
  FStream = new TFileStream(OpenDialog1->FileName, fmOpenRead);
  ShowMessage(OpenDialog1->FileName+" Size:"+IntToStr(FStream->Size /1024)+ "Kb.");
  delete FStream;
 }
}

Un saludo.

lmpadron 14-11-2011 20:37:02

Gracias amigos

Antes de ver el post de ecfisa me entretuve en tratar de llevar de delphi a c++ el del amigo Chris y me quedo algo asi

Código:

TFileStream *File = new TFileStream(OpenDialog1->FileName, fmOpenRead);
    if (File->Size >= 600000)
    {
                MIS OPCIONES 
                delete File;
    }

Gracias por su ayuda

escafandra 14-11-2011 23:04:27

También puedes ojear este tema en C++: Obtener tamaño fichero grande. ;)


Saludos.


La franja horaria es GMT +2. Ahora son las 09:45:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi