|
#1
|
|||
|
|||
*.dat файл
Добрый день форумчане!
Прошу помочь мне с кодом. Имеется входной файл *.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. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |