КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Interface. StringGridl: TStringGrid;
Type TForm1 = class(TForm) Panel1: TPanel; Button1: TButton; BitBtnl: TBitBtn; StringGridl: TStringGrid; procedure Button1Click (Sender: TObnect); end; Form1: TForm1; implementation Procedure TForm1.Button1Click (Sender: TObject);
x:array [l..n] of real =(0.2,0.7,1 var i:integer; begin for i:=l to n do StringGridl.Cells[0,i]:=IntToStr(i)+’ элемент’; StringGridl.Cells[1,0]: = ' x’; StringGridl.Cells[2,0]: = ' x’; for i:=l to n-do begin StringGridl.Cells[l,i]: = FormatFloat(' StringGridl.Cells[2,i]: = FormatFloat(' 0.0000’, cos(x[i])); end; end; end. СТРОКИ В Delphi существует 5 типов строк: • ShortString - короткая строка; • AnsiString - длинная строка; • WideString - длинная строка в кодировке UNICODE; • String - универсальная строка; • PChar - строка, оканчивающаяся нулевым кодом (#0), введена для со Переменная PChar - это ссылка на строку. Строки типа PChar размещаются в динамической памяти. Динамическая память - это свободная память, которая остается после загрузки программ и данных. Программный элемент получает ее в процессе выполнения программы, а не на этапе компиляцщ! (статическая память). Переменная типа PChar - это ячейка памяти, содержа! щая адрес строки. По этому адресу записываются необходимые данные. Компилятор выделяет под переменную PChar всего 4 байта, а сама строка. которая размещается по адресу, записанному в эти 4 байта, может быть любой длины. Если строки не существует, а переменная PChar объявлена, то J эту переменную необходимо записать nil (пустой адрес). Переменные типа AnsiString содержат динамические строки символов в ANSI-кодировке. Соответственно переменные типа WideString содержат динамические строки символов в кодировке UNICODE. Термин "динамические" означает, что переменные указанных типов, как и тип PChar, являются] адресами, т.е. ссылками на память с соответствующим типом данных. ShortString - это фактически массив: array [0..255] of char. Память в данном случае выделяется в 256 байт, а строка размещается динамически, т.е. через адрес. Символы строки содержатся в байтах с первого по 255. В байте с номером 0 содержится символ, порядковый номер которого представляет собой число фактически имеющихся в строке символов. Данный тип ShortString введен для совместимости с более ранними версиями языка Pascal. Строка String в зависимости от директивы компилятора {$Н} может совпадать с AnsiString ({$H+} установлено по умолчанию) или с ShortString({$H-}). Для строки String можно задавать максимальное количество символов с помощью следующего объявления; var str: string{25];, т.е. строка str может содержать не более 25 символов и в памяти она занимает 26 байт (не считая "накладных расходов"). Доступ к строке может осуществляться посимвольно, так как все символы в строке проиндексированы. В строке PChar символы нумеруются начиная с 0, в остальных строках - начиная с 1. Например, пусть объявлено: Var strl: string; str2: PChar; и выполнены присваивания: I strl:=' Pascal'; str2:= ' Pascal'; тогда atr[l] представляет символ! ЧР', a str2 [1] -символ *а'. Co строками возможны операции конкатенации (сложения) и сравнения. Складываются строки, используя знак '+'. При сравнении строк действия выполняются слева направо в соответствии с ANSI-кодами отдельных символов. Например, код А меньше, чем а. Если строки разной длины, то короткая строка дополняется справа, причем код, который участвует в дополнении строки, меньше кода любого символа, существующего в ANSI-кодировке. Если в операциях участвуют строки разного типа, то очень часто необходимо явное преобразование типов. Для выполнения различных операций над строками существует множество подпрограмм (табл. 11).
ПРИМЕР ПРИЛОЖЕНИЯ 9 Провести исследование различных видов диалоговых окон вывода сообщений. Для отображения сообщений существует пять основных диалоговых окон. ShowMessage отображает статические сообщения. Это диалоговое окно отображает в центре экрана строку текста и кнопку "ОК" (рис. 24). Вызывается посредством использования процедуры ShowMessage(S), где S - строка типа String. ShowMessagePos (рис. 25) предназначено для тех же целей, что и ShowMessage. При вызове, кроме строки текста, процедуре необходимо передать экранные координаты X и Y расположения этого окна.
Ряс. 24 В отличие от предыдущих диалоговых окон, MessageBox (рис. 26) позволяет задавать две строки: заголовок окна и поясняющий текст. Программно вызов оформлен в виде функции. Эта функция возвращает то значение, на какой кнопке щелкнул пользователь. Число отображаемых кнопок может быть одна или более и задается с помощью аргумента, представляющего собой набор предопределенных констант. Передаваемые в функцию строки заголовка и текста должны иметь тип PChar. Если эти строки типа String, то необходимо использовать преобразование типов, записывая Р = =PChar(S), где Р типа PChar, a S - String
Рис. 26 Рис. 27 Функция MessageDlg имеет 4 аргумента: первый передает текст в виде строки типа String, второй - вариант заголовка, третий - какие кнопки будут отображаться, четвертый позволяет организовать связь с файлом подсказки Help.
Как и в случае предыдущего окна, функция возвращает, на какой кнопке щелкнул пользователь. Окно MessageDlg располагается в центре экрана. MessageDlgFos (рис. 28) является вариантом MessageDlg с той лишь разницей, что этому виду диалогового окна необходимо передавать координаты X и Y его расположения на экране. Форма примера 9 представлена на рис. 29. Рис. 29 Для реализации локального меню выбора варианта диалогового окна использовался компонент TRadioGroup - группа взаимосвязанных переключателей TRadioButton. С помощью свойства Items создается список взаимоисключающих альтернатив, в данном случае из пяти строк, для каждой из которых создаете* переключатель. При выборе мышью (или стрелками) того или иного переключателя в списке фиксируется строка и ее номер, который позволяет в программе обеспечить выполнение того или иного кода. Выбранный номер чаписывается в свойстве Itemlndex. Нумерация переключателей задается от ля. Переключатели можно располагать не только в один, но и в несколько столбцов. Число столбцов задается в свойстве Columns. С помощью свойства Caption можно задавать заголовок всей группе взаимозависимых переключателей. Строки меню заносятся в список. Вызывая в инспекторе объектов свойство Items, можно набрать пять строк, а значение Itemlndex установить, например, равным 3. Для данного компонента необходимо создать обрабочик OnCHck. Текст программы приводится ниже. В данном примере имя формы (Name) выбрано MainForm, соответственно порождающий эту форму класс имеет имя TMainForm. unit Prim9; uses SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Buttons; type TMainForm = class (TForm) RadioGroupl: TRadioGroup; Bevell: TBevel; Label1: TLabel; BitBtnl: TBitBtn; procedure RadioGrouplClick (Sender: TObject); end; var MainForm: TMainForm; imp1ementa tion {$R *.DFM} procedure TMainForm.RadioGrouplClick(Sender: TObject); const sde=’Демонстрация '; sbi='Было выбрано’; var TheText,TheCaption: String; S: String[6]; W: Word; X, Y: Integer; begin case RadioGroupl.Itemlndex of 0: ShowMessage(sde+'ShowMessage'); 1:begin X:= 50; Y:= 60; ShowMessagePos (sde+'ShowMessagePos',X,Y); end; 2: begin TheText:= 'Текст-пояснение к MessageBox'; TheCaption:- sde+'MessageBox '; if Application. MessageBox (PChar(TheText), PChar(TheCaption),MB_DEFBUTTON1 + MB_ICONEXCLAMATION + MB_OKCANCEL) = IDOK then ShowMessage(sbi+'OK') else ShowMessage(sbi+'Cancel'); end; 3:begin W:= MessageDlg(sde+'MessageDlg' [mbYes, mbNo, mblgnore],0); case W of mrYes: S:= 'Yes'; 4:begin X:= 50; Y:= 75; W:= MessageDlgPos (sde+'MessageDlgPos', mtWarning,mbAbortRetryIgnore, 0, X, Y); case W of mrAbort: S:= 'Abort'; mrRetry: S:= 'Retry'; mrlgnore: S:= 'Ignore'; end; {case} ShowMessage(sbi + S); end; end; {case} end; end. В программе при объявлении строки s задана максимальная длина при-сваимого ей значения, равная 6 символам. Аргумент функции MessageDlg, заданный в квадратных скобках, означает, что с помощью конструктора множества передается некоторое заданное множество. ЗАПИСИ (ОБЪЕДИНЕНИЯ) С помощью зарезервированного слова "record" в единой структуре можно объединить данные разных типов. Общий синтаксис объявления такого объединения следующий: Туре <имя типа> = Record <СПисок полей>: <тип>; <Список полей>:
туре Complex = record Re, Im: real; end;
Data = record Year:word; Month: 1..12;
Day: 1..31; end; Person = record Name: string[40]; Age: word; Adres: string[80]; end;. Количество памяти, выделяемой под запись, может быть различным в зависимости от директивы {$А} (выравнивание). Если установлено {$А+}, то поля выравниваются по четным адресам - уменьшается время доступа к переменной в памяти. По умолчанию установлено {$А-}. Перед ключевым словом "record" можно добавить слово "Packed". В этом случае под запись выделяется минимальное количество байт, причем директива {$А} игнорируется. После объявления типа можно объявить переменные или типизированные константы, например, Var Z: Data; X: Complex; Const Birthday: Data=(Year:197 4 ;Month:7; Day: 12); Petrov:Person= (Name:' Иван'; Age:22; Adres: 'Новомосковск,Мира,20,3'); Доступ к полям записи в программе осуществляется следующим способом: 2.Year:=1969; {Z - селектор записи; Year - поле}. Z.Month:=7; Z.Day:=13; X.Re: 0.8; X.Im: 2.1; Z.Month:= Z.Day div 5+2; Тип данных запись может иметь так называемую вариантную часть. Вариантная часть позволяет трактовать по-разному занимаемую полями одну и ту же память.
Дата добавления: 2014-12-29; Просмотров: 397; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |