Code:

function UpCaseRus(ch: Char): Char;

asm

CMP AL,'a'

JB @@exit

CMP AL,'z'

JA @@Rus

SUB AL,'a' - 'A'

RET

@@Rus:

CMP AL,'я'

JA @@Exit

CMP AL,'а'

JB @@yo

SUB AL,'я' - 'Я'

RET

@@yo:

CMP AL,'?'

JNE @@exit

MOV AL,'?'

@@exit:

end;

Code:

function LoCaseRus( ch : Char ) : Char;

{Перевод символа в нижний регистр для русского алфавита}

asm

CMP AL,'A'

JB @@exit

CMP AL,'Z'

JA @@Rus

ADD AL,'a' - 'A'

RET

@@Rus:

CMP AL,'Я'

JA @@Exit

CMP AL,'А'

JB @@yo

ADD AL,'я' - 'Я'

RET

@@yo:

CMP AL,'?'

JNE @@exit

MOV AL,'?'

@@exit:

end;

Code:

{ **** UBPFD *********** by delphibase.endimus****

>> Примеры форматирования строк с использованием API-функции wvsprintf

 

Примеры показывают приемы использования функции wvsprintf в Delphi для

форматирования строк. Эта функция входит в состав Windows API

(реализована в user32.dll), поэтому не требует подключения модуля

SysUtils по сравнению с аналогичной функцией Format.

 

Зависимости: Windows

Автор: Внук, Zhigalin @ poria.ru, ICQ:60571446, Самара

Copyright: Внук

 

***************************************************** }

 

// Пример использования функции wvsprintf с двумя параметрами разного типа

 

function WinFormat(out TargetString: AnsiString): Boolean;

const

FormatStr = 'String Parameter:"%s", Number Parameter:%05d';

var

StrParam: AnsiString;

NumberParam, FormatResult: Integer;

ParamArray: array[0..1] of Pointer;

begin

NumberParam := 105; // Задаем значение первого параметра

StrParam := 'Hello'; // Задаем значение второго параметра

SetLength(TargetString, 50); // Должно быть достаточно места для результата.

// Без этой строки работать не будет

ParamArray[0] := @StrParam[1];

ParamArray[1] := Pointer(NumberParam);

FormatResult := wvsprintf(PChar(TargetString), FormatStr, PChar(@ParamArray));

if FormatResult < Length(FormatStr) then// В случае ошибки значение функции

// меньше длины шаблонной строки

begin

TargetString := '';

Result := False;

end

else

result := True;

end;

 

// Пример использования функции wvsprintf с одним параметром

 

function SimpleWinFormat(out TargetString: AnsiString): Boolean;

const

FormatStr = 'Number Parameter:%05d';

var

NumberParam, FormatResult: Integer;

begin

NumberParam := 112;

SetLength(TargetString, 50); // Должно быть достаточно места для результата.

// Без этой строки работать не будет

FormatResult := wvsprintf(PChar(TargetString), FormatStr,

PChar(@NumberParam));

if FormatResult < Length(FormatStr) then// В случае ошибки значение функции

// меньше длины шаблонной строки

begin

TargetString := '';

Result := False;

end

else

result := True;

end;

Пример использования:

 

uses Dialogs, ...;

...

var

S: AnsiString;

...

begin

...

if WinFormat(S) then

ShowMessage(S)

else

ShowMessage('An error has been occured!');

if SimpleWinFormat(S) then

ShowMessage(S)

else

ShowMessage('An error has been occured!');

...

end;

...

Code:

{ **** UBPFD *********** by delphibase.endimus ****

>> Повтор строки заданное количество раз

 

Input - строка для повторения

Rep - количество повторений

 

Строка на выходе это входная строка повторенная Rep раз.

 

Зависимости: Стандартные модули

Автор: Ru, DiVo_Ru @ rambler.ru, Одесса

Copyright: DiVo 2002 creator Ru (по мотивам функции Str из Word Basic)

***************************************************** }

 

function MulStr(Input: string; Rep: integer): string;

var

i: integer;

begin

for i := 0to Rep - 1do

result := result + Input;

end;

Пример использования:

 

s1 := 'Привет';

s := MulStr(s1, 3);

 

// результат:

s := 'ПриветПриветПривет';

 

Code:

{ **** UBPFD *********** by delphibase.endimus ****

>> удаление лишних пробелов в строке

 

удаляет из строки лишние пробелы без использования всяких указателей и т.д.

 

Зависимости: стандартные модули

Автор: Артем, boss1999 @ mail.ru, москва

Copyright: собственное описание (Артем)

 

***************************************************** }

 

{процедура удаления лишних пробелов в строке (см. function Sha_SpaceCompress)}

var

c, i: integer;

stt, st, st1: string;

begin

c := 0;

st := edit1.Text;

 

for i := 1to Length(st) do

begin

 

stt := copy(st, i, 1);

if (stt = ' ') and (c >= 1) then

begin

st1 := st1;

c := c + 1;

end

elseif (stt = ' ') and (c = 0) then

begin

c := c + 1;

st1 := st1 + stt;

end

elseif (stt <> ' ') then

begin

c := 0;

st1 := st1 + stt;

end

end;

 

edit2.text := st1;

end;

 


Code:

Function DeleteUselessSpaces(s:String):string;

{©Drkb v.3(2007): www. drkb .ru, 

®Vit (Vitaly Nevzorov) - nevzorov @ yahoo.com}

begin

Repeat

Result:=s;

s:=StringReplace(Result,' ',' ',[rfReplaceAll]); //заменяем все двойные пробелы на одинарные

Until Result=s; //повторяем до тех пор пока есть двойные пробелы

end;