Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Cambiar idioma tablas paradox desde delphi2 (https://www.clubdelphi.com/foros/showthread.php?t=14858)

tec4eso 02-10-2004 21:38:18

Cambiar idioma tablas paradox desde delphi2
 
Hola a todos:

Necesito importar periodicamente unas tablas paradox de un programa que estan en idioma Paradox ascii, a una aplicación en Delphi. El problema surge con las vocales acentuadas que las muestra con caracteres que no se corresponden.

He resuelto el problema manualmente con Paradox5 cambiando el idoma de las tablas (una a una) de Paradox ascii a Paradox 'intl' 850.

He intentado hacerlo utilizando funciones del dbi pero no lo consigo.

Agradeceria mucho si alguien me indicase como puedo cambiar el idioma en tiempo de ejecución desde delphi2.

Muchas gracias

marcoszorrilla 03-10-2004 17:25:34

No se si funcionará desde D2, pero mírate estas funciones:
Código Delphi [-]
 
 uses
   DBTables, SYSUtils;
 
 function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
 function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
 function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
 function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;
 
 implementation
 
 uses
   DB, BDE;
 
 function RestructureParadoxTable(Table : TTable; Option, OptData: String) : Boolean;
 var
   hDb: hDBIDb;
   Res : DBIResult;
   TableDesc : CRTblDesc;
   FieldDesc : FLDDesc;
 begin
   If (Table.Active and Not Table.Exclusive) Then Table.Close;
   If (Not Table.Exclusive) Then Table.Exclusive := True;
   If (Not Table.Active) Then Table.Open;
 
   Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
 
   Table.Close;
 
   FillChar(TableDesc, SizeOf(TableDesc), 0);
   StrPCopy(TableDesc.szTblName, Table.Tablename);
   StrCopy(TableDesc.szTblType, szParadox);
 
   FieldDesc.iOffset := 0;
   FieldDesc.iLen := Length(OptData) + 1;
   StrPCopy(FieldDesc.szName, Option);
 
   TableDesc.iOptParams := 1;
   TableDesc.pFldOptParams := @FieldDesc;
   TableDesc.pOptData := @OptData[1];
   try
     Res := DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False);
     Result := (Res = DBIERR_NONE);
   finally
     Table.Open;
   end;
 end;
 
 function SetParadoxTableVersion(TablePathName : String; Version : Integer) : Boolean;
 var
   MyTable : TTable;
 begin
   MyTable := TTable.Create(Nil);
   MyTable.DatabaseName := ExtractFilePath(TablePathName);
   MyTable.TableName := ExtractFileName(TablePathName);
 
   Result := RestructureParadoxTable(MyTable, 'LEVEL', IntToStr(Version));
 
   MyTable.Free;
 end;
 
 function SetParadoxTableBlockSize(TablePathName : String; BlockSize : Integer) : Boolean;
 var
   MyTable : TTable;
 begin
   MyTable := TTable.Create(Nil);
   MyTable.DatabaseName := ExtractFilePath(TablePathName);
   MyTable.TableName := ExtractFileName(TablePathName);
 
   Result := RestructureParadoxTable(MyTable, 'BLOCK SIZE', IntToStr(BlockSize));
 
   MyTable.Free;
 end;
 
 function SetParadoxTableStrictIntegrity(TablePathName : String; StrictIntegrity : Boolean) : Boolean;
 var
   MyTable : TTable;
 begin
   MyTable := TTable.Create(Nil);
   MyTable.DatabaseName := ExtractFilePath(TablePathName);
   MyTable.TableName := ExtractFileName(TablePathName);
 
   If (StrictIntegrity) Then
     Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'TRUE')
   else
     Result := RestructureParadoxTable(MyTable, 'STRICTINTEGRTY', 'FALSE');
 
   MyTable.Free;
 end;
 
 function SetParadoxTableLanguage(TablePathName, LangDriver : String) : Boolean;
 var
   MyTable : TTable;
 begin
   MyTable := TTable.Create(Nil);
   MyTable.DatabaseName := ExtractFilePath(TablePathName);
   MyTable.TableName := ExtractFileName(TablePathName);
 
   Result := RestructureParadoxTable(MyTable, 'LANGDRIVER', LangDriver);
 
   MyTable.Free;
 end;
 
 end.

Un Saludo.

tec4eso 04-10-2004 21:01:31

Gracias por las funciones, cambia el idioma pero no corrige los caracteres de las vocales mayusculas acentuadas, como lo hace paradox5 al restructurar la tabla


La franja horaria es GMT +2. Ahora son las 21:40:04.

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