Показать сообщение отдельно
  #3  
Старый 05.06.2010, 07:48
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,100
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от 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;
Ответить с цитированием