Strs : Тоже самое, что и Str (для integer/longint), но в более функциональной
форме, что позволяет сделать преобразование числа в строку более простым.
Before : возвращает часть стоки, расположенную перед задаваемой подстрокой,
или целиком исходную строку, если данная подстрока не обнаружена.
After : как вы можете догадаться, возвращает часть стоки, расположенную после
задаваемой подстрокой, или пустую строку, если данная подстрока не обнаружена.
FP : данная функция создана для работы в стиле условной строки "C", которая
возвращает результат в виде другой строки, основываясь на результатах
логического выражения. (я мог бы осуществить поддержку различных типов данных,
но не посчитал это особо актуальным для формирования выходной строки).
|
|
Function Strs
(I:longint) : string ;
Var X : string[16] ;
begin
STR (I,X) ;
Strs := X ; end ; |
Пример:
|
|
s :='пользователь=Вася';
Text := After ('=',s);
Text := Text+fp(Text<>'',' есть #Неизвестный ') + Before ('=',s); |
Text будет содержать 'Вася есть пользователь' Если s содержало бы только
'пользователь' или 'пользователь=' то Text был бы 'Неизвестный пользователь'
|
|
Function Before (
Src:string ; Var S:string ) : string ;
Var F
: Word ;
begin
F := POS (Src,S) ;
if F=0 then
Before := S
else
Before := COPY(S,1,F-1) ; end ; |
|
|
Function After (
Src:string ; Var S:string ) : string
;
Var F : Word ;
begin
F := POS (Src,S) ;
if F=0 then
After := ''
else
After := COPY(S,F+length(src),length(s)) ; end ;
|
FP позволяет легко изменить текст взависимости от
единственного/множественного числа, рода или любых логических условий.
Пример 1:
|
|
MyText := strs(N)+' компьютер'+FP
(N>1,'ы') ; |
Пример 2:
|
|
if Nargs<>4 then
Msg :='Имеется '+FP(Nargs>4,'много#несколько')+' аргументов.'); |
|
|
const MY_SEP : Char =
'#';
Function FP ( B : Boolean ;
S:string ) : string ;
begin
if POS (MY_SEP,S)>0 then
if B then
S := Before (MY_SEP,S)
else
S := After (MY_SEP,S)
else
if not B then S := '' ;
FP := S ; end ; |
|