• Domingo 22 de Diciembre de 2024, 13:03

Autor Tema:  Copiar Foto Activa A Carpeta  (Leído 3244 veces)

dreamer

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Copiar Foto Activa A Carpeta
« en: Jueves 1 de Septiembre de 2005, 18:13 »
0
Compañeros(as)

Les cuento que aun continuo con el problema de copiar la foto a una carpeta:

Tengo dos variables DestinoFoto y RutaFoto, para el caso de la primera variable la linea de codigo (DestinoFoto)

DestinoFoto = App.Path & "\Socios"

y para el caso de la segunda la saco del cuadro de dialogo:

RutaFoto = CommonDialog1.FileName

hasta ahora todo bien pero cuando hago esto para copiar a la foto
FileCopy RutaFoto, DestinoFoto

me arroja un error 78 algo que esta mal la ruta, y esta todo bien yo supongo y segun lo que he investigado es porque tengo la foto cargada en el formulario y se esta ocupando.

ENTONCES cual seria la solucion, como hago para copiar la foto... encontre una funcion en este mismo foro que se supone que lo hace:

Private Function Copiar(ByVal RutaFoto As String, ByVal DestinoFoto As String) As Boolean
Dim intO As Integer, intD As Integer, byt1() As Byte
On Error GoTo Error_Copiar
intO = FreeFile
Open RutaFoto For Binary As #intO
' En el caso de que el fichero no fuera muy grande.
ReDim byt1(1 To LOF(intO))
'Si el fichero es demasiado grande, deberás implementar un buffer dimensionando 'byt1' al tamaño que tu veas y haciendo un bucle hasta que llegues a la longitud del fichero.
intD = FreeFile
Open DestinoFoto For Binary As #intD
Get #intO, , byt1
Put #intD, , byt1
Copiar = True
Salir_Copiar:
On Error Resume Next
Close #intO
Close #intD
Exit Function
Error_Copiar:
MsgBox Err.Description
Resume Salir_Copiar
End Function

pero me arroja el mismo error: Error de acceso a ruta o archivo...... es el mismo error que aparece cuando hago el filecopy

espero haberme explicado bien ya que me esta desesperando no poder solucionar esto,  si alguno(a) de ustedes tenga algun codigo, alguna idea, o un ejemplo de copiar una foto a una carpeta, pero con la foto mostrandola osea ocupandola activa.

De antemano se agradece

Saludos desde Viña del, Mar CHILE

DrakerDG

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
    • http://drakerdg.xbot.es/wordpress/
Re: Copiar Foto Activa A Carpeta
« Respuesta #1 en: Jueves 1 de Septiembre de 2005, 20:39 »
0
<_< Antes de abrir otra discusión del mismo tema revisa bien los post escritos en tu primera discusión.

Discusión Anterior: "Copiar Foto A Carpeta"

En este link hay un archivo adjunto "FileSystem.exe" el cual es un ejemplo que funciona y que ocupe parte de mi tiempo para desarrollarlo.  Ya lo probaste?
También está la explicación sacada del help de VB sobre el código utilizado.  Como también un ejemplo escrito, que hace lo que necesitas en seis líneas.

Si aún no has revisado este recurso, hazlo pues tiene cosas que te pueden servir.
 <_<  :no:
Saludos desde Guatemala, C. A.
Electrobotics

dreamer

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Copiar Foto Activa A Carpeta
« Respuesta #2 en: Jueves 1 de Septiembre de 2005, 22:32 »
0
revise la aplicacion que me enviaste pero no me resulta, la verdad es que nose muy como copiar una foto al parecer te copia archivos txt en fin

He intentado con el codigo que me enviaste este:

Dim ArchivoObj As Variant

DestinoFoto = App.Path & "\Socios"
Set ArchivoObj = CreateObject("Scripting.FileSystemObject") 'Crea un objeto tipo FileSystemObject
ArchivoObj.CopyFile RutaFoto, DestinoFoto 'Copia


Pero al hacer correr la aplicacion me da este error

Error 70 en tiempo de ejecucion

permiso denegado


Creoo que es porque tengo mostrando la foto en el formulario, te cuento que la ruta de la foto (RutaFoto) la saca a traves del cuadro de dialogo

RutaFoto = CommonDialog1.FileName


Bueno sabes nose me ocurre nada, llevo como 5 horas en lo mismo  he estado hace rato tratando de copiar la foto a la carpeta, siempre mostrando la foto en el formulario.

Bueno gracias por la ayuda

Seguiremos intentando

DrakerDG

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
    • http://drakerdg.xbot.es/wordpress/
Re: Copiar Foto Activa A Carpeta
« Respuesta #3 en: Viernes 2 de Septiembre de 2005, 02:26 »
0
:think: Ok, te envío una versión que solo trabaja con imágenes, y te explico como funciona:

Corre el programa y en la parte donde aparecen carpetas, selecciona una donde sepas que hay una imagen del tipo JPG.  En el cuadro de a la par aparecen, si los hay archivos tipo JPG, haces click en cualquiera y automáticamente te aparece la imagen en un cuadrito situado en la esquina superior de tu izquierda, a la derecha aparece el nombre del archivo en una etiqueta y abajo de esta en un cuadro de texto.   Cambia el nombre del cuadro de texto y/o cambia la carpeta o destino donde lo quieras copiar y listo, incluso puedes crear una nueva carpeta (botón: nueva carpeta), por ultimo solo presionas el botón de "copiar imagen" y eso es todo.


De ser posible envíame el código que actualmente te da el problema, para así poder revisarlo y ver ese error que comentas.  

Tómalo con calma, hay momentos en que la mente se tupe y por mas que busque uno la solución es difícil. :suerte:

Código: Text
  1.  
  2. NOTA:  Necesito saber que sistema operativo utilizas, pues ocurre lo siguiente, la operación de copiar un archivo en tu disco duro, desde un código (script), para unos firewalls y sistemas de seguridad ajenos o propios del sistema, es tomado como una operación de riesgo moderado de seguridad, que dependiendo de como configures tú o tus programas de seguridad, pueden o no permitirle a una aplicación o código que realicé esta operación.  En algunos casos (como el mío), en el primer intento de realizar una copia, mi sistema de seguridad me preguntó si lo permitía.  Si en caso contrario se le indica a uno de estos programas que no lo permita, solo se puede cambiar este bloqueo desde la consola de configuración que el sistema de seguridad tenga.  Revisa esto también, pues puede que sea la causa del error que mencionas.
  3.  
  4.  
  5.  

Revisa el archivo adjunto (es otra versión).
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Saludos desde Guatemala, C. A.
Electrobotics

dreamer

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Copiar Foto Activa A Carpeta
« Respuesta #4 en: Viernes 2 de Septiembre de 2005, 16:15 »
0
Hola DrakerDG.

Primero que todo gracias por tu interes en ayudarme, te cuento que con el ejemplo que me enviaste resulta perfectamente pero jejeje siempre hay un pero necesito acomodar tu codigo del ejemplo a mi aplicacion y hay varias lineas de codigo que no entiendo me gustaria saber si puedes explicarme ciertas lineas de codigo.

Por el momento estoy intentando modificarlas yo mismo segun mis requerimientos.

Te aviso cualquier cosa.

Nuevamente te agradesco

dreamer

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Copiar Foto Activa A Carpeta
« Respuesta #5 en: Viernes 2 de Septiembre de 2005, 18:29 »
0
haber no resulta algo en el boton copiar te explico lo que hice puse una caja de texto y un control label con los mismos nombres que tienes en tu codigo (Label6 y txtNew.)

Para el label6 le asigne el CommonDialog1.FileName , se supone que es la ruta origen osea asi

Label6 = CommonDialog1.FileName  

Para  la caja de texto asigne la ruta de la carpeta donde quedara instalada la aplicacion osea ruta destino lo hice asi:

txtNew = App.Path & "\Socios"

espero que hasta aqui me entiendas bien.

Ahora se vienen los problemas en el codigo del boton copiar que tu tienes me pasa lo siguiente:

Tu Codigo y mis modificaciones:

Dim a As Variant
Dim sFphX As String

If ((Trim(txtNew.Text) & "a") <> "a") And _
    (Mid(Trim(LCase(txtNew.Text)), Len(Trim(txtNew.Text)) - 3, 4) = ".jpg") Then

   
    sFphX = MPathX(CommonDialog1.FileName) & txtNew.Text
    On Error GoTo ErrorX
    fS.CopyFile Label6.Tag, sFphX
    'File2.Refresh
    MsgBox "Archivo copiado en: " & sFphX
End If
Exit Sub
ErrorX:
MsgBox "No se pudo copiar el archivo", vbCritical, Error

Te cuento que en el primer If se sale automaticamente el if((Trim(txtNew....

No entiendo porque y en esta linea

sFphX = MPathX(CommonDialog1.FileName) & txtNew.Text

nose si me funcionara ya que yo ocupo el CommonDialog1.FileName ya que hasta ahora nose si va a quedar en memoria la ruta o lo otro seria ocupar el label6 donde tiene la ruta origen.

Tambien copie la funcion:

Public Function MPathX(ByVal sPhX As String) As String
Dim sPhY As String
sPhY = sPhX
If Mid(sPhY, Len(sPhY), 1) <> "\" Then
    sPhY = sPhY & "\"
End If
MPathX = sPhY

End Function

nose tampoco si me funcionara ya que se me sale del if bueno espero que puedas seguir ayudando.

Nuevamente mil gracias por tu tiempo y paciencia.

DrakerDG

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
    • http://drakerdg.xbot.es/wordpress/
Re: Copiar Foto Activa A Carpeta
« Respuesta #6 en: Viernes 2 de Septiembre de 2005, 23:41 »
0
:comp: Te explico el la estructura if siguiente:

Código: Text
  1.  
  2. If ((Trim(txtNew.Text) & &#34;a&#34;) &#60;&#62; &#34;a&#34;) And _
  3. (Mid(Trim(LCase(txtNew.Text)), Len(Trim(txtNew.Text)) - 3, 4) = &#34;.jpg&#34;) Then
  4. On Error GoTo ErrorX
  5. fS.CopyFile Label6.Tag, sFphX
  6. 'File2.Refresh
  7. MsgBox &#34;Archivo copiado en: &#34; & sFphX
  8. End If
  9.  
  10.  
  11.  

txtNew.Text es un string, específicamente el nombre de un archivo con todo y su path, la función Trim() los espacios en blanco del inicio y/o final de un string, que para el caso de un path no sirven de nada.  Seguido la condición ((Trim(txtNew.Text) & "a") <> "a", determina si realmente txtNew.Text no es una cadena vacía, pues si lo fuera "a" = "a".  Por medio del AND exigimos que a parte de no ser cadena vacía la extensión del archivo sea JPG.  La función Mid(,,) nos extrae los últimos cuatro caracteres y los compara con ".jpg".

Si el texto de txtNew.Text cumple con estas dos condiciones, por ejemplo la ruta siguiente:

"C:\Mi carpeta\Mi imagen.jpg"

Esta no es una cadena vacía y los últimos cuatro caracteres son ".jpg".  Por lo tanto entra al IF.

La sentencia On Error GoTo ErrorX es para controlar si existe algún error durante el proceso de copia.  De haber uno se va a la etiqueta ErrorX:.   De lo contrario continua a la sentencia siguiente, donde utiliza a fS para realizar la copia por medio del método CopyFile del cual los argumentos son el archivo origen seguido del archivo destino.

Luego actualiza el cuadro File2 por medio de la sentencia File2.Refresh.  La siguiente sentencia despliega un cuadro de texto por medio de Msgbox y listo.  Veo que desactivaste la sentencia que actualiza el cuadro de File2.  Esta acción actualiza el cuadro, es decir que muestra el nuevo archivo copiado.

MPathX

Código: Text
  1.  
  2. Public Function MPathX(ByVal sPhX As String) As String
  3. Dim sPhY As String
  4. sPhY = sPhX
  5. If Mid(sPhY, Len(sPhY), 1) &#60;&#62; &#34;&#092;&#34; Then
  6. sPhY = sPhY & &#34;&#092;&#34;
  7. End If
  8. MPathX = sPhY
  9.  
  10. End Function
  11.  
  12.  
  13.  

La función MPathX solo es de verificación, para que siempre él ultimo caracter del path sea un slash invertido "\", si la usas con la propiedad CommonDialog1.FileName, te da un error, puesto que esta función es solo para paths (rutas) sin el nombre del archivo. Es decir

Si MiPath es una variable tipo string y le asignamos el path determinado:

MiPath = "C:\Mis documentos\Mis imagenes"

Este path no tiene el slash invertido al final, en cambio al utilizar la función MPathX queda lo siguiente:

MiPath = MPathX("C:\Mis documentos\Mis imagenes")

Por lo que MiPath es ahora igual a:  "C:\Mis documentos\Mis imagenes\"

Para ver cuales son los caracteres que tiene la propiedad CommonDialog1.FileName escribe una sentencia con el procedimiento Msgbox de este manera:

Msgbox CommonDialog1.FileName

Esta desplegará una ventana con el valor de CommonDialog1.FileName.

De todos modos te envío otra versión del código donde empleo el CommonDialog

 :suerte:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Saludos desde Guatemala, C. A.
Electrobotics

dreamer

  • Miembro activo
  • **
  • Mensajes: 34
    • Ver Perfil
Re: Copiar Foto Activa A Carpeta
« Respuesta #7 en: Martes 6 de Septiembre de 2005, 22:41 »
0
hola DrakerDG

Ante todo gracias por la ayuda me ha servido mucho, te cuento que al final ya pude copiar la foto a la carpeta gracias a tu ayuda, para eso modifique elimine y me quebre la cabeza unos dias.

If ((Trim(txtNew.Text) & "a") <> "a") And _
    (Mid(Trim(LCase(txtNew.Text)), Len(Trim(txtNew.Text)) - 3, 4) = ".jpg") Then
    'sFphX = MPathX(Dir2.Path) & txtNew.Text
    sFphX = txtNew.Text
    On Error GoTo ErrorX
    fS.CopyFile Label6.Tag, sFphX
    'File2.Refresh
    'MsgBox "Archivo Copiado en: " & sFphX
End If

si te das cuenta deje varias lineas en comentario ya que no me la pude tratando de acomodar el codigo, pero a pesar de que resulto todo biern hasta ahora aun me quedan algunas dudas algunas son estas.

sFphX = MPathX(Dir2.Path) & txtNew.Text

que trataste de hacer porque lo que es yo tome el camino mas corto e hice esto:

    sFphX = txtNew.Text

y ademas borre el ojeto del formulario ya que no tenia ninguna referencia hacia él, ademas de comentar la linea del file2.refresh y la del msgbox ya que no queria mostrar la ruta donde fue guardad la foto.

otra duda que me quedo es ¿porque tenias dos controles Image?
al al parecer era para ajustar el tamaño de la foto al control, pero hay una propiedad del este control que lo hace automaticamente me parece que es esta Stretch

bueno no me queda nada mas que agradecerte por el tiempo invertido que tuviste en ayudarme, se agradece.

saludos

DREAMER

DrakerDG

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
    • http://drakerdg.xbot.es/wordpress/
Re: Copiar Foto Activa A Carpeta
« Respuesta #8 en: Miércoles 7 de Septiembre de 2005, 00:05 »
0
:comp: Dreamer:
Ante todo fue un placer.

Referente a tus dudas residuales, en el caso de la función MPathX(), es solo para manejo de rutas sin el nombre del archivo, como por ejemplo:

Código: Text
  1.  
  2. C:&#092;ProgDOS&#092;X Download&#092;Software
  3.  
  4. o
  5.  
  6. C:&#092;ProgDos&#092;Mis documentos&#092;Electronica&#092;
  7.  
  8.  
  9.  

Que al ingresarla en la función, le agrega un \ al final si no lo tiene, y si ya lo tiene, simplemente no hace nada, es decir:

Código: Text
  1.  
  2.  
  3. MPathX(&#34;C:&#092;ProgDOS&#092;X Download&#092;Software&#34;)
  4.  
  5. Resulta: C:&#092;ProgDOS&#092;X Download&#092;Software&#092;
  6.  
  7. y
  8.  
  9. MPathX(&#34;C:&#092;ProgDos&#092;Mis documentos&#092;Electronica&#092;&#34;)
  10.  
  11. Resulta: C:&#092;ProgDos&#092;Mis documentos&#092;Electronica&#092;
  12.  
  13.  
  14.  

Respecto los controles de imagen, que por cierto son PictureBox (no Image), están para ajustar el tamaño de la imagen y este mantenga simetría con el tamaño original.   De hecho el control Image es el que tiene la propiedad strech, pero esta no conserva la proporción respecto al tamaño original si no que puede que la estire hacia los lados o hacia arriba y abajo.  

Continúa descubriendo y aprendiendo sobre programación

 :suerte:
Saludos desde Guatemala, C. A.
Electrobotics