FAQ VCL
Операции над строками

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как перевести строку в верхний регистр?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
begin
   Caption := UpperCase( Caption );
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
begin
   Caption := AnsiUpperCase( Caption );
end;

// Способ третий
procedure TForm1.Button1Click(Sender: TObject);
begin
   Caption := AnsiUpper( PChar( Caption ) );
end;


Как перевести строку в нижний регистр?

// Способ первый
procedure TForm1.Button1Click(Sender: TObject);
begin
   Caption := LowerCase( Caption );
end;

// Способ второй
procedure TForm1.Button1Click(Sender: TObject);
begin
   Caption := AnsiLowerCase( Caption );
end;

// Способ третий
procedure TForm1.Button1Click(Sender: TObject);
begin
   Caption := AnsiLower( PChar( Caption ) );
end;


Как перевести символ в верхний регистр?

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage( UpCase( 'a' ) );
end;


Как скопировать часть строки?

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := 'Часть этой строки будет скопирована';
   ShowMessage( Copy( s, 1, 17 ) );
end;


Как удалить часть строки?

procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
begin
   s := 'Часть этой строки будет удалена';
   Delete( s, 18, Length( s ) );
   ShowMessage( s );
end;


Как создать строку, разделяемую символом табуляции с помощью функции формат?

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage( Format( '%s'#9'%s', ['Колонка1', 'Колонка2'] ) );
end;


Как объединить две строки типа PChar?

procedure TForm1.Button1Click(Sender: TObject);
var
  p1, p2: PChar;
  s: string;
begin
   GetMem( p1, 9 * SizeOf( Char ) );
   GetMem( p2, 14 * SizeOf( Char ) );
   StrPCopy( p1, 'Delphi 6' );
   StrPCopy( p2, ' Professional' );
   StrCat( p1, p2 );
   s := p1;
   ShowMessage( s );
   FreeMem( p1 );
end;


Как перевести в верхний регистр символ русского алфавита?

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage( UpCaseRus( 'ё' ) );
end;


Как перевести в нижний регистр символ русского алфавита?

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage( LoCaseRus( 'Ё' ) );
end;


Как перекодировать строку Oem (DOS 866) в Ansi (Win1251) и обратно?

// Способ первый
// Конвертирует строку из кодировки Windows в DOS кодировку
function WinToDos( const s: string ): string;
begin
   SetLength( Result, Length( s ) );
   if Length( s ) <> 0 then
      CharToOem( PChar( s ), PChar( Result ) );
end;

// Конвертирует строку из кодировки DOS в Windows кодировку
function DosToWin( const s: string ): string;
begin
   SetLength( Result, Length( s ) );
   if Length( s ) <> 0 then
      OemToChar( PChar( s ), PChar( Result ) );
end;

// Способ второй
// Конвертирует строку из кодировки Windows в DOS кодировку
function WinToDos( const s: string ): string;
var
  b: TBytes;
begin
   b := BytesOf(s);
   b := TEncoding.Convert(TEncoding.GetEncoding(1251), TEncoding.GetEncoding(866), b);
   Result := StringOf(b);
end;

// Конвертирует строку из кодировки DOS в Windows кодировку
function DosToWin(s: string): string;
var
  b: TBytes;
begin
   b := BytesOf(s);
   b := TEncoding.Convert(TEncoding.GetEncoding(866), TEncoding.GetEncoding(1251), b);
   Result := StringOf(b);
end;

При использовании материала - ссылка на сайт обязательна