Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-10-2012
islu islu is offline
Miembro
 
Registrado: jun 2003
Posts: 111
Poder: 21
islu Va por buen camino
Copiar un archivo a una tablet, conectada con USB

Hola foro, lo primero es daros un fuerte saludo, hace años que no me conecto, os he ido leyendo, pero los proyectos me han mantenido fuera de Delphi unos años....; hay gente que continua de mis tiempos, otros no estan y como no mucha gente nueva.


Mi problema es el siguiente, resulta que tengo una aplicación en DELPHI 6, la cual ha de copiar un archivo a una tablet con Android; esto ha funcionado un par de años, pues con Android 2.2 ( creo recordar ) y WinXP, la unidad tablet cogía una letra.... por tanto no hay problema. Lo que ocurre ahora, es que hemos actualizado las tablets y los PCs, y ahora la tablet me aparece como "GT-N8000", me aparece una unidad llamada "Phone", si exploro veo las carpetas como si se tratase de una unidad más. Por tanto para copiar debo hacerlo en "Equipo\GT-N8000\Phone\music" o "Equipo\GT-N8000\Phone\DCIM"

Sabe alguien que puedo hacer?

Puedo llamar directamente al copiar archivos de windows ?

GRACIAS!!!!
Responder Con Cita
  #2  
Antiguo 24-10-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
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
Cita:
Empezado por islu Ver Mensaje
...me aparece una unidad llamada "Phone", si exploro veo las carpetas como si se tratase de una unidad más. Por tanto para copiar debo hacerlo en "Equipo\GT-N8000\Phone\music" o "Equipo\GT-N8000\Phone\DCIM"

Sabe alguien que puedo hacer?
¿Si lo haces así te funciona?
¿Es que no me queda claro si lo preguntas o lo has intentado?

¿Desde el explorador puede conectar una unidad de red? (para saberlo y aportar más datos)
__________________
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.
Responder Con Cita
  #3  
Antiguo 24-10-2012
islu islu is offline
Miembro
 
Registrado: jun 2003
Posts: 111
Poder: 21
islu Va por buen camino
Hola, lo primero, por supuesto, es darte las gracias por interesarte.

Te comento, desde el explorador si puedo copiar archivos perfectamente, pero desde mi programa en DELPHI no puedo,he usado varias formas y nada.

Cuando navego por el dispositivo con el explorador, en la barra de direcciones me muestra "Equipo\GT-N8000\Phone\DCIM", si yo copio esa ruta en otro explorador, me lo abre sin problemas ( siempre que el dispositivo este conectado por USB, claro ).

No puedo mapear esa ruta como una unidad de red, en versiones anteriores en el dispositivo, me permitía conectarme como "almacenamiento masivo" y si que asignaba una unidad.

Cuando abro mi PC ( Equipo en W7 ), el terminal me aparece cómo "Dispositivos portatiles",con el nombre "GT-N8000", si le doy en propiedades, me muestra hasta el estado de la bateria.....

He probado funciones del ShellApi, esta por ejemplo :

Código Delphi [-]
function CopiaShell(Origen,Destino : String) : LongInt;
var
    F : TShFileOpStruct;
    sOrigen, sDestino : String;
begin
    Result := 0;
    sOrigen := Origen + #0;
    sDestino := Destino + #0;

    with F do
    begin
        Wnd := Application.Handle;
        wFunc := FO_COPY;
        pFrom := @sOrigen[1];
        pTo := @sDestino[1];
        fFlags := FOF_ALLOWUNDO or FOF_NOCONFIRMATION
    end;
    Result := ShFileOperation(F);
end;

Si ejecuto "CopiaShell('C:\islu.txt' ,'Equipo\GT-N8000\Phone\DCIM\islu.txt');" -> me dice "La carpeta c:\USER\admin\DESKTOP\EQUIPO\GT-N8000\Phone\DCIM\ no existe"

Si quito Equipo "CopiaShell('C:\islu.txt' ,GT-N8000\Phone\DCIM\islu.txt');" -> me dice "La carpeta c:\USER\admin\DESKTOP\\GT-N8000\Phone\DCIM\ no existe"

No se si me he explicado, MUCHAS GRACIAS por tú atención, espero que se te ocurra algo. GRACIAS!

Última edición por Casimiro Notevi fecha: 24-10-2012 a las 11:54:54.
Responder Con Cita
  #4  
Antiguo 24-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #5  
Antiguo 24-10-2012
islu islu is offline
Miembro
 
Registrado: jun 2003
Posts: 111
Poder: 21
islu Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Recuerda poner los tags al código fuente, ejemplo:

Gracias
Disculpa... tienes razón. Gracias
Responder Con Cita
  #6  
Antiguo 24-10-2012
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
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
Me da la impresión de que lo que el explorador de Windows 7 te está mostrando en la barra de direcciones no debe ser la ruta real, como hace con otros directorios del sistema.
Lo que no acabo de tener claro es cómo podrías ver esa dirección correcta.

¿Has probado a acceder desde el símbolo de sistema, por ejemplo?

A ver cómo lo ves y si puedes acceder.
__________________
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.
Responder Con Cita
  #7  
Antiguo 24-10-2012
islu islu is offline
Miembro
 
Registrado: jun 2003
Posts: 111
Poder: 21
islu Va por buen camino
Desde el símbolo de sistema no puedo. He buscado en panel de control, Dispositivos e impresoras, y alli me parece, pero no consigo ver ninguna opción que me permita encontrar otra manera de acceder a él.

He buscado también en el registro de windows, y nada..., si que encuentro refrencias a él, pero como un "device" por usb

GRACIAS POR EL INTERÉS
Responder Con Cita
  #8  
Antiguo 24-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
islu,

Revisa este link : http://delphi.cjcsoft.net/viewthread.php?tid=46036

En el aparecen los siguientes 5 métodos para copiar un archivo:
Código Delphi [-]
// Método-1:
Procedure FileCopy( Const sourcefilename, targetfilename: String );
Var
  S, T: TFileStream;
Begin
  S := TFileStream.Create( sourcefilename, fmOpenRead );
  try
    T := TFileStream.Create( targetfilename, fmOpenWrite or fmCreate );
    try
      T.CopyFrom(S, S.Size ) ;
    finally
      T.Free;
    end;
  finally
    S.Free;
  end;
End;
Código Delphi [-]
// Método-2:
procedure FileCopy(const FromFile, ToFile: string);
var
  FromF, ToF: file;
  NumRead, NumWritten: Word;
  Buf: array[1..2048] of Char;
begin
  AssignFile(FromF, FromFile);
  Reset(FromF, 1);        { Record size = 1 }
  AssignFile(ToF, ToFile);    { Open output file }
  Rewrite(ToF, 1);        { Record size = 1 }
  repeat
    BlockRead(FromF, Buf, SizeOf(Buf), NumRead);
    BlockWrite(ToF, Buf, NumRead, NumWritten);
  until (NumRead = 0) or (NumWritten < NumRead);
  System.CloseFile(FromF);
  System.CloseFile(ToF);
end;
Código Delphi [-]
// Método-3:
procedure CopyFile(FromFileName, ToFileName: string);
var
  FromFile, ToFile: File;
begin
  AssignFile(FromFile, FromFileName); { Assign FromFile to FromFileName }
  AssignFile(ToFile, ToFileName);     { Assign ToFile to ToFileName }
  Reset(FromFile);                    { Open file for input }
  try
    Rewrite(ToFile);                  { Create file for output }
    try

      { copy the file an if a negative value is returned raise an exception }
      if LZCopy(TFileRec(FromFile).Handle, TFileRec(ToFile).Handle)         raise Exception.Create('Error using LZCopy')
    finally
      CloseFile(ToFile);  { Close ToFile }
    end;
  finally
    CloseFile(FromFile);  { Close FromFile }
  end;
end;
Código Delphi [-]
// Método-4:
procedure CopyFile(FromFileName, ToFileName: string);
var
  shellinfo: TSHFileOpStructA;
  Files:String;
begin
  Files:=FromFileName+#0+#0;
  with shellinfo do
  begin
    Wnd:=Self.handle;
    wFunc:=FO_COPY;
    pFrom:=PChar(Files);
    pTo:=PChar(ToFileName);
    fFlags:=FOF_NOCONFIRMATION or FOF_SILENT;
  end;
  SHFileOperation(shellinfo);
end;
Código Delphi [-]
// Método-5:
copyfile(PChar(FromFileName),PChar(ToFileName),False);
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 25-10-2012 a las 00:02:24.
Responder Con Cita
  #9  
Antiguo 29-10-2012
islu islu is offline
Miembro
 
Registrado: jun 2003
Posts: 111
Poder: 21
islu Va por buen camino
Muchas gracias Nelson, lamento decirte que no me han válido. En todos los casos el poblema es el destino. El problema parece ser que la dirección que me muestra Windows en la barra del explorador, "la traduce" o algo por el estilo.

MUCHAS GRACIAS, sigo buscando, a ver si a alguien se le ocurre algo...
Responder Con Cita
  #10  
Antiguo 30-10-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
islu,
Cita:
Empezado por islu Ver Mensaje
Cuando navego por el dispositivo con el explorador, en la barra de direcciones me muestra "Equipo\GT-N8000\Phone\DCIM", si yo copio esa ruta en otro explorador, me lo abre sin problemas
Cita:
Empezado por islu Ver Mensaje
El problema parece ser que la dirección que me muestra Windows en la barra del explorador, "la traduce" o algo por el estilo
Prueba la siguiente idea:
Código Delphi [-]
ShellExecute(0, nil, 'cmd.exe', '/C Subst i: "Equipo\GT-N8000\Phone\DCIM"', nil, SW_HIDE);
Subst es un comando de consola que permite asignar una letra de unidad a una ruta y hacerla disponible en el explorador de Windows, en el supuesto de que funcione puedes remover la unidad de la siguiente forma:
Código Delphi [-]
ShellExecute(0, nil, 'cmd.exe', '/C Subst i: /d', nil, SW_HIDE);
Otra opción es revisar en el Tablet si tiene alguna opción de configuración que afecte la forma como se mapea a Windows.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 30-10-2012 a las 09:14:58.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TImage no se ve en tablet newtron Gráficos 13 28-06-2012 14:38:38
Copiar un archivo en el archivo .res y utilizarlo para copiarlo GerTorresM Varios 1 14-06-2012 16:00:09
copiar un archivo de red ingabraham Varios 7 15-03-2011 00:45:30
Copiar Archivo john_mvf Varios 2 04-07-2005 21:15:07
copiar un archivo alcides Varios 4 13-05-2005 21:55:50


La franja horaria es GMT +2. Ahora son las 01:05:44.


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
Copyright 1996-2007 Club Delphi