{ Csv2Dbf }

  AssignFile(ArqDados, 'Config.dat');
  Reset(ArqDados);
  Readln(ArqDados, ConfReg);
  CloseFile(ArqDados);
  ArqCsv := Calc + ' .csv';
  ArqDbf := Calc + ' .dbf';
  NFields := 19;
  AssignFile(ArqDados, ArqCsv);
  Reset(ArqDados);
  Readln(ArqDados, Linha);
  with DataModule4.Table16 do
    begin
      Active := False;
      TableName := ArqDbf;
      CreateTable;
      Active := True;
      Edit;
      First;
    end;
    while not eof(ArqDados) do
      begin
        Readln(ArqDados, Linha);
        j := 1;
        for icont := 1 to NFields do
          Campo[icont] := '';
        for icont := 1 to Length(Linha) do
          begin
            if Linha[icont] = ',' then
              j := j + 1
            else
              if Linha[icont] <> '' then Campo[j] := Campo[j] + Linha[icont];
          end;
        if ConfReg = 'Portuguese' then
          begin
            for jk := 1 to Length(Campo[5]) do
              if Campo[5,jk] = '.' then Campo[5,jk] := ',';
            for jk := 1 to Length(Campo[8]) do
              if Campo[8,jk] = '.' then Campo[8,jk] := ',';
            for jk := 1 to Length(Campo[10]) do
              if Campo[10,jk] = '.' then Campo[10,jk] := ',';
            for jk := 1 to Length(Campo[6]) do
              if Campo[6,jk] = '.' then Campo[6,jk] := ',';
            for jk := 1 to Length(Campo[9]) do
              if Campo[9,jk] = '.' then Campo[9,jk] := ',';
            for jk := 1 to Length(Campo[11]) do
              if Campo[11,jk] = '.' then Campo[11,jk] := ',';
            for jk := 1 to Length(Campo[12]) do
              if Campo[12,jk] = '.' then Campo[12,jk] := ',';
            for j := 16 to 19 do
              begin
                for jk := 1 to Length(Campo[j]) do
                  if Campo[j,jk] = '.' then Campo[j,jk] := ',';
              end;
          end;
        DataModule4.Table16.InsertRecord([Campo[1],Campo[2],Campo[3],Campo[4],StrToFloat(Campo[5]),
          StrToFloat(Campo[6]),Campo[7],StrToFloat(Campo[8]),StrToFloat(Campo[9]),StrToFloat(Campo[10]),
          StrToFloat(Campo[11]),StrToFloat(Campo[12]),Campo[13],Campo[14],Campo[15],StrToFloat(Campo[16]),
          StrToFloat(Campo[17]),StrToFloat(Campo[18]),StrToFloat(Campo[19])]);
      end;
    DataModule4.Table16.Close;
    DataModule4.Table16.Active := False;
    CloseFile(ArqDados);


{ Dbf2Csv }

  ArqDbf := Dados + ' .dbf';
  ArqCsv := Calc + ' .csv';
  AssignFile(ArqDados, ArqCsv);
  Rewrite(ArqDados);
  Linha := 'STH, RODOVIA, INICIO, FIM, KMINICIAL, KMFINAL, PISTA, NFAIXAS, PLUVMMANO, ALTM, PLATAFM, LARGPISTA, ACOSTLE, ACOSTLD, GEOVERT, GEOHORIZ, SECTIPO, FAIXA1M, FAIXA2M, FAIXA3M, FAIXA4M, DECTRANSV, RESTRCOTA, EXTPONTES, OBS'
  NFields := 1;
  for icont := 1 to Length(Linha) do
    if Linha[icont] = ',' then NFields := NFields + 1;
  Writeln(ArqDados, Linha);
  with DataModule10.Table2 do
    begin
      Active := False;
      TableName := ArqDbf;
      Active := True;
      First;
      while not Eof do
        begin
          LinhaX := Fields.Fields[0].AsString;
          Linha := '';
          for jk := 1 to Length(LinhaX) do
            begin
              if LinhaX[jk] = ',' then LinhaX[jk] := '.';
              Linha := Linha + LinhaX[jk];
            end;
          for icont := 1 to NFields-1 do
            begin
              LinhaX := Fields.Fields[icont].AsString;
              LinhaY := '';
              for jk := 1 to Length(LinhaX) do
                begin
                  if LinhaX[jk] = ',' then LinhaX[jk] := '.';
                  LinhaY := LinhaY + LinhaX[jk];
                end;
              Linha := Linha + ',' + LinhaY;
            end;
          Writeln(ArqDados, Linha);
          Next;
        end;
      Active := False;
    end;
  CloseFile(ArqDados);

'ARQ$ = CALC$ + CADAS.CSV
Linha := 'STH, RODOVIA, INICIO, FIM, KMINICIAL, KMFINAL, PISTA, NFAIXAS, PLUVMMANO, ALTM, PLATAFM, LARGPISTA, ACOSTLE, ACOSTLD, GEOVERT, GEOHORIZ, SECTIPO, FAIXA1M, FAIXA2M, FAIXA3M, FAIXA4M, DECTRANSV, RESTRCOTA, EXTPONTES, OBS';

'ARQUIVO$ = CALC$ + Acost + Rodov$(IRodov) + .CSV
Linha := 'STH, USO, ANOREVEST, REVEST, H1CM, BASE, H2CM, SUBBASE, H3CM, DECTRANSV, SUPPISTA, SUPACOST, HLFREATM, INUNDTEMP';

'ARQ$ = CALC$ + SUP + Rodov$(IRodov) + Faixa$ + .CSV
Linha := 'STH, INICIO, FIM, PSR, CR, BL, TT, TL, TE, TB, P, D, DS, ER, BF, DC, R, ATR, COR, EM, DP, EL, PSR_ACOST, DEGRAU_CM, DATA, OBS';

'ARQ$ = CALC$ + LVC + Rodov$(IRodov) + Faixa$ + .CSV
Linha := 'STH, INICIO, FIM, PSR, CR1, CR2, CR3, BL1, BL2, BL3, TT1, TT2, TT3, TL1, TL2, TL3, TE1, TE2, TE3, TB1, TB2, TB3, P, D, DS, ER, BF, DC, R1, R2, R3, ATR, COR, EM, DP, PSR_ACOST, DEGRAU_CM, DATA, OBS';

'ARQUIVO$ = CALC$ + DFX + Rodov$(IRodov) + Faixa$ + .CSV
Linha := 'STH, CARGAKGF, DF1, DF2, DF3, DF4, DF5, DF6, DF7, NPONTOS, TAR, TSUP, R1CM, R2CM, R3CM, R4CM, R5CM, R6CM, R7CM, FIPLACA, DATA, EQUIP';

'ARQUIVO$ = CALC$ + MOD + Rodov$(IRodov) + Faixa$ + .CSV
Linha := 'STH, H1_CM, E1, TEMP, H2_CM, E2, H3_CM, E3, H4_CM, E4, H5_CM, E5, E1REF, D0REF, SN, DATA, EQUIP';

'ARQUIVO$ = CALC$ + Func + Rodov$(IRodov) + .CSV
Linha := 'STH, QI_FAIXA1, QI_FAIXA2, QI_FAIXA3, QI_FAIXA4, DATA, EQUIP';

'ARQUIVO$ = CALC$ + IRI + Rodov$(IRodov) + .CSV
Linha := 'STH, IRI_FX1, IRI_FX2, IRI_FX3, IRI_FX4, DATA, EQUIP_IRI';

'ARQUIVO$ = CALC$ + ATR + Rodov$(IRodov) + .CSV
Linha := 'STH, ATRESQ1, ATRDIR1, ATRESQ2, ATRDIR2, ATRESQ3, ATRDIR3, ATRESQ4, ATRDIR4, DATA, EQUIP, DSVESQ1, DSVDIR1, DSVESQ2, DSVDIR2, DSVESQ3, DSVDIR3, DSVESQ4, DSVDIR4';

'ARQUIVO$ = CALC$ + Traf + Rodov$(IRodov) + .CSV
Linha := 'STH, PEDAGIO, PERCTVDM, VDMCOM_1, VDMCOM_2, VDMCOM_3, VDMCOM_4, VDM, VDM_2EIXOS, VDM_3EIXOS, VDM_4EIXOS, VDM_5EIXOS, VDM_6EIXOS';

'ARQUIVO$ = CALC$ + Ampl + Rodov$(IRodov) + .CSV
Linha := 'STH, ANO_ALTERA, FATOR_1, FATOR_2, FATOR_3, FATOR_4';

'ARQUIVO$ = CALC$ + Estr + Rodov$(IRodov) + Faixa$ + .CSV
Linha := 'STH, ANOREVEST, REVEST, MARSHALL, RTDIAMET, VAZIOSAR, TEORASF, H1ORIGCM, BASE, H2CM, CBRBASE, RCS28DBASE, SUBBASE, H3CM, CBRSUBBASE, RCS28DSUBB, REFSL, H4CM, CBRREFSL, SUBLEITO, CBRSL, LLSL, IPSL, PERCT200, PROFROCHA';

