Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 23-09-2003
Lmas Lmas is offline
Miembro
 
Registrado: jul 2003
Ubicación: España
Posts: 27
Poder: 0
Lmas Va por buen camino
Hola a todos.

Veo que el código tenía un error, al no poner el editor de post la barra invertida (la contraria al '/'). He sustituido esa parte del código por la función IncludeTrailingPathDelimiter y, por lo menos ayer funcionaba el código; vamos, que reducía el tamaño del DBT.

Aquí va de nuevo:

Código:
uses BDE;

procedure PackTable(ATable: TTable);
var
  TblDesc: CRTblDesc;
  hDb: hDbiDb;
  cTablePath: string;
begin
  if not ATable.Active then
    raise Exception.Create('La tabla debe estar abierta.');
  hDb := nil;
  try
    // La tabla debe estar abierta para obtener su ruta física
    SetLength(cTablePath, MAX_PATH);
    DbiGetDirectory(ATable.DBHandle, True, PChar(cTablePath));
    cTablePath := PChar(cTablePath);
    // El editor de post se come la barra delimitadora del path.
    //*** if (cTablePath <> '') and (cTablePath[Length(cTablePath)] <> '/') then
    //***  cTablePath := cTablePath + '/';
    //*** cTablePath := cTablePath + ATable.TableName;
    cTablePath := IncludeTrailingPathDelimiter(cTablePath) + ATable.TableName;
    // Poner la ruta en la estructura.
    FillChar(TblDesc, SizeOf(CRTblDesc), 0);
    with TblDesc do
    begin
      StrPCopy(szTblName, cTablePath);
      bPack := True;  // Esto indica que se debe compactar
    end;
    // Cerrar la tabla. DbiOpenDatabase la abrirá en modo esclusivo.
    ATable.Active := False;
    DbiOpenDatabase(nil, 'STANDARD', dbiReadWrite, dbiOpenExcl, nil,
                    0, nil, nil, hDb);
    DbiSetDirectory(hDb, PChar(cTablePath));
    DbiDoRestructure(hDb, 1, @TblDesc, nil, nil, nil, False);
  finally
    DbiCloseDatabase(hDb);
  end;
end;
SalU2
__________________
Una cosa es una cosa, y otra cosa es otra cosa...
Responder Con Cita
 


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


La franja horaria es GMT +2. Ahora son las 05:41:19.


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