Estou fazendo um programa ( segue uma cópia a seguir ) para relacionar os campos dos bancos de dados Paradox em um determinado diretório.
O programa deve ser rodado a partir do DOS, no diretório desejado, pois não permite que este seja alterado.
O programa funciona perfeitamente para a estrutura dos bancos de dados, mas não estou conseguindo relacionar os arquivos de índice com seus respectivos campos.
Alguém saberia como posso fazer esta verificação ?
Pergunta
José Luiz
Estou fazendo um programa ( segue uma cópia a seguir ) para relacionar os campos dos bancos de dados Paradox em um determinado diretório.
O programa deve ser rodado a partir do DOS, no diretório desejado, pois não permite que este seja alterado.
O programa funciona perfeitamente para a estrutura dos bancos de dados, mas não estou conseguindo relacionar os arquivos de índice com seus respectivos campos.
Alguém saberia como posso fazer esta verificação ?
Obrigado,
José Luiz.
O PROGRAMA JÁ DESENVOLVIDO.
unit INICIO;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, DBTables, Buttons, Grids, DBGrids, FileCtrl;
type
TF_INICIO = class(TForm)
FileListBox1: TFileListBox;
Table1: TTable;
DataSource1: TDataSource;
Function PAD ( mPOS, mVAR, mCAR : string ; mTAM : Integer ) : String ;
procedure FormShow ( Sender: TObject );
private
{ Private declarations }
FileListBox1List : TStringList ;
public
{ Public declarations }
end;
var
F_INICIO: TF_INICIO;
implementation
{$R *.dfm}
// Na propriedades Mask do FileListBox1 ( Aba Win3.1 ), colocar *.DB
procedure TF_INICIO.FormShow(Sender: TObject);
var
i : Integer ;
j : Integer ;
Lista : TextFile;
mTIPO : String ;
begin
FileListBox1List := TStringList.Create ;
AssignFile ( Lista, 'D_ESTRUT.TXT' );
Rewrite ( Lista ) ;
for i := 0 to FileListBox1.Count - 1 do begin
Table1.TableName := FileListBox1.Items [ i ];
Table1.Open ;
Writeln ( Lista, '' );
Writeln ( Lista, ' ' + PAD ( 'E', Table1.TableName, ' ', 25 ) +
IntToStr ( Table1.RecordCount ) + ' registros' );
Writeln ( Lista, '' );
Writeln ( Lista, ' Campo Descricao Tipo Tam' );
Writeln ( Lista, ' ===== ========== ============ ===' );
for j := 0 to table1.FieldCount-1 do begin
mTIPO := 'Outros' ;
if Table1.Fields[j].DataType = ftString then mTIPO := 'String ' ;
if Table1.Fields[j].DataType = ftSmallint then mTIPO := 'Smallint ' ;
if Table1.Fields[j].DataType = ftInteger then mTIPO := 'Integer ' ;
if Table1.Fields[j].DataType = ftWord then mTIPO := 'Word ' ;
if Table1.Fields[j].DataType = ftBoolean then mTIPO := 'Boolean ' ;
if Table1.Fields[j].DataType = ftFloat then mTIPO := 'Float ' ;
if Table1.Fields[j].DataType = ftCurrency then mTIPO := 'Currency ' ;
if Table1.Fields[j].DataType = ftDate then mTIPO := 'Date ' ;
if Table1.Fields[j].DataType = ftTime then mTIPO := 'Time ' ;
if Table1.Fields[j].DataType = ftDateTime then mTIPO := 'DateTime ' ;
if Table1.Fields[j].DataType = ftBytes then mTIPO := 'Bytes ' ;
if Table1.Fields[j].DataType = ftVarBytes then mTIPO := 'VarBytes ' ;
if Table1.Fields[j].DataType = ftAutoInc then mTIPO := 'AutoInc ' ;
if Table1.Fields[j].DataType = ftBlob then mTIPO := 'Blob ' ;
if Table1.Fields[j].DataType = ftMemo then mTIPO := 'Memo ' ;
Writeln ( Lista, ' ' + PAD ( 'D', IntToStr ( j + 1 ), ' ', 3 ) +
' ' + PAD ( 'E', Table1.Fields[j].FieldName, ' ', 10 ) +
' ' + mTIPO +
' ' + PAD ( 'D', IntToStr ( Table1.Fields [j].DataSize - 1 ), ' ', 3 ) );
end ;
Table1.Close ;
Writeln ( Lista, '' );
end ;
CloseFile ( Lista );
Application.Terminate ;
end;
Function TF_INICIO.PAD ( mPOS, mVAR, mCAR : string; mTAM : Integer ): String ;
var
mPREENCHE : string ;
i : Integer ;
begin
mVAR := Copy ( mVAR, 1, mTAM ) ;
mPREENCHE := '' ;
for i := 1 to mTAM - Length ( mVAR ) do begin
mPREENCHE := mPREENCHE + mCAR ;
end ;
if mPOS = 'D' then
result := mPREENCHE + mVAR
else
result := mVAR + mPREENCHE ;
end;
end.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.