Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Базы Данных

ASCII-файл с использованием полей

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


    { Подразумеваем, что Table1 - файл, который мы хотим скопировать в ASCII-файл. Используем TBatchMove, поскольку быстро работает. Также это автоматически создаст файл схемы }

procedure TForm1.Button1Click(Sender: TObject);
var
oDest: TTable ;
oBMove: TBatchMove ;
begin
try
oDest  := nil ;
oBMove := nil ;
Table1.Close ;

oDest := TTable.Create(nil) ;
with oDest do begin
DatabaseName := 'c:\delphi\files' ;
TableName := 'Test.Txt' ;
TableType := ttASCII ;
end ; {Обратите внимание на то, что нет необходимости вызывать CreateTable}

oBMove := TBatchMove.Create(nil) ;
with oBMove do begin
Source := Table1 ;
Destination := oDest ;
Mode := batCopy ;
Execute ;
end ;
finally
if Assigned(oDest) then oDest.Free ;
if Assigned(oBMove) then oBMove.Free ;
end ;
end;

{ Теперь, допустим, файл схемы существует; сам текстовый файл может как быть, так его может и не быть. С помощью файла схемы мы уже можем работать с полями }
procedure TForm1.Button2Click(Sender: TObject);
var
oTxt: TTable ;
i: Integer ;
f: System.Text ;
begin
try
oTxt := nil ;

if not FileExists('c:\delphi\files\Test.Txt') then begin
AssignFile(f, 'c:\delphi\files\Test.Txt' ) ;
Rewrite(f) ;
CloseFile(f) ;
end ;

oTxt := TTable.Create(nil) ;
with oTxt do begin
DatabaseName := 'c:\delphi\files' ;
TableName := 'Test.Txt' ;
TableType := ttASCII ;
Open ;
end ;

with Table1 do begin
DisableControls ;
if not Active then Open ;
First ;
while not EOF do begin
oTxt.Insert ;
{ В данном случае файл схемы описывает формат текстового файла; в этом
примере фактически один к одному воспроизводятся поля таблицы
в логическое определение полей в .sch-файле }
for i := 0 to FieldCount - 1 do
oTxt.Fields[i].AsString := Fields[i].AsString ;
oTxt.Post ;
Next ;
end ;
end ;
finally
Table1.EnableControls ;
if Assigned(oTxt) then oTxt.Free ;
end ;

end;

OAmiry/Borland 

Категория: Базы Данных | Добавил: DelphiAiX (20.05.2012)
Просмотров: 537 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]