Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
{ . . . }
Type PClass4 = ^Class4;
Var P: PClass4;
{ . . . }
Begin P:= New(PClass4, Init(4));
{ . . . }
Dispose(P, Done);
End;
Именно здесь мы впервые встретились с возможностью с помощью одной и той же переменной получить доступ к объектам различных классов. Действительно, в зависимости от хода алгоритма указателю P может быть присвоено значение адреса как объекта класса Class4, так и адреса объекта класса-наследника от Class4.
Перекрытие методов
Перекрыть метод предка в классе наследнике очень просто: продекларировать метод с тем же именем.
Type Class5 = Object(Class1)
Procedure Nothing;
End;
При этом если перекрывается метод виртуальный, то перекрывающий метод тоже обязан быть виртуальным и, кроме того, иметь тот же список параметров. Если требование объявлять перекрывающий метод виртуальным введено, вероятно, для того, чтобы программист не забывал о его унаследованной виртуальности (компилятор вполне в состоянии самостоятельно определить, является ли перекрываемый метод витруальным), то второе - требование одинаковости списка параметров - насущно необходимо: при вызове виртуального метода для любого объекта любого класса-наследника компилятор может генерировать код передачи одинакового списка параметров - ведь заранее неизвестен реальный тип объекта.
Контрольные вопросы
Наследование Для чего предназначены конструкторы? Назначение деструкторовСРСП № 7
Тема: Создание проектов с использованием символов и строк
Цель: знать основные функции для работы с символами и строками
Сегодня мы с вами разберемся, как в Delphi можно работать со строками, мы рассмотрим ряд функций и процедур которые пришли к нам еще из самого Pascal. Некоторые из них есть только в Object Pascal. Ну что же приступим, для начала разберемся, как можно переводить строку в число и обратно. Для этого используются функции IntToStr – для перевода числа в строку и StrToInt – для перевода строки в число. Вот пример:
var
a, b:Integer;
str:string;
begin
a:=5;
b:=1;
str:=IntToStr(a+b);
ShowMessage(str);
end;
Ну а противоположную функцию можно смело использовать например если вы хотите преобразовать строку лежащую, например в компоненте TEdit. Вот пример:
var
a:Integer;
begin
a:=StrToInt(Edit1.Text)+StrToInt(Edit2.Text);
Edit3.Text:=IntToStr(a);
end;
Следующая функция, которую мы рассмотрим, определяет длину строки. Это функция Length (str), где str это строка, которую мы должны измерить.
var
a:Integer;
str:string;
begin
str:='Hello World!';
a:=Length(str);
end;
В переменной а будет хранится число 12, именно столько символов, включая пробел содержит строка ‘ Hello World!'.
Следующая процедура Delete ( str, index, count ) – она удаляет количество count символов начиная с index в строке str. Ловите пример
var
str:string;
begin
str:='Hello World!';
Delete(str,6,7);
ShowMessage(str);
end;
На экран будет выведено слово Hello. Следующая функция Insert ( substr, str, index ) – эта функция вставляет подстроку substr в строку str, начиная с index. Например, давайте представим строку ‘ my girlfriend ' и давайте преобразуем ее в строку ‘ my best girlfriend '.
var
str, substr:string;
begin
str:='my girlfriend';
substr:='best ';
Insert(substr, str,4);
ShowMessage(str);
end;
Следующая функция с которой мы познакомимся соединяет строки. Это Concat ( s 1, s 2,…). Вот практический пример:
var
str1,str2,str3:string;
begin
str1:='MU';
str2:=' versus';
str3:=' Arsenal';
str1:=Concat(str1,str2,str3);
ShowMessage(str1);
end;
В итоге в str 1 мы получили строку ‘ MU versus Arsenal '.
Теперь давайте научимся копировать из строки определенное количество символов. Для этого используется функция Copy. Итак, Copy ( str, index, count ) – нужно копировать количество символов count начиная с index из строки str. Пример :
var
str1,str2:string;
begin
str1:=' один два три ';
str2:=Copy(str1,6,3);
ShowMessage(str2);
end;
В итоге на экране появится строка два.
Теперь познакомимся с функцией Pos (str1, str2) которая возвращает число, например:
var
str1,str2:string;
i:Integer;
begin
str1:='Hello world';
str2:='world';
i:=Pos(str2,str1);
end;
После выполнения данного кода в переменной I будет хранится число 7. Именно с него начинается слово world в строке str1.
PosEx по сути функция очень похожая на предыдущую. PosEx (substr, str, x) – тут все по сути почти также как и в предыдущей, только поиск начинается с x символов.
Чтобы перевести вещественное число в строку надо использовать функцию FloatToStr, а если надо наоборот то StrToFloat. Но у этих двух функции есть аналоги – val b str. Сейчас на примерах мы рассмотрим как с ними работать.
Var
S: string;
X: Extended;
code: integer;
Begin
S:= ' 7 . 8 ';
Val(S, X, code);
End ;
Результатом этого кода будет то, что в переменной x будет хранится число 7,8. Для чего нам нужен code? Он выдает ноль если все в порядке или номер символа котолрый не является числом если произошла ошибка. Теперь обратный пример :
Var
S: string;
X: integer;
Begin
X:= 10 ;
Str(X, S);
End;
После этого кода в переменной S будет хранится строковое значение ‘10'.
Контрольные вопросы
Опишите предназначение каждой функцийСРСП № 8
Тема: Событийно-управляемое программирование
Цель: знать происхождение СУП
В 1991 году корпорация Microsoft представила компьютерному миру VISUAL BASIC. Правильно надо говорить не просто язык программирования, а среда программирования VISUAL BASIC.
Система программирования - это объединение языка программирования с системными программными средствами, которые обеспечивают создание и выполнение программы на этом языке.
Система программирования VISUAL BASIC позволяет, "отстранившись" от сложнейшей внутренней структуры Windows создавать в ней программы различной сложности.
VISUAL BASIC - один из первых языков, поддерживающий событийно управляемое программирование (event-driven programming). Программирование традиционно ориентировалось на поэтапное описание конкретного процесса, поэтому программный код во многом напоминал кулинарный рецепт. (Пример) Повар все делает сам, и нельзя забыть о какой-нибудь мелочи. С этим в кулинарии можно и смириться, хотя согласитесь, залить кипятком лапшу "Доширак" (приготовленную кем-то) если не вкуснее, так уж точно удобнее, а в некоторых случаях просто незаменимо. Но это в кулинарии, а уж при разработке современных компьютерных приложений всех "мелочей" не предусмотришь.
Отсюда и вытекает смысл событийно-управляемого программирования. Вместо скрупулезного описания каждого шага Вы лишь указываете, как реагировать на различные события (действия пользователя): выбор команды, щелчок мыши на каком-то определенном месте, перемещение мыши. На одни события можно предусмотреть реакцию, другие - просто игнорировать. Вы создаете не одну большую программу, а приложения Windows, состоящие из набора взаимодействующих микропрограмм (процедур), управляемых пользователем. С помощью VISUAL BASIC такое приложение можно разработать достаточно быстро и без глубоких профессиональных познаний и навыков. Кроме того, в среде Вы пользуетесь уже созданными элементами управления, как инструментами. Программы на языке VISUAL BASIC пишутся по большей части для того, чтобы управлять этими элементами.
Контрольные вопросы:
Что такое система программирования? Расскажите про язык программирования VISUAL BASIC?СРСП № 9
Тема: Управление техническими средствами через API.
Цель: знать как можно с помощью вызовов Windows API управлять объектами из VCL.
Разработчики библиотеки визуальных компонент (VCL) Delphi очень серьезно поработали над ее проектированием и воплощением в реальность. Как показывает практика, стандартного набора объектов обычно достаточно для создания реальных приложений. И, что более существенно, им (разработчикам) удалось решить очень сложную задачу, стоящую перед создателями любой среды визуального программирования - скрыть от программиста сложность и трудоемкость программирования в Windows и, в то же время, не лишать его возможности доступа к тем богатым возможностям системы, которые предоставляет Windows API.
Ниже рассмотрено несколько примеров, как с помощью вызовов Windows API можно управлять объектами из VCL.
Стандартная страница Палитры Компонент
Компоненты, расположенные на странице “Standard”, представляют из себя объектную оболочку для стандартных управляющих элементов Windows. Поэтому для них существуют ограничения, накладываемые самой системой. Например, 32Кб - максимальный размер текста в TMemo.
Для добавления в меню картинки можно использовать функцию API Windows SetMenuItemBitmaps(), например, следующим образом:
…
implementation
…
var
BMP1, BMP2 : TBitMap;
…
procedure TForm1.FormCreate(Sender: TObject);
begin
BMP1:=TBitMap. Create;
BMP1.LoadFromFile('c:\images\uncheck. bmp');
BMP2:=TBitMap. Create;
BMP2.LoadFromFile('c:\images\check. bmp');
SetMenuItemBitmaps(File1.Handle, 1, MF_BYPOSITION, BMP1.Handle, BMP2.Handle);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
BMP1.Free;
BMP2.Free;
end;
File1 это объект класса TMenuItem - пункт меню “File”. Значения параметров при вызове функции можно посмотреть в справочнике по Windows API.
При уничтожении меню освобождения связанных с ним картинок не происходит и их надо уничтожать вручную.
Вторая картинка BMP2 отображается рядом с пунктом меню, когда он выбран (Checked=True).
TMemo
Компонент класса TMemo может содержать до 32К текста (для Windows 3.x) вследствие ограничения Windows.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |


