Вопрос № 149644: Добрый день Вам уважаемые эксперты. Только начал изучать Delphi. Покажите пожалуйста стандартную пошагововую процедуру создания класса, методов, полей и т.д. с среде Delphi 7, желательно с комментариями. Спасибо. ...
Вопрос № 149681: здраствуйте!!! помогите написать программы пожалуйста!1. нужно разработать приложение для ввода результатов сессии. Организуйть табличный ввод, используя компонент TSringGrid. Предусмотрить
запись результатов в текстовый файл на диск. 2.П...Вопрос № 149686: Здравствуйте! Подскажите пожалуйстак как в Delphi объявить класс, простой класс с несколькими полями и методами. Спасибо!...
Вопрос № 149.644
Добрый день Вам уважаемые эксперты. Только начал изучать Delphi. Покажите пожалуйста стандартную пошагововую процедуру создания класса, методов, полей и т.д. с среде Delphi 7, желательно с комментариями. Спасибо.
Отправлен: 06.11.2008, 12:51
Вопрос задал: Compile (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: sir Henry
Здравствуйте, Compile! Класс - это условно говоря шкаф, в котором хранятся определённые сведенния (данные) и методы обработки этих самых данных. Данные обычно скрыты от непосредственного использования и к ним можно обращаться только через методы обработки или свойства класса. Класс бывает сам по себе. Тогда его объявляют таким образом:
Код:
TMyClass = class
но такое случается редко, потому что в таком голом классе только самый минимум методов по работе с данными. Чаще бывает, что класс делают на основе другого класса, т.е. класса-предка, у которого есть уже необходимый набор методов, но чего-то специфического ему не хватает и на основе класса-предка делают класс-потомок:
Код:
TMyClass = class(TStringList)
Здесь класс MyClass это наследник стандартного класса TStringList. Чего может не хватать у стандартного класса TStringList? Ну, например, перекодировки хранимых строк из кодировки Windows в кодировку DOS. Нужно добавить соответствующий метод. В этом случае создание класса будет выглядеть
так:
Код:
Uses Windows, Classes;
Type TMyClass = class(TStringList) public //public - это значит что всё, что следует за этим словом могут использовать как сам класс, так и его последователи procedure
ToDOS; end; //Объявление класса заканчивается словом end
//А здесь пойдёт реализация нового метода procedure TMyClass.ToDOS; Var temp: PChar; Begin temp:=GetText; //Получаем текст в переменную типа PChar методом класса-предка CharToOem(temp, temp); //Преобразовываем текст в переменной в DOS кодировку SetText(temp); //Запихиваем текст обратно в класс методом класса-предка End; End;
Пример использования
см. в Приложении Пример №1. А что делать, если нам нужно хранить текст одновременно и в той и в этой кодировке? Ничего не попишешь, придётся содавать класс без предка. Смотрим в Приложении Пример №2. Что у нас изменилось? В секции private появились две системы для хранения данных - для текста Windows и для текста DOS. Поскольку это классы, то нужно предусмотреть их создание. Для этого
в своём классе мы вводим новый метод-конструктор класса Create. Он расположен в секции public, потому что созданием экземпляра класса занимается прикладная программа, а не абы кто. В секции private появились две новые функции: function IfTextWindowsNotEmpty: boolean; function IfTextDosNotEmpty: boolean; Они занимаются проверкой, не пуста ли текстовая строка перед преобразованием её в другую кодировку, чтобы не делать лишнюю работу и предупредить пользователя, что он забыл
текст загрузить. Эти функции спрятаны от глаз основного приложения (в секцию private), потому что нигде, кроме как внутри нашего класса они применятся не должны. Да и не за чем это делать. В секцию public добавлен метод переделки текста из кодировки DOS в кодировку Windows. Так, на всякий случай, для комплиментарности перекодировки. В секцию public добавлен новый метод-деструктор Des
troy. Его задача удалить из памяти все динамические структуры данных (а у нас это два StringList'а) в случае удаления из памяти самого нашего класса. Как этот новый класс можно применять? У класса TStringList есть хороший и нужный метод - загрузка текста из файла: TStringList.LoadFromFile('Имя_файла.txt'); и выгрузки текста в файл: TStringList.SaveToFile('Имя_файла.txt'); Так что класс этот можно применять для перекодировки текстовых файлов.
Приложение:
Ответ отправил: sir Henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 09.11.2008, 10:22
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 234865 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Вот такого ответа я ждал, спасибо Вам большущее за предоствленную помощь.
Вопрос № 149.681
здраствуйте!!! помогите написать программы пожалуйста!1. нужно разработать приложение для ввода результатов сессии. Организуйть табличный ввод, используя компонент TSringGrid. Предусмотрить запись результатов в текстовый файл на диск.
2.По нажатию на кнопку один список (ListBox) заполняется последовательностью целых чисел от .. до .., диапазон задается в двух полях ввода. Выбор элемента в этом списке копирует его в другой список (ListBox). Еще одна кнопка служит для очистки списков. Причем выбор
очищаемого списка осуществляется с помощью переключателей (RadioButton).
Отвечает: Шичко Игорь
Здравствуйте, К. Екатерина А.! Разместите на форме следующие элементы: StringGrid1: TStringGrid; Add: TButton; {добавление строки в таблицу} Add_To_File: TButton; {вывод таблицы в файл} Edit1: TEdit; Edit2: TEdit; ListBox1: TListBox; ListBox2: TListBox; Add_List_1: TButton; {заполнение листа 1} RadioGroup1: TRadioGroup; Clear_Spis: TButton; {очистка списков} Перенос из листа 1 в лист 2 по двойному нажатию на строку Листа 1. В
Инспекторе объектов для StringGrid1 раздел Options свойство goEditing установите в TRUE. В Инспекторе объектов для ListBox1 обработка события OnDblClick процедура ListBox1DblClick Коды для обработки событий в приложении.
Приложение:
Ответ отправил: Шичко Игорь (статус: Студент)
Ответ отправлен: 07.11.2008, 07:48
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 234641 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 149.686
Здравствуйте! Подскажите пожалуйстак как в Delphi объявить класс, простой класс с несколькими полями и методами. Спасибо!
Отправлен: 06.11.2008, 19:05
Вопрос задал: Compile (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Кэр Лаэда
Здравствуйте, Compile!
вот пример простого класса
если есть вопросы задавайте в минифорум
Код:
unit Unit2;
interface uses Dialogs; type
TMyClass = class
private FpublicProp1: string;
procedure privateA1;
//сетер
для свойства procedure SetpublicProp1(const Value: string);
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.