Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Вниз

Задание, которое не могу "расшифровать"...   Найти похожие ветки 

 
csh   (2007-05-15 02:14) [0]

Прошу прощения заранее - мой вопрос от бессилия. Пытаюсь оказать помощь сыну, а мои знания в области программирования далее Фортрана не распространяются. Самое обидное, до конца не могу понять задачуь - что надо делать?! В задании написано (буквально с точностью до знвков пунктуации): "Базовый класс: линейный список целых чисел. Конструкторы: копирующий, по столбцу компонента TStringGrid, по ascii-кодам символов строки типа string. Производный класс: список из второй половины исходного списка. Конструкторы: копирующий, по столбцу компонента TStringGrid, по объекту базового класса. Методы выводав строку TStringGrid для обеих класов". Пожалуйста, подскажите, что все-таки надо тут делать??? В чем заключается задание? Еще раз извините и заранее благодарен всем откликнувшимся на мою беду :(


 
Однокамушкин   (2007-05-15 08:43) [1]

Ну как я понял, это надо создать класс который хранит линейных список целых чисел. У базового класса должно быть два конструктора. Первый конструктор принимает в качестве параметра, скажем, TStringGrid и номер столбца, просматривает указанный столбец, извлекает из него все числа и строит список, содержищий их. Второй констркутор этого класса в к4ачестве параметра принимает строку и на её основе строит список чисел, содержищий аски-коды символов, входящих в строку. И есть у этого класса метод, который принимает в качестве параметров TStringGrid и номер строки и заполняет эту строку числами из своего списка. Наследник делает всё то же самое, но его констркуторы игнорируют первую половину списка. Например конструктор на основе TStringGrid начинает помещать в список значения только из нижней половины столбца. А второй его констркутор принимает в качестве параметра объект предка и копирует из него в себя вторую половину его списка. Вот что-то такое...


 
csh   (2007-05-15 09:30) [2]

Спасибо огромное!!!  Буду пытаться в муках творчества (т.е. по книжке Фаронова) "рожать" реализацую уже Вашей трактовки. Эх, если хотя бы знал, в какую сторону и как двигаться...


 
Однокамушкин   (2007-05-15 10:09) [3]

двигаться-то тут просто... Размер списка определяется один раз в конструкторе, значит его лучше реализовать динамическим массивом целых. вот вам для затравки пример с куском базового класса и конструктора по строке

type
 TBaseClass = class
 private
   FList: array of Integer;
 public
   constructor CreateFromString(const S: string);
 end;

constructor TBaseClass.CreateFromString(const S: string);
var
 I: Integer;
begin
 inherited;
 SetLength(FList, Length(S));
 for I := 0 to High(FList) do
   FList[I] := Ord(S[I + 1]);
end;


Теперь вам осталось реализовать для этого класса конструктор CreateFromGridCol и метод LoadToGridRow, и всё готово :)

Метод LoadToFridRow может выглядеть, например, так:

procedure TBaseClass.LoadToGridRow(Grid: TStringGrid; Row: Integer);
var
 I: Integer;
begin
 if Grid.RowCount < Row + 1 then
   Grid.RowCount := Row + 1;
 if Grid.ColCount - Grid.FixedCols < Length(FList) then
   Grid.ColCount := Grid.FixedCols + Length(FList);
 for I := 0 to High(FList) do
   Grid.Cells[Grid.FixedCols + I] := IntToStr(FList[I]);
end;


в общем, думаю, вам хватит, чтобы разобраться :)
end;


 
csh   (2007-05-15 10:31) [4]

Большое Вам человеческое спасибо!!!!!!!!!!!  Теперь, когда Вы практически задачу решили, мы то уж детали добьем.

Спасибо еще раз за участие и сочуствие!


 
Kolan ©   (2007-05-15 10:33) [5]

> CreateFromString

Никогда бы не догодался что это конструктор. Надо overload Create требуемое кол-во раз.


 
csh   (2007-05-15 11:01) [6]

2 kolan: спасибо и Вам за комментарий, но... пока я таких "штучек" (overload Create) не знаю...   :)


 
Однокамушкин   (2007-05-15 11:41) [7]


> Kolan ©   (15.05.07 10:33) [5]
> > CreateFromString
>
> Никогда бы не догодался что это конструктор. Надо overload
> Create требуемое кол-во раз.


рекомендую посоветовать то же самое разработчикам VCL :))) А то например, у TComObject три конструктора: Create, CreateAggregated и CreateFromFactory. и ничего :))) И у TWinControl их два - Create и CreateParented.

и вообще, не понимаю, почему я должен называть конструкторы всегда Create, если язык меня к этому не обяхывает? Это не цэ-плюс-плюс, где все констркуторы имеют одно имя.


 
Desdechado ©   (2007-05-15 15:48) [8]

Имхо, в задании речь о трех конструкторах.
Копирующий конструктор, видимо, должен создавать новый экземпляр списка с содержимым, аналогичным другому списку.


 
csh   (2007-05-15 16:22) [9]

Всем большое-большое спасибо! Все сделали, все получилось и... все уже сдали!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.06.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.702 c
1-1175846980
Bless
2007-04-06 12:09
2007.06.03
зачем нужно TInterfacedObject(Result).FRefCount := 1 ?


15-1178869133
ЮЮ
2007-05-11 11:38
2007.06.03
Я ухожу из Дельфи. Если Мастера не дадут :)


1-1175780961
rvg666
2007-04-05 17:49
2007.06.03
Как с помощью потока создать компоненты


11-1161254895
Моторокер
2006-10-19 14:48
2007.06.03
Как использовать MCKAppExpert?


3-1173938073
In/Out
2007-03-15 08:54
2007.06.03
Запрос SQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский