Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Search Today's Posts Mark Forums Read

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 23/09/2013
danielmj's Avatar
danielmj danielmj is offline
Miembro
 
Join Date: Jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Conflicto con archivos

Hola, estoy teniendo un problema a la hora de seleccionar un archivo en la aplicacion, me explico. Si pulso el boton "x" para abrir el explorador y seleccionar un archivo, lo selecciono y una vez tengo el nombre del archivo en un edit, vuelvo a repetir los mismos pasos pero con otro archivo y seguidamente vuelvo a seleccionar el archivo anterior (con lo que el edit vuelve a mostrar el archivo seleccionado la primera vez), la aplicacion me devuelve el mensaje "el archivo ya esta en uso por otra aplicacion".

En resumen..

1º pulso el boton abrir
2º selecciono un archivo "x"
3º en un edit aparece el nombre del archivo "x"
4º pulso el boton abrir
5º selecciono un archivo "y"
6º en el mismo edit aparece el nombre del archivo "y" borrando el nombre del anterior
7º vuelvo a pulsar el boton abrir
8º selecciono el mismo archivo "x"
9º la aplicacion muestra el mensaje "archivo en uso..." y no me deja seleccionarlo, cuando en realidad el ultimo archivo fue el "y"

¿Existe alguna forma o metodo de quitar de memoria un archivo previamente seleccionado al actual?

Esto digamos que se repite una y otra vez, por ejemplo si selecciono un nuevo archivo llamado "z", y luego quiero seleccionar el "x" o el "y", no me deja por que supuestamente ambos estan siendo usados.

Espero que alguien tenga alguna idea y pueda ayudarme. Gracias y un saludo.
Reply With Quote
  #2  
Old 23/09/2013
oscarac's Avatar
[oscarac] oscarac is offline
Miembro Premium
 
Join Date: Sep 2006
Location: Lima - Perú
Posts: 2,015
Poder: 22
oscarac Va por buen camino
puedes colocar el codigo?
lo abres para editarlo?, leerlo? grabarlo?
__________________
Dulce Regalo que Satanas manda para mi.....
Reply With Quote
  #3  
Old 23/09/2013
danielmj's Avatar
danielmj danielmj is offline
Miembro
 
Join Date: Jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
El código sería este:

Código Delphi [-]
procedure TPrincipal.SpeedButton1Click(Sender: TObject);
var
  hdl: THandle;
  FileData: TWin32FindData;
  Size:int64;

begin
  if FileOpen.Execute then
  Size := 0;
  hdl := FindFirstFile(PChar(FileOpen.FileName), FileData);
  if (hdl <> INVALID_HANDLE_VALUE) then
  begin
    Int64Rec(Size).Lo := FileData.nFileSizeLow;
    Int64Rec(Size).Hi := FileData.nFileSizeHigh;
  end;

  ConvertFileSizes(Size);
  labEdit1.Text:= FileOpen.FileName;
//  label4.Caption:= extractFileName(fileOpen.FileName);
end;


El archivo se abre (desde otro proceso) para lectura. La verdad es que no consigo avanzar mas por culpa de esto y me tiene
Gracias y un saludo.
Reply With Quote
  #4  
Old 25/09/2013
Neftali [Germán.Estévez]'s Avatar
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Join Date: Jul 2004
Location: Barcelona - España
Posts: 19,449
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Según el código que has puesto no parece haber error.
Salvo en la función ConvertFileSizes (que he tenido que desactivar).

¿Puedes ejecutar paso a paso y ver dónde se produce el error?
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Reply With Quote
  #5  
Old 25/09/2013
Neeruu Neeruu is offline
Miembro
 
Join Date: Oct 2007
Posts: 513
Poder: 19
Neeruu Va por buen camino
Para mi que estas abriendo el archivo...

1 - Prueba a seleccionar el archivo "X".
2 - Volver a seleccionar el archivo "X".

Si estoy en lo cierto el error se producirá...
Si es así deberías ver si no debes hacer un close al archivo antes de salir del procedimiento.


P/D: Probé tu código y a excepción de ConvertFileSizes(Size) que supongo es una función propia no genera ningún Error...


Saludos...
__________________
Saluda Atte Neeruu!!! :)
Reply With Quote
  #6  
Old 25/09/2013
danielmj's Avatar
danielmj danielmj is offline
Miembro
 
Join Date: Jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Hola, si es cierto abro 2 veces el archivo "X" pero entre estas dos veces abro el archivo "Y", es decir, la secuencia seria esta: "x" --> "y" --> "x" con lo cual al abrir "y" no deberia darme error al intentar abrir "x" ¿no? con tanta x e y es un lio, espero estar explicandome bien.

saludos y gracias.
Reply With Quote
  #7  
Old 26/09/2013
ecfisa's Avatar
ecfisa ecfisa is offline
Moderador
 
Join Date: Dec 2005
Location: Tres Arroyos, Argentina
Posts: 10,508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Quote:
Originally Posted by danielmj View Post
Hola, si es cierto abro 2 veces el archivo "X" pero entre estas dos veces abro el archivo "Y", es decir, la secuencia seria esta: "x" --> "y" --> "x" con lo cual al abrir "y" no deberia darme error al intentar abrir "x" ¿no? con tanta x e y es un lio, espero estar explicandome bien.

saludos y gracias.
Hola danielmj.

Tál como te mencionó Neftalí el código que se visualiza no tendría que dar ese error.

Si limitas el código a:
Código Delphi [-]
...
var
  hdl: THandle;
  FileData: TWin32FindData;
  Size:int64;
begin
  with OpenDialog1 do
    if Execute then
    begin
      Size := 0;
      hdl  := FindFirstFile(PChar(FileName), FileData);
      if (hdl <> INVALID_HANDLE_VALUE) then
      begin
        Int64Rec(Size).Lo := FileData.nFileSizeLow;
        Int64Rec(Size).Hi := FileData.nFileSizeHigh;
      end;
      LabeledEdit1.Text := FileName;
    end;
end;
verás que te cansas de seleccionar alternadamente dos archivos sin que se produzca la situación que mencionas.

También coincido con Neeruu que pareciera que en otro punto del programa estas abriendo el archivo seleccionado sin cerrarlo. ¿ En la función ConvertFileSizes tal vez ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Reply With Quote
  #8  
Old 26/09/2013
mamcx's Avatar
mamcx mamcx is offline
Moderador
 
Join Date: Sep 2004
Location: Medellín - Colombia
Posts: 3,941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Eso es API de windows. Revisa:

http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

Estas obteniendo un handle y no lo estas liberando.
__________________
El malabarista.
Reply With Quote
  #9  
Old 26/09/2013
danielmj's Avatar
danielmj danielmj is offline
Miembro
 
Join Date: Jun 2011
Posts: 383
Poder: 16
danielmj Va por buen camino
Buenas a todos, ya lo he arreglado! me ha costao verlo macho!! mamcx con el handle cerrado seguí fallando, lo que pasaba es que en otro procedimiento hacía una llamada al mismo archivo, pero de otro modo, entonces claro por un lado estaba cerrado pero por otro seguí abierto y este estado ultimo es el que llevaba la voz cantante.

en ese otro procedimiento tenía estas lineas:

Código Delphi [-]
FileQ := TFileStream.Create( FileName, fmOpenRead);
label12.Caption:= IntToStr(FileQ.Size);

y por eso fallaba, tan solo tenía que poner "FileQ.Destroy" y ya va pegando tiros!!

Gracias a todos por vuestros aportes! ahora a ver que nueva pega sale.
Saludos.
Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Conflicto de puertos con Indy davidrgh Internet 0 16/01/2012 14:06
Conflicto al Imprimir ¿? Alejandro73 Impresión 0 01/02/2008 20:01
Conflicto con SQL Dialect BDE rikr2rv Firebird e Interbase 2 28/08/2007 23:58
QuickReport: Conflicto de versiones Mauro.NET Impresión 2 08/09/2005 14:13
Conflicto con Session1. danytorres Varios 10 30/06/2005 23:33


All times are GMT +2. The time now is 14:03.


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