Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как перевести сие на код Дельфи т.е написать функцию? [D7, XP]


Страницы:   1 2 3

XerSon ©   (2007-12-13 10:07:00) 

CRCTable : array [0..255] of byte = (
     0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,
     157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,
     35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,
     190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,
     70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,
     219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,
     101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,
     248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,
     140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,
     17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,
     175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,
     50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,
     202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,
     87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,
     233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,
     116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53);

KeyCode: array[1..8] of byte;
KeyCode[ 8 ] := 0;

 For j := 1 to 7 do
   KeyCode[ 8 ]  := CRCTable[ KeyCode[ 8 ] xor KeyCode[ j ] ];


XerSon   (2007-12-14 22:58:00) [1]

Тему считаю оконченной! Прошу Администратора ее похерить! :)


С.Толик   (2007-12-14 22:55:00) [2]


> Slym ©   (14.12.07 04:10) [52]


Вам еще раз респект и уважуха! но я ужо по вашему консольному примеру, своял  приложение! Просто потупил не много, так как мозги ужо набекрень были а по утру на свежую голову все за 10 мин сообразилось и удачно скомпилировалось :)


Slym   (2007-12-14 04:10:00) [3]

Всетаки подам вопрошающему...
unit W2TMUnit;

interface

function W2TM(const WiegandCode:string): string;

implementation
uses SysUtils;

type
TKeyCode=packed record
 add1:byte;
 key1:word;
 key2:byte;
 add2:array[0..2] of byte;
 crc:byte;
end;

procedure SetKeyCodeCRC(var KeyCode:TKeyCode);
const
CRCTable : array [byte] of byte = (
 0,94,188,226,97,63,221,131,194,156,126,32,163,253,31,65,
 157,195,33,127,252,162,64,30,95,1,227,189,62,96,130,220,
 35,125,159,193,66,28,254,160,225,191,93,3,128,222,60,98,
 190,224,2,92,223,129,99,61,124,34,192,158,29,67,161,255,
 70,24,250,164,39,121,155,197,132,218,56,102,229,187,89,7,
 219,133,103,57,186,228,6,88,25,71,165,251,120,38,196,154,
 101,59,217,135,4,90,184,230,167,249,27,69,198,152,122,36,
 248,166,68,26,153,199,37,123,58,100,134,216,91,5,231,185,
 140,210,48,110,237,179,81,15,78,16,242,172,47,113,147,205,
 17,79,173,243,112,46,204,146,211,141,111,49,178,236,14,80,
 175,241,19,77,206,144,114,44,109,51,209,143,12,82,176,238,
 50,108,142,208,83,13,239,177,240,174,76,18,145,207,45,115,
 202,148,118,40,171,245,23,73,8,86,180,234,105,55,213,139,
 87,9,235,181,54,104,138,212,149,203,41,119,244,170,72,22,
 233,183,85,11,136,214,52,106,43,117,151,201,74,20,246,168,
 116,42,200,150,21,75,169,247,182,232,10,84,215,137,107,53);
var
Buf:PByte;
crc,Size:byte;
begin
 crc:=0;
 Buf:=@KeyCode;
 Size:=SizeOf(KeyCode)-1;
 repeat
   crc:=CRCTable[crc xor Buf^];
   inc(Buf);
   Dec(Size);
 until Size=0;
 KeyCode.crc:=crc;
end;

function KeyCodeToStr(const KeyCode:TKeyCode):string;
var
 Buf:PByte;
 Size:byte;
begin
 result:='';
 Buf:=@KeyCode;
 Size:=SizeOf(KeyCode);
 repeat
   result:=IntToHex(Buf^,2)+result;
   inc(Buf);
   Dec(Size);
 until Size=0;
end;

function W2TM(const WiegandCode:string): string;
var
 str:string;
 KeyCode:TKeyCode;
begin
 str:=StringReplace(WiegandCode,' ','',[rfReplaceAll]);
 if length(str)<>8 then raise Exception.CreateFmt('Bad WiegandCode: %s',[WiegandCode]);
 FillChar(KeyCode,SizeOf(KeyCode),0);
 KeyCode.add1:=1;
 KeyCode.key2:=StrToInt(Copy(WiegandCode,1,3));
 KeyCode.key1:= StrToInt(Copy(WiegandCode,4,5));
 SetKeyCodeCRC(KeyCode);
 result:=KeyCodeToStr(KeyCode);
end;

end.


Использование :)
uses W2TMUnit;

procedure TForm1.Button1Click(Sender: TObject);
begin
 edit2.Text=W2TM(edit1.Text);
end;


@!!ex   (2007-12-13 18:54:00) [4]

Сергей, я с вас тащусь... Вашу анкету никто не хакнул??


С.Толик   (2007-12-13 18:27:00) [5]


> Сергей М. ©   (13.12.07 16:27) [49]


Да за все и так огромное спс! Не дуб но только учусь! Енотофф немае )))

Просто не вразумлю что и куды а вы сразом ... дуб! эхэхэх!
Буду код-консоли юзать и будет мне счастье!


Сергей М.   (2007-12-13 16:27:00) [6]

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


XerSon   (2007-12-13 16:16:00) [7]


> Что конкретно ?


[Error] Unit1.pas(61): '[' expected but identifier 'Lo' found
[Error] Unit1.pas(62): ')' expected but identifier 'Hi' found

[Error] Unit1.pas(67): Undeclared identifier: 'TTouchMemCode'


Сергей М.   (2007-12-13 16:03:00) [8]


> Не чего не получается


Что конкретно ?


> пациент совсем плох


Выписать путевку в морг ? Услуга бесплатна)


XerSon   (2007-12-13 15:55:00) [9]


> Сергей М. ©   (13.12.07 15:36) [45]


Не чего не получается! Видать пациент совсем плох!


Сергей М.   (2007-12-13 15:36:00) [10]


> 1) Куда в коде писать сие:


Куда угодно (в текущей области видимости, естественно), но передпервым обращением  к объявляемому ид-ру.


> 2) Куда в коде писать следующее сие


см. ответ на 1)


XerSon   (2007-12-13 15:31:00) [11]

1) Куда в коде писать сие:

type
TWiegandCode = packed array
  Lo: Word;
  Hi: Byte;
end;

2) Куда в коде писать следующее сие:

TTouchMemCode = array[0..7] of Byte;
var
wc: TWiegandCode;
tmc: TTouchMemCode;


Сергей М.   (2007-12-13 15:25:00) [12]


> Можно пояснить немного?
>


Можно.
Что конкретно не понимаешь ?


XerSon   (2007-12-13 15:22:00) [13]


> Сергей М. ©   (13.12.07 14:46) [32]


Не фига не понимаю, что куды писать!!! Можно пояснить немного?


XerSon   (2007-12-13 15:20:00) [14]


> Сергей М. ©   (13.12.07 15:13) [39]


Не в коей мере! Просто раз ужо попадал под его Справедливую отбриву)


Anatoly Podgoretsky   (2007-12-13 15:15:00) [15]

> XerSon  (13.12.2007 15:09:38)  [38]

Я пока смотрю со стороны, наблюдаю за порядком.


Сергей М.   (2007-12-13 15:13:00) [16]


> XerSon   (13.12.07 15:09) [38]


Шифруешься ?)


XerSon   (2007-12-13 15:09:00) [17]

А сейчас по ходу и дядя Толя Нарисуется с Отбривом)


XerSon   (2007-12-13 15:08:00) [18]


> Сергей М. ©   (13.12.07 15:05) [36]


Не в коей мере не хотел Вас обидеть и тем более ущемить ваше не ущемляемое Достоинство! Сорри если что не так!!! Еще раз Огромное спс и респект!


Сергей М.   (2007-12-13 15:05:00) [19]


> можно весь Юнит выложить?


Нет никакого юнита)

Все, что ты видишь, в т.ч. и от ув. Slym (c), верстается "с колес")


> Буду благодарен за .. выполненную .. работу


Ты , видимо, ошибся ресурсом)

Здесь monter_mechnikoff.ru, а не bogadelnia.org)


XerSon   (2007-12-13 14:59:00) [20]


> Сергей М. ©   (13.12.07 14:46) [32]


А можно весь Юнит выложить? Буду премного благодарен, за проявленный интерес и выполненную работу!

Прошу Извенить за наглость и не скромность! у вас и без меня, дел по помощю не в проворот а тут еще и нахал типа меня нарисовался!


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо