![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток уважаемые
Нужна помощь вот с чем: Имеется: Некий большой текст со строками вида: Код:
999, Text1, 0, -2303.41, 2002.48, 9.2, 0, 0, 0, 1, -1 Код:
999, -2303.41, 2002.48, 9.2, 0, 0, 0 Может быть кто нибудь занимался созданием чего то подобного и может помочь исходником или набросает пример ![]() |
|
#2
|
|||
|
|||
|
Ну, если не гнаться за производительностью, то можно так:
Код:
function ProcessStr(S : String) : String;
var
L : TStringList;
begin
L := TStringList.Create;
Try
// Бъем по запятым
L.Text := StringReplace(S,',',#13#10,[rfReplaceAll]);
While L.Count > 9 Do L.Delete(L.Count-1); // Удаляем все, после 9ой
L.Delete(1); L.Delete(1); // Удаляем 2 блока
// Собираем результат
Result := '';
For I := 0 To L.Count-1 Do
Begin
If Result <> '' Then Result := Result + ', ';
Result := Result + Trim(L[i]);
End;
Finally
L.Free;
End;
end; |
|
#3
|
|||
|
|||
|
Цитата:
Ха, как я понимаю, данное решение только для заданного выражения, именно: Код:
999, Text1, 0, -2303.41, 2002.48, 9.2, 0, 0, 0, 1, -1 но автор вопроса, говорил о неком "большом" тексте, примерного вида.., соответственно этот алгоритм, врятли ему поможет, так же, как я понимаю, автор неадекватно написал и само задание, суть алгоритма откидывания текста, остается загадкой) |
|
#4
|
||||
|
||||
|
Код:
var t:TStringList;
begin
t:=TStringList.create; //создаём класс
t.text:=stringReplace('999, Text1, 0, -2303.41, 2002.48, 9.2, 0, 0, 0, 1, -1',',',#13#10,[rfReplaceAll]);//заменяем все запятые на символы конца троки //теперь можно убедится что у вас строка разбита на элементы:
showmessage(t[0]);
showmessage(t[1]);
showmessage(t[2]);
showmessage(t[3]);
...
//после работы надо уничтожить класс
FreeAndNill(t);Последний раз редактировалось Admin, 09.02.2010 в 10:17. |