Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2015
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Nombre largo

Hola, tengo un inconveniente con una aplicación que hice. Si la ejecuto en la PC donde tengo instalado Delphi xe5, encuentra y opera con tablas cuyo nombre es de esta característica: PE1234567890123456.dbf, pero al querer ejecutar dicha aplicación en otra pc, no encuentra la tabla. Si achico el nombre a 8 caracteres, la encuentra. Decidí instalar el xe5 en esa otra PC, ejecute la aplicación y anduvo, mi pregunta es si alguien sabe que api o función se instala con el xe5 y es la que permite leer archivos con nombre que supere los 8 caracteres, ya que es ilógico instalar en cada PC el xe5. Desde ya muchas gracias.
Responder Con Cita
  #2  
Antiguo 18-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Tiene msdos?
Responder Con Cita
  #3  
Antiguo 19-11-2015
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
Hola Casimiro, gracias por responder. Ambas Pcs tienen instalado win7 32bits. Si tu pregunta es si tengo acceso al msdos, la respuesta es si.
Responder Con Cita
  #4  
Antiguo 19-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Como buscas el archivo?
Como lo abris?
Que excepción se genera?
Estas usando una ruta absoluta o relativa?
Que pasa si pones el archivo en c:\?

No creo que Delphi instale ninguna API para abrir archivos de nombre largo. Menos en windows 7...

Proba cargar un archivo con "nombre largo" en un string list por ejemplo para despejar dudas
Responder Con Cita
  #5  
Antiguo 19-11-2015
aromigaret aromigaret is offline
Miembro
 
Registrado: jun 2011
Posts: 68
Poder: 13
aromigaret Va por buen camino
AgustinOrtu, te comento la operatoria del sistema:

Recibo por Ftp, tablas que contienen un pedido de mercadería, el nombre de la tabla esta conformada por 'PE' + Código Cliente + Código Vendedor + día + mes + hora + min, un ejemplo 'PE0215000119110925.DBF'.
Estas tablas están en el directorio 'C:\pedidos', mismo directorio donde se ejecuta la aplicación. En dicha aplicación, simplemente tengo un adoquery ('pedido') y cargo los datos de esta tabla, para luego procesarlos.

La sentencia para abrir la adoquery es :

Código Delphi [-]
pedido.sql.text:='select * from ' + nombre_tabla;


donde nombre_tabla es un string con el nombre de la tabla a leer.

La excepción que aparece es la siguiente :

Código Delphi [-]
[Microsoft][Controlador ODBC dBase] El motor de base de datos 
Microsoft Jet no pudo encontrar el objeto ''PE0215000119110925.DBF'.
Asegúrese de que el objeto existe, y que ha escrito el nombre y la ruta
de acceso al objeto correctamente.

Como dije antes, yo tampoco creo que haya que instalar xe5 en cada pc, pero es evidente que "algo cambia" al hacerlo. Por eso quisiera saber que es para que funcione la aplicación.

Gracias
Responder Con Cita
  #6  
Antiguo 19-11-2015
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.275
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
Las RxLib, en la unit FileUtil.pas tienen la siguiente función, que tal vez te sea útil (te pongo la 4):

Código Delphi [-]
function ShortToLongFileName(const ShortName: string): string;
var
  Temp: TWin32FindData;
  SearchHandle: THandle;
begin
  SearchHandle := FindFirstFile(PChar(ShortName), Temp);
  if SearchHandle <> INVALID_HANDLE_VALUE then begin
    Result := string(Temp.cFileName);
    if Result = '' then Result := string(Temp.cAlternateFileName);
  end
  else Result := '';
  Windows.FindClose(SearchHandle);
end;

function LongToShortFileName(const LongName: string): string;
var
  Temp: TWin32FindData;
  SearchHandle: THandle;
begin
  SearchHandle := FindFirstFile(PChar(LongName), Temp);
  if SearchHandle <> INVALID_HANDLE_VALUE then begin
    Result := string(Temp.cAlternateFileName);
    if Result = '' then Result := string(Temp.cFileName);
  end
  else Result := '';
  Windows.FindClose(SearchHandle);
end;

function ShortToLongPath(const ShortName: string): string;
var
  LastSlash: PChar;
  TempPathPtr: PChar;
begin
  Result := '';
  TempPathPtr := PChar(ShortName);
  LastSlash := StrRScan(TempPathPtr, '\');
  while LastSlash <> nil do begin
    Result := '\' + ShortToLongFileName(TempPathPtr) + Result;
    if LastSlash <> nil then begin
      LastSlash^ := char(0);
      LastSlash := StrRScan(TempPathPtr, '\');
    end;
  end;
  Result := TempPathPtr + Result;
end;

function LongToShortPath(const LongName: string): string;
var
  LastSlash: PChar;
  TempPathPtr: PChar;
begin
  Result := '';
  TempPathPtr := PChar(LongName);
  LastSlash := StrRScan(TempPathPtr, '\');
  while LastSlash <> nil do begin
    Result := '\' + LongToShortFileName(TempPathPtr) + Result;
    if LastSlash <> nil then begin
      LastSlash^ := char(0);
      LastSlash := StrRScan(TempPathPtr, '\');
    end;
  end;
  Result := TempPathPtr + Result;
end;
__________________
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
Respuesta



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
El string mas largo Carmelo Cash Firebird e Interbase 1 11-10-2014 00:28:42
Me largo Ñuño Martínez La Taberna 40 19-08-2008 15:57:00
Nombre de tabla muy largo en MySql seoane MySQL 8 29-02-2008 23:30:38
Como Transormar un string largo a Integer largo RodoRodo Varios 1 27-06-2007 02:26:29
Proceso muy largo ? Coco_jac Varios 5 22-12-2005 21:54:59


La franja horaria es GMT +2. Ahora son las 09:24:52.


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