unit Unit1;
interface
uses
  Db, Classes, Dialogs, SysUtils;
procedure DataSetToASCII(const ADataSet: TDataSet;
  const ASCIIFile: TFileName; const Delimiter: Char;
  const QuoteStrings: Boolean);
implementation
procedure DataSetToASCII(const ADataSet: TDataSet;
  const ASCIIFile: TFileName; const Delimiter: Char;
  const QuoteStrings: Boolean);
var
  i, LastIndex: LongInt;
  AsciiRecord: String;
begin
  with TStringList.Create, ADataSet do
  try
    LastIndex:= Pred(Fields.Count);
    First;
    while not EOF do
    begin
      AsciiRecord:= '';
      for i := 0 to LastIndex do
      begin
        if Fields.Fields[i].Tag = 0 then
        begin
          if (QuoteStrings) and
            (Fields.Fields[i].DataType
            in [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString]) then
          begin
            AsciiRecord := AsciiRecord + AnsiQuotedStr(Fields.Fields[i].AsString);
          end
          else
          begin
            AsciiRecord := AsciiRecord + Fields.Fields[i].AsString;
          end;
          if (i < LastIndex) then AsciiRecord:= AsciiRecord + Delimiter;
        end;
      end;
      Append(AsciiRecord);
      Next;
    end;
    try
      SaveToFile(ASCIIFile)
    except
      ShowMessage('テーブルは指定されたファイル: ' + ASCIIFile + ' にセーブできませんでした。');
    end;
    finally
    Free;
  end;
end;
end.
    コメント (0件)