Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
В том случае, когда вы собираетесь использовать содержимое текстового файла таким образом, как будто он имеет поля, вам необходим файл схемы, содержащий описание формата текстового файла и который необходим для осуществления вызовов при работе с полями (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:delphifiles';
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:delphifilesTest.Txt') then
begin
AssignFile(f, 'c:delphifilesTest.Txt');
Rewrite(f);
CloseFile(f);
end
;
oTxt := TTable.Create(nil
);
with
oTxt do
begin
DatabaseName := 'c:delphifiles';
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
;