Опросы
Активных опросов на данный момент нет.
Счетчики
Rambler's Top100





Яндекс цитирования


Rambler's Top100
А  Б  В  Г  Д  Е  Ж  З  И  К  Л  М  Н  О  П  Р  С  Т  У  Ф  Х  Ц  Ч  Ш  Щ  Э  Ю  Я
0-9  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
Страниц: 1 2 > >>

Использование драйвера ASCII для файлов с разделительной запятой

   В том случае, когда вы собираетесь использовать содержимое текстового файла таким образом, как будто он имеет поля, вам необходим файл схемы, содержащий описание формата текстового файла и который необходим для осуществления вызовов при работе с полями (Fields / FieldByName / Post / и др.). Ниже приводится код, который вы можете использовать при создании своей программы:

  В Delphi 1.0 для получения количества записей в ASCII файле (.TXT- и .SCH-файлы) я пользовался свойством RecordCount компонента TTable. В Delphi 2.0 эта функциональность не поддерживается! Я прав или не прав? Во всяком случае как мне получить количество записей, содержащихся в ASCII таблице?

  Классы Tstrings/TStringlist имеют свойство commatext, которое автоматически разделяет строки, содержащие разделители, на отдельные части. Пример показывает как считать CSV файл. В Конечном итоге, автоматически разделённые строки содержатся в TStringlist.

Импорт CSV ASCII

 

Импорт большого CSV файла

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Db, DBTables, Grids, DBGrids;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    MyTable: TTable;
    DataSource1: TDataSource;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ExportToASCII;
end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.ExportToASCII;
const
  FASCIISeparator:string=' | ';
var
  I: Integer;
  Dlg: TSaveDialog;
  ASCIIFile: TextFile;
  Res, FASCIIFieldNames: Boolean;
  FASCIIFileName:string;
begin
  with MyTable do
  begin
    if Active then
      if (FieldCount > 0) and (RecordCount > 0) then
      begin
        Dlg := TSaveDialog.Create(Application);
        Dlg.FileName := FASCIIFileName;
        Dlg.Filter := 'ASCII-Fiels (*.asc)|*.asc';
        Dlg.Options := Dlg.Options+[ofPathMustExist,
        ofOverwritePrompt, ofHideReadOnly];
        Dlg.Title := 'Экспоритровать данные в ASCII-файл';
        try
          Res := Dlg.ute;
          if Res then
            FASCIIFileName := Dlg.FileName;
        finally
          Dlg.Free;
        end;
        if Res then
        begin
          AssignFile(ASCIIFile, FASCIIFileName);
          Rewrite(ASCIIFile); First;
          if FASCIIFieldNames then
          begin
            for I := 0 to FieldCount-1 do
            begin
              write(ASCIIFile, Fields[I].FieldName);
              if I <> FieldCount-1 then
                write(ASCIIFile, FASCIISeparator);
            end;
            write(ASCIIFile, #13#10);
          end;
          while not EOF do
          begin
            for I := 0 to FieldCount-1 do
            begin
              write(ASCIIFile, Fields[I].Text);
              if I <> FieldCount-1 then
                write(ASCIIFile, FASCIISeparator);
            end;
            Next;
            if not EOF then
              write(ASCIIFile, #13#10);
          end;
          CloseFile(ASCIIFile);
          if IOResult <> 0 then
            MessageDlg('Ошибка при создании или переписывании '+
            'в ASCII-файл', mtError, [mbOK], 0);
        end;
      end
      else
        MessageDlg('Нет данных для экспортирования.',
        mtInformation, [mbOK], 0)
    else
      MessageDlg('Таблица должна быть открытой, чтобы данные '+
      'можно было экспортировать в ASCII-формат.', mtError, [mbOK], 0);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ExportToASCII;
end;

end.

Определить, имеет ли файл ASCII-формат

  Приведу несколько простых функций, позволяющих работать с отдельными словами в строке. Возможно они пригодятся вам для разбивки текстовых полей на отдельные слова (for i := 1 to NumToken do ...) с последующим сохранением их в базе данных.

Формат файла ASCII-схемы

Страниц: 1 2 > >>
 
 
© 2018