![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Код:
type TMyStr = record str: array of string; count: integer end; var MyStr: TMyStr; я заранее не знаю какой размерности будет массив строк, поэтому я каждый раз при добавлении элементов задаю ему длину setlength Код:
setlength(mystr,1); MyStr[0].str:= 'xexe'; MyStr[0].count:=1; Это не удобно. Как сделать чтобы был метод, как например у Tstrings add(string) ? чтобы я мог пользоваться такой конструкцией MyStr.add('xexe'); и метод Add сам увеличивает размерность массива на 1, вносит в последний элемент строку "xexe" и увеличивает счетчик на 1. |
#2
|
||||
|
||||
![]() Или создавай тип
Код:
type TMyStr = object str: array of string; count: integer Procedure Add(const text:string); end; Код:
type TMyStr = class() public str: array of string; count: integer; Procedure Add(const Text:string); end; ЗЫ Метод реализовуй в разделе implementation Код:
Procedure TMyStr.Add(const Text:String); begin inc(count); setLength(str, count); str[count-1]:=Text; end; Последний раз редактировалось YVitaliy, 16.10.2012 в 12:58. |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
Евгений79 (16.10.2012)
|
#3
|
|||
|
|||
![]() Никогда не создавал доселе классов с методами.
Покажите полный код пожалуйста. |
#4
|
||||
|
||||
![]() Код:
unit TestUnit; interface type TMyStr = class(TObject) public str: array of string; count: integer; Procedure Add(const Text:string); end; implementation { TMyStr } procedure TMyStr.Add(const Text: string); begin inc(count); setLength(str, count); str[count-1]:=Text; end; end. И, например, в обработчике OnCreate главной формы (или при старте программы) создаем обьект Код:
var strObj:TMyStr; ......... procedure TForm1.FormCreate(Sender: TObject); begin strObj:=TMyStr.Create; end; //И добавляем запись procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=''; if inputQuery('Добавление текста','Введите текст',s) then strObj.add(s); end; |
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
Евгений79 (16.10.2012)
|
#5
|
|||
|
|||
![]() Без отдельного юнита не обойтись?
|
#6
|
||||
|
||||
![]() Обойтись, просто записать фрагменты кода в соответствующие места основного юнита. Но разницы не вижу.
Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
Этот пользователь сказал Спасибо PhoeniX за это полезное сообщение: | ||
Евгений79 (16.10.2012)
|
#7
|
||||
|
||||
![]() Можешь обьявлять и реализовать в любом юните. В юните с формой точно так же обьявляется и реализуется главная форма. Свой класс обьявляй параллельно с ней.
|
Этот пользователь сказал Спасибо YVitaliy за это полезное сообщение: | ||
Евгений79 (16.10.2012)
|