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;

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