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 ; |
[000260]