Цитата:
Сообщение от OnzMill
попонятние изложи суть
|
Ну и чего тут непонятного. Есть дробные числа, записанные в виде строки через пробел. Надо удалить в них ведущие (незначащие) нули, кроме последнего, если он перед точкой (т.е. число < 1).
Решение. Преобразуем массив (видимо в массиве символы) в список строк (с ними удобнее работать) и далее убираем все ведушие нули.
Код:
// Массив в строку сам переведешь.
function ProcessNumberArray(S : String) : String;
var
L : TStringList;
Buf : String;
Idx, I : Integer;
begin
// "Пилим" на строки
L := TStringList.Create;
Idx := Pos(' ',S);
While Idx > 0 Do
Begin
Buf := Copy(S,1,Idx-1);
S := Copy(S,Idx+1,Length(S)-Idx+1);
If Buf <> '' Then L.Add(Buf);
Idx := Pos(' ',S);
End;
If S <> '' Then L.Add(S);
// Удаляем все лишнее
For I := 0 To L.Count-1 Do
Begin
Buf := L[i];
While (Length(Buf) > 1) And (Buf[1] = '0') And (Buf[2] <> '.') Do
Buf := Copy(Buf,2,Length(Buf)-1); // можно через delete
L[i] := Buf;
End;
// Собираем результат
Result := '';
For I := 0 To L.Count-1 Do
Begin
If Result <> '' Then Result := Result + ' ';
Result := Result + L[i];
End;
// Чистим за собой...
L.Free;
end;