Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 21:59 26.04.24 
Клубове/ Компютри и Интернет / Delphi Всички теми Следваща тема Пълен преглед*
Информация за клуба
Тема Търси се програмист за задачка...
Авторkozhuharov@bitex.com (Нерегистриран) 
Публикувано07.08.04 16:37  



Търси се програмист, владеещ разработването на компоненти, за написване на два невизуални такива. Те няма да имат реална функционалност а ще бъдат използвани за обучение на ученици.

Ето и кратко описание на компонентите:

TSBINARY = record
cb:ULONG; // дължина на масива от байтове в lpb
lpb:PByte; // указател към блок от паметта съдържащ поредица от байтове
end;


TMRec = class(TPersistent)
private
FName:String;
FDefault:Boolean;
FEntryID: TSBINARY;
function GetMSEntryID:string;
public
procedure SetMSEntryID(const Value:string);
public
property MSName:String read FName write FName;
property MSDefault:Boolean read FDefault write FDefault;
property MSEntryID:String read GetMSEntryID;
end;


TMasterComp = class(TComponent)
private
FActive:Boolean;
FList:TList;
public
function GetList:TList;
published
property Active:Boolean Read FActive Write SetActive;
end;

TSlaveComp = class(TComponent)
private
FComp:TMasterComp;
FMRec:TMRec;
public
procedure ShowMRec; // Показва стойността на публикуваните пропертита на FMRec
published
property Active:Boolean;
property MasterComp:TMasterComp read FMasterComp write SetMasterComp;
property MRec:TMRec read FMRec write SetMRec;
end;


///////////////////////////////////////////////
//Помощни функции
///////////////////////////////////////////////
function StringToEntryId(const EntryId: string): TSBINARY;
type
TCharToArray = array [0..1] of Char;
PCharToArray = ^TCharToArray;
var
_I: Integer;
CurrentByte: PByte;
CurrentChar: PCharToArray;
begin
Result.cb := Length(EntryId) div 2;
GetMem(Result.lpb, Result.cb);
FillChar(Result.lpb^, Result.cb, 0);
CurrentByte := Result.lpb;
if Result.cb > 0 then
begin
CurrentChar := @EntryId[1];
for _I := 0 to Result.cb - 1 do
begin
CurrentByte^ := StrToIntDef('$' + CurrentChar^, 0);
Inc(CurrentByte);
Inc(CurrentChar);
end;
end;
end;

function EntryIdToString(const EntryId: TSBINARY): string;
var
_i: Integer;
CurrentByte: pByte;
begin
Result := '';
if EntryId.cb > 0 then
begin
CurrentByte := EntryId.lpb;
for _i := 0 to EntryId.cb - 1 do
begin
Result := Result + IntToHex(CurrentByte^, 2);
Inc(CurrentByte);
end;
end;
end;
///////////////////////////////////////////////
//КРАЙ Помощни функции
///////////////////////////////////////////////


function TMasterComp.GetList:TList;
var
_iCount:Integer;
_MRec:TMRec;
begin
if not Assigned(FList) then
begin
FList:=TList.Create;
for _iCount:=0 to 15 do
begin
_MRec:=TMRec.Create;
_MRec.MSDefault:=iCount mod 2 = 0;
_MRec.MSName:= IntToHEX(iCount,8);
_MRec.SetMSEntryID(IntToHEX(iCount*3,8));
TList.Add(_MRec);
end;
end;
Result:=FList;
end;


procedure _MRec.SetMSEntryID(const Value:string);
begin
FEntryID:=StringToEntryId(Value);
end;

function _MRec.GetMSEntryID:String;
begin
Result:=EntryIdToString(FEntryID);
end;

/////////////////////////////////////

Търсена функционалност
- TSlaveComp може да бъде активен само и единствено когато има присвоен TMasterComp
- MRec на TSlaveComp в DesignTime трябва да позволява избирането на такова от върнатия списък от
function TMasterComp.GetList, и не може да приема стойност различна от тези,
които връща TMasterComp.GetList При избора, потребителя трябва да има възможнос да вижда стойностите
на публикуваните свойства на MRec, но не и да ги променя, т.е. връщаните от TMasterComp.GetList обекти
са ReadOnly

- При преминаване на TMasterComp.Active=False, TMasterComp.GetList трябва да връща nil
- При преминаване на TMasterComp.Active=False, всички инстанции на TSlaveComp също стават Active = False
и присвоеното свойство MRec на TSlaveComp става nil



Цялата тема
ТемаАвторПубликувано
* Търси се програмист за задачка... kozhuharov@bitex.com   07.08.04 16:37
. * Re: Търси се програмист за задачка... SDR   09.08.04 09:11
. * Re: Търси се програмист за задачка... kozhuharov@bitex.com   09.08.04 10:36
. * Re: Търси се програмист за задачка... SDR   09.08.04 11:04
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.