![]() |
|
|
#1
|
|||
|
|||
|
Добрый день форумчане!
Прошу помочь мне с кодом. Имеется входной файл *.dat В нём храняться следующие данные 478962.45 4598214.87 -26.0 1 478941.13 4578421.00 -30.0 0 479654.10 4587563.46 -26.0 0 479654.10 4587563.46 -26.0 1 Я загружаю в программу, нужно чтобы в строке, где в четвёртом столбике стоит единица, строка (в выходном) переписывалась в следующий вид: _3dpoly(пробел)478962.45(запятая)4598214.87(запята я)-26.0 столбик где содержится 0 строка оставалась не изменной, но только между значениями ставилась запятая, также как и в примере выше. Содержание выходного файла ________________________________ _3dpoly 478962.45,4598214.87,-26.0 478941.13,4578421.00,-30.0 479654.10,4587563.46,-26.0 _3dpoly 479654.10,4587563.46,-26.0 ________________________________ Спасибо всем за ответы. Файл прикреплю ниже |
|
#2
|
||||
|
||||
|
Вообще задача для регулярок, но поскольку вы в Дельфи вопрос задали то и получайте решение на Дельфи:
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils, Classes;
Var
SrcFile,DstFile: TStringList;
i: Integer;
S: String;
begin
SrcFile := TStringList.Create;
SrcFile.LoadFromFile('C:\1\1.txt');
DstFile := TStringList.Create;
for i := 0 to SrcFile.Count - 1
do begin
S := SrcFile.Strings[i];
if Copy(S, Length(S), 1) = '1'
then S := '_3dpoly ' + Copy(S, 1, Length(S) - 2);
S := StringReplace(S, ' ', ',', [rfReplaceAll]);
DstFile.Add(S);
end;
DstFile.SaveToFile('C:\1\1_1.txt');
DstFile.Free;
SrcFile.Free;
end. |