Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.04.2013, 21:25
Freeongoo Freeongoo вне форума
Прохожий
 
Регистрация: 29.07.2011
Сообщения: 11
Репутация: 10
По умолчанию Создание класса

Код:
program Project1;

uses
  SysUtils,
  Dialogs;

type
  TLevel = class
             FreqLevel : array of Integer;
             constructor Create (CountPoint : Integer);
             destructor Destroy ();
           end;

constructor TLevel.Create(CountPoint : Integer);
  begin
    SetLength(FreqLevel, CountPoint);
  end;

destructor TLevel.Destroy ();
  begin
    SetLength(FreqLevel, 0);
  end;

type
  TData = class
            private
              CountPass : Integer;
              CountPoint : Integer;
              procedure RescailSize (); 
            public
              Freq : array of Integer;
              Pass : array of TLevel;
              procedure AddFreqLevel (index , NumPass, FreqValue, FreqLevelValue: Integer);
              procedure AddLevel (index , NumPass, FreqLevelValue: Integer);
              constructor Create (CountPoint, CountPass : integer);
              destructor Destroy ();
          end;

constructor TData.Create (CountPoint, CountPass : integer);
  var
    i : Integer;
  begin
    self.CountPass := CountPass;
    self.CountPoint := CountPoint;
    SetLength(Freq, CountPoint);
    SetLength(Pass, CountPass);
    for i := 0 to CountPass-1 do
      Pass[i] := TLevel.Create(CountPoint);
  end;

procedure TData.RescailSize ();
  var
    i : Integer;
    newSize : Integer;
  begin
    newSize := CountPass * 2;
    SetLength(Pass, newSize);
    for i:= CountPass to newSize-1 do
      Pass[i] := TLevel.Create(CountPoint);
    CountPass := newSize;
  end;

procedure TData.AddFreqLevel (index , NumPass, FreqValue, FreqLevelValue: Integer);
  begin
    Freq[index] := FreqValue;
    Pass[NumPass].FreqLevel[index] := FreqLevelValue;
  end;

procedure TData.AddLevel (index , NumPass, FreqLevelValue: Integer);
  begin
    if self.CountPass <= NumPass then
      RescailSize ();
    Pass[NumPass].FreqLevel[index] := FreqLevelValue;
  end;

destructor TData.Destroy ();
  begin
    SetLength(Freq, 0);
    SetLength(Pass, 0);
  end;

var
  Data : TData;
  i : Integer;

begin
  Data := TData.Create(100,1);
  Data.AddFreqLevel(0,0,101,55);
  Data.AddFreqLevel(1,0,102,77);
  Data.AddFreqLevel(2,0,103,70);
  Data.AddLevel(0,1,66);
  Data.AddLevel(1,1,79);
  Data.AddLevel(2,1,88);
  ShowMessage(IntToStr(Data.Freq[2]));
  ShowMessage(IntToStr(Data.Pass[1].FreqLevel[2]));

  Data.Free;

end.

Вопрос:
1. Правильно реализованы классы?
2. Правильно ли я освобождаю память?
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:42.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025