In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Imagen Valida
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Imagen Valida
Como puedo saber si una imagen esta cargada para usarla con
TPicture():LoadFromFile( cFile ).
Explico:
Tengo un programa en el cual me mandan la imagen y la depositan en una
carpeta "imagenes" (por ejemplo), , pero en algunas impresiones esta imagen
sale, y en otras no, por lo que veo que requiero saber si ya la imagen ha
sido copiada pro completo en dicha carpeta, pero aun asi sigo teniendo ese
detalle.
puse igual:
Repeat
ProcessMessages()
Until ( file(AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg")) .And. ;
filesize(AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg")) >
20000 )
Esto por que las imagenes son de 24, 25 o 26 kb, pero..., siguen sin salir
en algunos casos.
Alguien puede dar alguna idea? todas son aceptadas, para probarlas.
Gracias de antemano.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
TPicture():LoadFromFile( cFile ).
Explico:
Tengo un programa en el cual me mandan la imagen y la depositan en una
carpeta "imagenes" (por ejemplo), , pero en algunas impresiones esta imagen
sale, y en otras no, por lo que veo que requiero saber si ya la imagen ha
sido copiada pro completo en dicha carpeta, pero aun asi sigo teniendo ese
detalle.
puse igual:
Repeat
ProcessMessages()
Until ( file(AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg")) .And. ;
filesize(AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg")) >
20000 )
Esto por que las imagenes son de 24, 25 o 26 kb, pero..., siguen sin salir
en algunos casos.
Alguien puede dar alguna idea? todas son aceptadas, para probarlas.
Gracias de antemano.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Imagen Valida
Ramón,
si no recuerdo mal, las imágenes JPEG empiezan con "FFD8" y terminan con
"FFD9", así que para saber si el archivo está completo sólo necesitas
comprobar los dos últimos bytes.
REPEAT
ProcessMessages()
UNTIL IsValidJPEG( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
FUNCTION IsValidJPEG( cFilename )
LOCAL lOk := .F.
LOCAL cFile := Memoread( cFilename )
IF Asc( Right( cFile, 2 ) ) == 0xFF .AND. Asc( Right( cFile, 1 ) ) == 0xD9
lOk := .T.
ENDIF
RETURN lOk
Un apunte: yo no usaría ese bucle REPEAT...UNTIL, mejor pondría un TTimer
cada x segundos y desde ahí haría la comprobación.
Saludos,
José Lalín
si no recuerdo mal, las imágenes JPEG empiezan con "FFD8" y terminan con
"FFD9", así que para saber si el archivo está completo sólo necesitas
comprobar los dos últimos bytes.
REPEAT
ProcessMessages()
UNTIL IsValidJPEG( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
FUNCTION IsValidJPEG( cFilename )
LOCAL lOk := .F.
LOCAL cFile := Memoread( cFilename )
IF Asc( Right( cFile, 2 ) ) == 0xFF .AND. Asc( Right( cFile, 1 ) ) == 0xD9
lOk := .T.
ENDIF
RETURN lOk
Un apunte: yo no usaría ese bucle REPEAT...UNTIL, mejor pondría un TTimer
cada x segundos y desde ahí haría la comprobación.
Saludos,
José Lalín
Imagen Valida
El 26/07/2011 17:09, José Lalín escribió:
> Ramón,
>
> si no recuerdo mal, las imágenes JPEG empiezan con "FFD8" y terminan con
> "FFD9", así que para saber si el archivo está completo sólo necesitas
> comprobar los dos últimos bytes.
>
> REPEAT
> ProcessMessages()
> UNTIL IsValidJPEG( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
>
> FUNCTION IsValidJPEG( cFilename )
>
> LOCAL lOk := .F.
> LOCAL cFile := Memoread( cFilename )
>
> IF Asc( Right( cFile, 2 ) ) == 0xFF .AND. Asc( Right( cFile, 1 ) ) == 0xD9
> lOk := .T.
> ENDIF
>
> RETURN lOk
>
> Un apunte: yo no usaría ese bucle REPEAT...UNTIL, mejor pondría un
> TTimer cada x segundos y desde ahí haría la comprobación.
>
> Saludos,
> José Lalín
>
una idea seria, suponiendo que quien pone la imagen es otro programa,
que grabara 2 archivos: foto.jpg y foto
la existencia del segundo indica que el primero ya se grabo por completo
> Ramón,
>
> si no recuerdo mal, las imágenes JPEG empiezan con "FFD8" y terminan con
> "FFD9", así que para saber si el archivo está completo sólo necesitas
> comprobar los dos últimos bytes.
>
> REPEAT
> ProcessMessages()
> UNTIL IsValidJPEG( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
>
> FUNCTION IsValidJPEG( cFilename )
>
> LOCAL lOk := .F.
> LOCAL cFile := Memoread( cFilename )
>
> IF Asc( Right( cFile, 2 ) ) == 0xFF .AND. Asc( Right( cFile, 1 ) ) == 0xD9
> lOk := .T.
> ENDIF
>
> RETURN lOk
>
> Un apunte: yo no usaría ese bucle REPEAT...UNTIL, mejor pondría un
> TTimer cada x segundos y desde ahí haría la comprobación.
>
> Saludos,
> José Lalín
>
una idea seria, suponiendo que quien pone la imagen es otro programa,
que grabara 2 archivos: foto.jpg y foto
la existencia del segundo indica que el primero ya se grabo por completo
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Imagen Valida
Gracias, sigue igual, el problema es que esos archivos los pone el PAC, por
lo de las fact. elect., si re-imprimo el comprobante si sale, pero ya pasado
unos minutos.
Sigo buscando...
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"José Lalín" escribió en el mensaje de
noticias:4e2f1eec$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramón,
si no recuerdo mal, las imágenes JPEG empiezan con "FFD8" y terminan con
"FFD9", así que para saber si el archivo está completo sólo necesitas
comprobar los dos últimos bytes.
REPEAT
ProcessMessages()
UNTIL IsValidJPEG( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
FUNCTION IsValidJPEG( cFilename )
LOCAL lOk := .F.
LOCAL cFile := Memoread( cFilename )
IF Asc( Right( cFile, 2 ) ) == 0xFF .AND. Asc( Right( cFile, 1 ) ) ==
0xD9
lOk := .T.
ENDIF
RETURN lOk
Un apunte: yo no usaría ese bucle REPEAT...UNTIL, mejor pondría un TTimer
cada x segundos y desde ahí haría la comprobación.
Saludos,
José Lalín
lo de las fact. elect., si re-imprimo el comprobante si sale, pero ya pasado
unos minutos.
Sigo buscando...
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"José Lalín" escribió en el mensaje de
noticias:4e2f1eec$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramón,
si no recuerdo mal, las imágenes JPEG empiezan con "FFD8" y terminan con
"FFD9", así que para saber si el archivo está completo sólo necesitas
comprobar los dos últimos bytes.
REPEAT
ProcessMessages()
UNTIL IsValidJPEG( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
FUNCTION IsValidJPEG( cFilename )
LOCAL lOk := .F.
LOCAL cFile := Memoread( cFilename )
IF Asc( Right( cFile, 2 ) ) == 0xFF .AND. Asc( Right( cFile, 1 ) ) ==
0xD9
lOk := .T.
ENDIF
RETURN lOk
Un apunte: yo no usaría ese bucle REPEAT...UNTIL, mejor pondría un TTimer
cada x segundos y desde ahí haría la comprobación.
Saludos,
José Lalín
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Imagen Valida
Ramón,
prueba así:
REPEAT
ProcessMessages()
Sleep( 500 )
UNTIL IsFileLocked( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
IF IsValidJPeg( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
...
ENDIF
#pragma BEGINDUMP
#include <windows.h>
#include <xailer.h>
HB_FUNC( ISFILELOCKED )
{
HANDLE hFile = CreateFile( hb_parc( 1 ), GENERIC_WRITE, FILE_SHARE_READ
| FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0 );
hb_retl( hFile == INVALID_HANDLE_VALUE );
}
#pragma ENDDUMP
Saludos,
José Lalín
prueba así:
REPEAT
ProcessMessages()
Sleep( 500 )
UNTIL IsFileLocked( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
IF IsValidJPeg( AppData:DIR_CBB + Trim(::cFolioFiscal + ".jpg" ) )
...
ENDIF
#pragma BEGINDUMP
#include <windows.h>
#include <xailer.h>
HB_FUNC( ISFILELOCKED )
{
HANDLE hFile = CreateFile( hb_parc( 1 ), GENERIC_WRITE, FILE_SHARE_READ
| FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0 );
hb_retl( hFile == INVALID_HANDLE_VALUE );
}
#pragma ENDDUMP
Saludos,
José Lalín
Imagen Valida
Ramón,
hay un bug en la función. Usa esta:
#pragma BEGINDUMP
#include <windows.h>
#include <xailer.h>
HB_FUNC( ISFILELOCKED )
{
HANDLE hFile = CreateFile( hb_parc( 1 ), GENERIC_WRITE, FILE_SHARE_READ
| FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0 );
if( hFile != INVALID_HANDLE_VALUE )
CloseHandle( hFile );
hb_retl( hFile == INVALID_HANDLE_VALUE );
}
#pragma ENDDUMP
Saludos,
José Lalín
hay un bug en la función. Usa esta:
#pragma BEGINDUMP
#include <windows.h>
#include <xailer.h>
HB_FUNC( ISFILELOCKED )
{
HANDLE hFile = CreateFile( hb_parc( 1 ), GENERIC_WRITE, FILE_SHARE_READ
| FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0 );
if( hFile != INVALID_HANDLE_VALUE )
CloseHandle( hFile );
hb_retl( hFile == INVALID_HANDLE_VALUE );
}
#pragma ENDDUMP
Saludos,
José Lalín
Imagen Valida
Ramón,
acabo de recordar que tenemos la vieja FOpen():
#include "fileio.ch"
FUNCTION IsFileLocked( cFilename )
LOCAL hFile := FOpen( cFilename, FO_EXCLUSIVE )
LOCAL lLocked := ( FError() == 0 )
IF hFile > 0
FClose( hFile )
ENDIF
RETURN lLocked
Saludos,
José Lalín
acabo de recordar que tenemos la vieja FOpen():
#include "fileio.ch"
FUNCTION IsFileLocked( cFilename )
LOCAL hFile := FOpen( cFilename, FO_EXCLUSIVE )
LOCAL lLocked := ( FError() == 0 )
IF hFile > 0
FClose( hFile )
ENDIF
RETURN lLocked
Saludos,
José Lalín
- xhermita
- Mensajes: 177
- Registrado: Vie Feb 18, 2011 10:05 pm
- Ubicación: Las Palmas de Gran Canaria
- Contactar:
Imagen Valida
De donde sale la REPEAT / UNTIL, la he buscado en xharbour y clipper y
no he dado con ella, y la verdad es que la había echado de menos un par
de veces, por que con el DO WHILE no siempre puedes estructurar bien el
código.
Es solo por curiosidad, por si debería leer algo mas sobre xbase para
que no se me queden cosas como esta atrás.
Un Saludo
Pedro Amaro
no he dado con ella, y la verdad es que la había echado de menos un par
de veces, por que con el DO WHILE no siempre puedes estructurar bien el
código.
Es solo por curiosidad, por si debería leer algo mas sobre xbase para
que no se me queden cosas como esta atrás.
Un Saludo
Pedro Amaro
Pedro Amaro
2PC Service
Xailer / Néfele / MySQL-MariaDB / SQLServer
2PC Service
Xailer / Néfele / MySQL-MariaDB / SQLServer
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Imagen Valida
Es un comando hecho a mano, te paso los comandos:
#command Repeat => While ( .T. )
#command Until <expr> => If ( <expr> ) ;
; Exit ;
; End ;
; End
Saludos. estamos para apoyarnos....
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"Pedro Amaro" escribió en el mensaje de
noticias:4e30500a$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
De donde sale la REPEAT / UNTIL, la he buscado en xharbour y clipper y
no he dado con ella, y la verdad es que la había echado de menos un par
de veces, por que con el DO WHILE no siempre puedes estructurar bien el
código.
Es solo por curiosidad, por si debería leer algo mas sobre xbase para
que no se me queden cosas como esta atrás.
Un Saludo
Pedro Amaro
#command Repeat => While ( .T. )
#command Until <expr> => If ( <expr> ) ;
; Exit ;
; End ;
; End
Saludos. estamos para apoyarnos....
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"Pedro Amaro" escribió en el mensaje de
noticias:4e30500a$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
De donde sale la REPEAT / UNTIL, la he buscado en xharbour y clipper y
no he dado con ella, y la verdad es que la había echado de menos un par
de veces, por que con el DO WHILE no siempre puedes estructurar bien el
código.
Es solo por curiosidad, por si debería leer algo mas sobre xbase para
que no se me queden cosas como esta atrás.
Un Saludo
Pedro Amaro
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Imagen Valida
Gracias, funciono perfecto!!!!
ya estan saliendo mis fact. elect. completas....
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"José Lalín" escribió en el mensaje de
noticias:4e2fc5e5$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramón,
acabo de recordar que tenemos la vieja FOpen():
#include "fileio.ch"
FUNCTION IsFileLocked( cFilename )
LOCAL hFile := FOpen( cFilename, FO_EXCLUSIVE )
LOCAL lLocked := ( FError() == 0 )
IF hFile > 0
FClose( hFile )
ENDIF
RETURN lLocked
Saludos,
José Lalín
ya estan saliendo mis fact. elect. completas....
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"José Lalín" escribió en el mensaje de
noticias:4e2fc5e5$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramón,
acabo de recordar que tenemos la vieja FOpen():
#include "fileio.ch"
FUNCTION IsFileLocked( cFilename )
LOCAL hFile := FOpen( cFilename, FO_EXCLUSIVE )
LOCAL lLocked := ( FError() == 0 )
IF hFile > 0
FClose( hFile )
ENDIF
RETURN lLocked
Saludos,
José Lalín
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Imagen Valida
Ramón,
> Gracias, funciono perfecto!!!!
> ya estan saliendo mis fact. elect. completas....
Ya pagarás unas cervezas
Saludos,
José Lalín
> Gracias, funciono perfecto!!!!
> ya estan saliendo mis fact. elect. completas....
Ya pagarás unas cervezas

Saludos,
José Lalín
-
- Mensajes: 1831
- Registrado: Mar Oct 11, 2005 9:53 am
Imagen Valida
jajjaja
Salud!!
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"José Lalín" escribió en el mensaje de
noticias:4e364dc9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramón,
> Gracias, funciono perfecto!!!!
> ya estan saliendo mis fact. elect. completas....
Ya pagarás unas cervezas
Saludos,
José Lalín
Salud!!
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"José Lalín" escribió en el mensaje de
noticias:4e364dc9$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
Ramón,
> Gracias, funciono perfecto!!!!
> ya estan saliendo mis fact. elect. completas....
Ya pagarás unas cervezas

Saludos,
José Lalín
Ramón Zea
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/
Móvil: 01-993-231-62-29
ramonzea@yahoo.com
zeasoftware@hotmail.com
zeasoft.movil@hotmail.com
http://www.paginasprodigy.com/zeasoftware/