Инкрементация строкового поля

Материал из DRKB

Инкрементация строкового поля[править | править код]

Свойства text элемента управления является строкой, в свою очередь являющейся массивом символом. Вы не можете осуществить преобразование символа в строку. Тем не менее, вы можете получить доступ ко всем символам строки через их индекс.

Попробуйте это:

var
  s: string;
begin
  s := RevField.text;
  s[1] := chr(ord(s[1]) + 1);
  RevField.text := s;
end;


Здесь кроется 2 проблемы:

Для увеличения значения вам необходимо извлекать символы из строки.

Хотя вы можете получить доступ к отдельным символам через выделение подстроки, данный метод не срабатывает у некоторых свойств, таких как, например, свойство TStringField Text.

Лучшим решением, по-видимому, будет написание специфической функции. Например, в случае, если revision-символ всегда является конечным символом строки, функция могла бы выглядеть следующим образом:

function IncrementTrailingVersionLetter(Str: string): string;
begin 
  Str[Length(Str)] := Char(Ord(Str[Length(Str)]) + 1);
  IncrementTrailingVersionLetter := Str;
end;

и использовать ее следующим образом:

with RevField do
  Text := IncrementTrailingVersionLetter(Text);


Source: Взято с http://delphiworld.narod.ru
ID: 00167