PDA

Просмотр полной версии : Вопрос по форме pck.


Xedinsey
14.03.2008, 02:45
Доброго времени суток.
Вопрос 1.
Допустим у меня переменная pck имеет вид #$31#$67#$5F#$34#$32#$67#$54#$21. Почему когда я выбираю pck[1] я попадаю на #$31 а не на # (как первый символ). Тип то pck имеет стринг, значит и должна подчиняться правилам для стринга. Разъясните плз.

Вопрос 2.
Вытекает из первого! У меня переменные HexID и Hex9A имеют тип стринг (вот такой формат у HexID: 23 56 00 00, а Hex9A:=pck)
for i:=1 to length(Hex9A) do
if (HexID[1]+HexID[2])=(Hex9A[i]+Hex9A[i+1]) and
(HexID[4]+HexID[5])=(Hex9A[i+3]+Hex9A[i+4]) and
(HexID[7]+HexID[8])=(Hex9A[i+6]+Hex9A[i+7]) and
(HexID[10]+HexID[11])=(Hex9A[i+9]+Hex9A[i+10]) then ObjID:=ReadD(Hex9A,i-4);
Вот в такой реализации выделяет первый "and" и пишет Incompatible Types. В чем причина несовместимости?
Пробовал вот так:
if HStr((HexID[1]+HexID[2]))=(Hex9A[i]+Hex9A[i+1]) and...
Та же самая история.

PanAm
14.03.2008, 15:46
ОМГ
1. как бы ответить??? так чтобы попроще и понятней
# - указывает что символ (а строки (стринги) состоят из символов) представлен в числовом виде
$ - Признак шестнадцитеричной системы
и получам #$31 = #49 это в десятичной системе и = "1" уже символ
вот и получается что #$31 это 1 (!) символ строки #$31#$67#$5F#$34#$32#$67#$54#$21 из 8 (!) символов.

Многа букаф написал...

Xedinsey
14.03.2008, 15:55
Понял, пасибки!
Просто пробовал в делфи задать строку в виде pck. У меня pck[1] был ракен "#'. Вот и возник вопрос...

PanAm
14.03.2008, 16:04
2. ну а тут похоже скобки
как я понимаю - надо сравнить суммы мервых двух байт HexID с суммой последних 2 в Hex9A а также аналогично с 4 и 5 и т. д.
вместо (HexID[1]+HexID[2])=(Hex9A[i]+Hex9A[i+1]) надо (HexID[1]+HexID[2]=Hex9A[i]+Hex9A[i+1]) и так далее аналогично.

Добавлено спустя 8 минут 53 секунды:
ох и еще,
вы работаете со строками и символами,
например если у вас HexID[1] = 'a' а HexID[2] = 'b' то
HexID[1]+HexID[2] = 'ab' - тоесть строка из 2 символов а не 1 байт.