Лекція №7
З курсу: «Застосування засобів ООП в лінгвістичних задачах»
5. Функції для роботи з стрічками в Delphi.
Результатом стрічкового виразу є стрічка символів. Для стрічок можна
виконувати операцію +, яка виконує об’єднання (конкатенацію) стрічок, а
також настіпні функції:
• Length (S): integer — визначення довжени стрічки S;
procedure TForm1.Button1Click(Sender:
TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s0 := Edit1.Text;
//s1 := Edit2.Text;
n:= Length(s0);
//Label1.Caption := IntToStr(n);
Memo1.Lines.Add(IntToStr(n));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Label1.Caption := '';
for i := 1 to Length(Edit1.Text) do
begin
try
Label1.Caption := Label1.Caption + IntToHex(Edit1.Text[i],2) + ' ';
except
Beep;
end;
end;
end;
• Copy(S; Index, Count: Integer): String—
виділення з стрічки S підстрічки довжиною count
символів. Підстрічка виділяє, починаючи з символа
в позиции index;
procedure TForm1.Button1Click(Sender:
TObject);
var
i,n: Integer;
s0,s1: string;
begin
s0 := Edit1.Text;
s1 := Copy(s0,9,6);
//Label1.Caption := IntToStr(n);
Memo1.Lines.Add(s1);
end;
• Pos(Substr: String; S: String): Integer — Визначення
позиції(номера) символа, починаючи з якого підстрічка substr входить
в стрічку s, при цьому шукає перше входження. Якщо підстрічка не
знайдена, то повертається нуль и процедури:
procedure TForm1.Button1Click(Sender: TObject);
var
i,n: Integer;
s0,s1: string;
begin
s0 := Edit1.Text;
s1 := Edit2.Text;
n:= Pos(s1,s0);
//Label1.Caption := IntToStr(n);
Memo1.Lines.Add(IntToStr(n));
end;
• Insert(Source: String; var S: String; Index: Integer) — вставка
стрічки source в строку S, починаючи з позиції Index;
procedure TForm1.Button1Click(Sender:
TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s0 := Edit1.Text;
s1 := Edit2.Text;
insert(s0,s1,9);
//Label1.Caption := IntToStr(n);
Memo1.Lines.Add(s1);
end;
• Delete(var S: String; Index, Count:
Integer) — видалення з стрічки S підстрічки символів довжиною Count,
починаючи з позиції Index;
procedure TForm1.Button1Click(Sender:
TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s0 := Edit1.Text;
//s1 := Edit2.Text;
Delete(s0,9,6);
//Label1.Caption := IntToStr(n);
Memo1.Lines.Add(s0);
end;
• Val(S; var V; var Code: Integer) — перетворення стрічки S в стрічку
ЧИСЛО V. Тип числа залежить від представлення числа в стрічці.
Параметр code повертає код результата операції, якщо операція
виконан успішно, то повертається значення нуль;
procedure TForm1.Button1Click(Sender: TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s0 := Edit1.Text;
val(s0,n,i);
Memo1.Lines.Add(IntToStr(n));
end;
• Str(x [: width [: Decimals ]]; var s) — перетворення значення
чисельного виразу х в стрічку s.
procedure TForm1.Button1Click(Sender: TObject);
var
i,n: Integer;
s0,s1,s2: string;
n1:real;
begin
// Str(610:2,s0);
// Memo1.Lines.Add(s0);
// s0 := Edit1.Text;
n1:= 610.354;
Str(n1:2,s0);
Str(n1:5:2,s0);
Memo1.Lines.Add(s0);
end;
• Concat(s1, s2, s3, ….sm) – Стрічки s1+s2+s3+ ….+sm
записуються одна за одною. Якщо результат перевищує 255
символів, стрічка закінчуеться(обривається).
procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
n1: Real;
s0,s1,s2,s3: String;
begin
s0 := Edit1.Text;
s1 := Edit2.Text;
s2 := Edit3.Text;
s3 := Concat(s0,s1,s2);
Memo1.Lines.Add(s3);
end;
Крім перерахованих підпрограм, велика кількість процедур і функцій
для работы з стрічками міститься в модуле Sysutiis. Це наступні функції:
• IntToStr (Value: integer): string —
перетворення значення цілочисленного виразу
value в стрічку;
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
J: Integer;
begin
I := StrToInt(Edit1.Text);
J := StrToInt(Edit2.Text);
ShowMessage(IntToStr(I + J));
end;
• StrToInt (const s: string) : integer —
перетворення стрічки s в ціле число;
procedure TForm1.Button1Click(Sender: TObject);
begin
try //trai
Label1.Caption := IntToStr(StrToInt(Edit1.Text) *
StrToInt(Edit2.Text));
except
ShowMessage('You must specify integer values.
Please try again.');
end;
end;
• FloatToStr(Value: Extended): string —
перетворення значення дійсного виразу value в
стрічку;
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c: Real;
s0: string;
begin
a := StrToFloat(Edit1.Text);
b := StrToFloat(Edit2.Text);
c := a*b/25;
Memo1.Lines.Add(FloatToStr(c));
end;
• StrToFloat (const s: string): Extended— перетворення стрічки s в
дійсне число;
• DateToStr (Date: TDateTime) : String— перетворення Значення
дати в виразу Date в стрічку;
procedure TForm1.Button1Click(Sender: TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s0 := DateToStr(Date);
//s1 := Edit2.Text;
//n:= Length(s0);
//Label1.Caption := IntToStr(n);
Memo1.Lines.Add(s0);
end;
• TimeTostr(Time: TDateTime): string — перетворення значення
часу в виразі Time в строку;
procedure TForm1.Button1Click(Sender: TObject);
var
DateTime : TDateTime;
str : string;
begin
DateTime := Time; // store the current
date and time
str := TimeToStr(DateTime); // convert the
time into a string
Caption := str; // display the time on the form's caption
{ Note This could have been done with the following line of code:
Caption := TimeToStr(Time); }
end;
• StrToDate (const S: String): TDateTime —
перетворення стрічки S в дату;
procedure TForm1.Button1Click(Sender:
TObject);
var
ADate: TDateTime;
days: array[1..7] of string;
begin
days[1] := 'Sunday';
days[2] := 'Monday';
days[3] := 'Tuesday';
days[4] := 'Wednesday';
days[5] := 'Thursday';
days[6] := 'Friday';
days[7] := 'Saturday';
ADate := StrToDate(Edit1.Text);
ShowMessage(Edit1.Text + ' is a ' + days[DayOfWeek(ADate)]);
end;
• StrToTime (const S: String) : TDateTime — перетворення стрічки S в
час;
procedure TForm1.Button1Click(Sender: TObject);
var
ATime: TDateTime;
begin
ATime := StrToTime(Edit1.Text);
if ATime < 0.50 then
ShowMessage('Good Morning')
else
ShowMessage('Good Afternoon');
end;
• Uppercase (const S: String): String —
перетворення символів стрічки s до верхнього
регістру;
procedure TForm1.Button1Click(Sender:
TObject);
var
s0,s1: string;
begin
s0:= 'Borland Delphi';
label1.Caption := Uppercase(s0);
end;
• Lowercase (const S: String): String — перетворення символів
стрічки s до нижнього регістру;
procedure TForm1.Button1Click(Sender:
TObject);
var
s0,s1: string;
begin
s0:= 'Borland Delphi';
label1.Caption := Lowercase (s0);
end;
• Trim(const s: string) : string — видалення з початку і кінця стрічки
s пробiлів та управляючих символів;
procedure TForm1.Button1Click(Sender:
TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s1 := Edit1.Text + #13#10;
s0:= Trim(s1);
Memo1.Lines.Add(s0);
end;
• TrimLeft(const S: String): String — видалення пробiлів та
управляючих символів з початку стрічки s;
procedure TForm1.Button1Click(Sender: TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s1 := #13#10+Edit1.Text + #13#10;
s0:= TrimLef(s1);
Memo1.Lines.Add(s0);
end;
• TrimRight(const S: String): String — видалення пробілів та
управляючих символів в кінце стрічки s.
procedure TForm1.Button1Click(Sender: TObject);
var
i,n: Integer;
s0,s1,s2: string;
begin
s1 := Edit1.Text + #13#10;
s0:= TrimRight (s1);
Memo1.Lines.Add(s0);
end;
Питання:
Література:
1. Архангельский А.Я. Программирование в Delphi. Учебник по
классическим версиям Delphi. 2006 г. - 1152 с.
2. Архангельский А.Я. Delphi 2006. Справочное пособие: язык
Delphi, классы, функции Win32 и .NET, 2006 г. - 1152 с.
3. Архангельский А.Я. Приемы программирования в Delphi на
основе VCL, 2006 г. - 944 с.
4. Архангельский А.Я. Программирование в Delphi для Windows.
Версии 2006, 2007, Turbo Delphi, 2007 г. - 1248 с.
5. Гофман В. Э., Хомоненко А. Д. Delphi. Быстрый старт. — СПб.:
БХВ-Петербург, 2003. — 288 с: ил.
6. Шупрута В.В. Delphi 2005. Учимся програмировать.
7. Тейксейра Стив, Пачеко Ксавье. Borland Delphi 6. Руководство
разработчика.