
Этот урок будет полезен для начинающим программистам которые хотят знать, как пользоваться функцией Copy и Pos. Для этого я решил привести несколько примеров на Delphi
К примеру вам нужно вытащить из email только логин, для этого:
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2, str3: string;
P: Integer;
begin
str1 := '[email protected]'; // Наш пример email адреса
str2 := '@'; // До этого символа мы будем потом вырезать логин
P := Pos(str2, str1) - 1; // Узнали длину строки от начала до символа '@'. В нашем примере это будет 11
str3 := Copy(str1, 0, P); // Теперь в переменной str3 хранится наш логин без '@mail.ru'
Label1.Caption := str3; // Выводим результат
end;
var
str1, str2, str3: string;
P: Integer;
begin
str1 := '[email protected]'; // Наш пример email адреса
str2 := '@'; // До этого символа мы будем потом вырезать логин
P := Pos(str2, str1) - 1; // Узнали длину строки от начала до символа '@'. В нашем примере это будет 11
str3 := Copy(str1, 0, P); // Теперь в переменной str3 хранится наш логин без '@mail.ru'
Label1.Caption := str3; // Выводим результат
end;
Пример выше служит только для разъяснения, его можно написать чуть короче:
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2: string;
begin
str1 := '[email protected]';
str2 := '@';
Label1.Caption := Copy(str1, 0, Pos(str2, str1) - 1);
end;
var
str1, str2: string;
begin
str1 := '[email protected]';
str2 := '@';
Label1.Caption := Copy(str1, 0, Pos(str2, str1) - 1);
end;
Но что если нам нужно узнать не логин а домен? Для этого нам понадобится функция Length:
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2, str3, str4: String;
P: Integer;
begin
str1 := '[email protected]';
str2 := '@';
P := Pos(str2, str1); // Узнали длину строки от начала до символа '@'
str3 := IntToStr(Length(str1)); // В переменной str3 хранится длина строки нашего email
str4 := Copy(str1, P + 1, StrToInt(str3)); // Здесь мы при помощи Copy делаем вот что:
// str1 - в этой переменной будет происходить действия
// P + 1 - в P хранилась длина строки от начала до символа '@' и + 1 - значит исключаем этот символ
// StrToInt(str3) - длина всей строки
// В итоге функция Copy в переменной str1 вычисляет от переменной P+1 и до конца всей строки, то есть до StrToInt(str3) и запишет в переменную str4 уже готовый наш домен
Label1.Caption := str4; // Выводим результат
end;
var
str1, str2, str3, str4: String;
P: Integer;
begin
str1 := '[email protected]';
str2 := '@';
P := Pos(str2, str1); // Узнали длину строки от начала до символа '@'
str3 := IntToStr(Length(str1)); // В переменной str3 хранится длина строки нашего email
str4 := Copy(str1, P + 1, StrToInt(str3)); // Здесь мы при помощи Copy делаем вот что:
// str1 - в этой переменной будет происходить действия
// P + 1 - в P хранилась длина строки от начала до символа '@' и + 1 - значит исключаем этот символ
// StrToInt(str3) - длина всей строки
// В итоге функция Copy в переменной str1 вычисляет от переменной P+1 и до конца всей строки, то есть до StrToInt(str3) и запишет в переменную str4 уже готовый наш домен
Label1.Caption := str4; // Выводим результат
end;
Этот пример так же был для описания действий, вот наиболее короткий пример:
procedure TForm1.Button1Click(Sender: TObject);
var
str1, str2: String;
begin
str1 := '[email protected]';
str2 := '@';
Label1.Caption := Copy(str1, Pos(str2, str1) + 1, Length(str1));
end;
var
str1, str2: String;
begin
str1 := '[email protected]';
str2 := '@';
Label1.Caption := Copy(str1, Pos(str2, str1) + 1, Length(str1));
end;
На этом пожалуй всё, если будут вопросы по функциям Copy и Pos то пишите в этом уроке. Удачи!