Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.09.06;
Скачать: CL | DM;

Вниз

Помогите разобраться в преобразовании   Найти похожие ветки 

 
Сергей М. ©   (2009-07-03 13:46) [40]


> Dennis I. Komarov ©   (03.07.09 13:37) [37]


А , ну да ..

Ну тоже ведь не проблема, если даже со стрингом понахреноверчено ! Пережделывать-то ее зачем ? Нехай живет себе)

var
CmdPrefix: array[0..3] of byte = (01, 06, 00, 04);
CmdData: Word = 5000;
CmdCRC16: Word;
ms: TMemoryStream;

..
ms.WriteBuffer(CmdPrefix, SizeOf(CmdPrefix));
CmdData := Swap(CmdData);
ms.WriteBuffer(CmdData, SizeOf(CmdData));
CmdCRC16 := Swap(PWord(CRC16(PChar(ms.Memory)))^);
ms.WriteBuffer(CmdCRC16, SizeOf(CmdCRC16));
ComPort.Write(ms.Memory^, ms.Size);



 
Dennis I. Komarov ©   (2009-07-03 13:48) [41]


> (n div 256)+(n mod 256)

Ты понимаешь как это работает?
Что мешает присвоить символы прям тут:
Strn := Strn + ...


 
Сергей М. ©   (2009-07-03 13:49) [42]


> отладчик не всегда могу использовать


Это почему же ?
Что мешает непосредственно перед ComPort.Write(чего-то там) посмотреть под отлачиком потрока этого "чего-то там" ?


 
Zheksonz   (2009-07-03 14:14) [43]

Dennis I. Komarov ©   (03.07.09 13:48) [41]
делаю так:
Strn := Strn + chr(lo(UpDown1.Position)) + chr(Hi(UpDown1.Position));

но на выходе неправильный результат.. видимо я что-то не так понимаю...


 
Zheksonz   (2009-07-03 14:18) [44]

Сергей М. ©   (03.07.09 13:49) [42]

я неправильно выразился, не все функции доступны в отладчике из-за отсутствия на компе COM порта.

кстати, вот процедура CRC16:

function TForm1.crc16(seq:string):string;
var
 i,j:integer;
 CRC:word;
const
 CRC_st:word=$FFFF;
 CRC_1:word=$A001;
begin
 CRC:=CRC_st;
 for i:=1 to (length(seq)) do
   begin
     CRC:=CRC xor ord(seq[i]);
       for j:=1 to 8 do
       begin
         if (CRC and 1)>0 then
         begin
           CRC:=CRC shr 1;
           CRC:=CRC xor CRC_1;
         end
         else CRC:=CRC shr 1;
       end;
   end;
   result:=chr(lo(CRC))+chr(hi(CRC));
end;


 
Сергей М. ©   (2009-07-03 14:23) [45]


> не все функции доступны в отладчике из-за отсутствия на
> компе COM порта.


Нафих отладчику твой COM-порт сдался ?)
Отладчик тебе нужен лишь для того, чтобы подсмотреть содержимое того, что в действительности было бы отправлено в порт, если бы порт был)


 
Zheksonz   (2009-07-03 14:30) [46]

Сергей М. ©   (03.07.09 14:23) [45]
я не понимаю какое это имеео отношение к решению вопроса??? тем более что я пользуюсь отладчиком, если вопрос не касается прсмотра при помощи отладчика возвращаемых данных, от инвертора...


 
Сергей М. ©   (2009-07-03 14:39) [47]


> не понимаю какое это имеео отношение к решению вопроса?


Самое непосредственное - ты не видишь и не понимаешь результаты своих бубноплясок с "преобразованиями", которые, как я тебе показал выше, вобщем-то и не нужны ..
Т.е. работаешь вслепую)


> я пользуюсь отладчиком


Вот и показывай, что ты там видишь в том или ином случае ..


 
Юрий Зотов ©   (2009-07-03 14:51) [48]

> Zheksonz   (03.07.09 14:14) [43]

UpDown1.Position имеет тип Integer. Это 4 байта. Из них Вы берете младший и старший. А надо что? Надо младший и старший байты младшего слова.

Думайте.


 
Zheksonz   (2009-07-03 15:35) [49]

2 Юрий
т.е. я должен присвоить значение UpDown1.Position в двух байтовую переменную и только тогда производить div и mod 256???


 
Юрий Зотов ©   (2009-07-03 15:48) [50]

> Zheksonz   (03.07.09 15:35) [49]

Конечно. Можно и сразу выдернуть нужные байты, но через промежуточную двухбайтовую переменную - проще.


 
Dennis I. Komarov ©   (2009-07-03 15:49) [51]


> но на выходе неправильный результат.. видимо я что-то не
> так понимаю...

Потому что не разобрался как оно работает, а тупо скопипастил готовое, о вреде чего я и предупреждал. И вообще я не представляю, как можно работать с портами, при таком представлении о числах...
Берем бумажку и на ней подробно разбираем по битам что есть 5000, потом что есто Word(5000), потом что нам оттуда надо вынуть а потом...

И вообще я против string-ов... :)


> т.е. я должен присвоить значение UpDown1.Position в двух
> байтовую переменную и только тогда производить div и mod
> 256???

Нет, ты должен из "четырех байтовой" вынуть нужные байты


 
Zheksonz   (2009-07-03 15:53) [52]

так понял, что значение UpDown1.Position нужно присвоить в некую двухбайтовую переменную, после чего str := char(двухбайтовая переменная div 256) + char(двухбайтовая переменная mod 256);
только не ругайтесь))) а что является двухбайтовой переменной???


 
Сергей М. ©   (2009-07-03 16:07) [53]


> что является двухбайтовой переменной?


Тем же чем и одновайтовая, но размером в два раза больше)


 
Zheksonz   (2009-07-03 16:11) [54]

хорошо, спрошу иначе... как обьявить двухбайтовую переменную??? уж не так же как однобайтовую, только два раза???

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


 
Dennis I. Komarov ©   (2009-07-03 16:20) [55]


> хорошо, спрошу иначе... как обьявить двухбайтовую переменную?
> ?? уж не так же как однобайтовую, только два раза???

Нафига тебе двубайтовая переменная. Научись работать с числами и потом вопросы задавать не будешь. Оно же тебе все равно надо...
А для тех кто в бронепоезде в [4] переменные объявлены как Word - 16 bit


 
Сергей М. ©   (2009-07-03 16:25) [56]


> Zheksonz   (03.07.09 16:11) [54]


Мож тебе в "Школу Юрия Зотова" заглянуть ?
Прямо на "Первый урок" ?
ЮЗ тебе и ссылочку подгонит ..


 
Dennis I. Komarov ©   (2009-07-03 16:25) [57]

А завтра три байта понадобятся, будешь 3-байтовую переменную искать?


 
Zheksonz   (2009-07-03 16:27) [58]

да я пробовал уже так, объявлял промежуточную переменную s1w, типа word, потом в неё присваивал :

char(s1w div 256) + chr(s1w mod 256); а на выходе не #19#136, а $13"€"... ну это же безобразие...


 
Anatoly Podgoretsky ©   (2009-07-03 16:29) [59]

> Dennis I. Komarov  (03.07.2009 16:25:57)  [57]

А если 12 бит


 
Dennis I. Komarov ©   (2009-07-03 16:30) [60]


> ну это же безобразие...

почему? Мой квакулятор говорит что 5000 = $1388


 
Dennis I. Komarov ©   (2009-07-03 16:33) [61]


> А если 12 бит

да хоть 11, я же говорю, карандаш в зубы и вперед, до полного понимания сущностей "1 и 0"


 
Zheksonz   (2009-07-03 16:33) [62]

Анатолий, вот вы вроде бы как тут "аксакалите" по идее должны знать ответ на мой вопрос, но максимум на что можно расчитывать, от вас, это издёвка... может нарушите традицию и подскажете балбесу, что я делаю не так???


 
Zheksonz   (2009-07-03 16:37) [63]


> почему? Мой квакулятор говорит что 5000 = $1388

5000 = 1388 = #19#136 и не равно "#19#136"

вот мне нужно получить из, например, 5000 - #19#136, чтобы присвоить это значение в переменную строкового типа.


 
Dennis I. Komarov ©   (2009-07-03 16:38) [64]


> что я делаю не так?

посчетай
1 or 2 and 4 = ?
без дельфы


 
Dennis I. Komarov ©   (2009-07-03 16:40) [65]

тогда рассказывай откуда ты взял #19 и #136?


 
Zheksonz   (2009-07-03 16:42) [66]


> Dennis I. Komarov ©   (03.07.09 16:38) [64]

а вы пока скажите как преобразовать 5000 в #19#136


 
Anatoly Podgoretsky ©   (2009-07-03 16:42) [67]

> Zheksonz  (03.07.2009 16:33:02)  [62]

Ты точно хочешь это узнать?
Тогда ты занимаешься не своим делом и давно.


 
Сергей М. ©   (2009-07-03 16:43) [68]


> Zheksonz


Мне все равно не понятно, что ты вцепился мертвой хваткой в эти самые строки ?


 
Zheksonz   (2009-07-03 16:44) [69]


> Dennis I. Komarov ©   (03.07.09 16:38) [64]


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


 
Dennis I. Komarov ©   (2009-07-03 16:47) [70]


> я списал

Это тут и без тебя все знают... :)


> а вы пока скажите как преобразовать 5000 в #19#136

#19#136 = #$13#$88


 
Zheksonz   (2009-07-03 16:48) [71]


> Anatoly Podgoretsky ©   (03.07.09 16:42) [67]


а как же теория относительности??? Ваши мерки это только Ваши мерки... ведь каждому своё... Для кого-то стадно не знать сколько будет корень из 1844, а для кого-то, если он у него будет грязь под ноктями...

если даже я чего-то не знаю, это не даёт Вам права судить меня за это... это даёт вам право отмолчаться, не ответив на мой вопрос или помоч мне... но никак не подкалывать меня за это, т.к. порядочные люди так не поступают.


 
Zheksonz   (2009-07-03 16:56) [72]


> #19#136 = #$13#$88

да ничего мне это не даёт... это тоже я уже получал, но мне не это нужно...

хоть кто-нибудь из тех кто принимал участие в обсуждении знает ответ на вопрос??? такое ощущение, что нет... т.к. мне не нужно #$13#$88 или "#19#136"... мне нужно из 5000 получить #19#136...


 
Dennis I. Komarov ©   (2009-07-03 17:02) [73]


> Zheksonz   (03.07.09 16:56) [72]


Ты хоть почитай, что написал, может озарение всетаки найдет:


> мне нужно из 5000 получить #19#136...


> мне не нужно #$13#$88 или "#19#136"...


> > #19#136 = #$13#$88


 
Zheksonz   (2009-07-03 17:33) [74]


> Dennis I. Komarov ©   (03.07.09 17:02) [73]


ну ок. я преобразовываю свои 5000 в шестнадцатиричное число: StrZn := IntToHex(zn, 2); на выходе 1388, как из этих 1388 получить #19#136


 
Dennis I. Komarov ©   (2009-07-03 17:41) [75]


> на выходе 1388

не ври, нету у тебя такого...


 
Dennis I. Komarov ©   (2009-07-03 17:44) [76]

хотя тут конечно есть, но это не число, это строка, а она вообще не нужна...


 
Zheksonz   (2009-07-03 17:51) [77]

а что мне нужно???


 
Dennis I. Komarov ©   (2009-07-03 17:57) [78]


> а что мне нужно???

то, что ты получил еще в [58] (только там # забыл поставить) Ты не понимаешь, что это одно и тоже только по разному отображается
т.е.
> #19#136 = #$13#$88 = #$13"€"


 
Anatoly Podgoretsky ©   (2009-07-03 18:10) [79]

> Zheksonz  (03.07.2009 16:48:11)  [71]

Тебя судить? Да я почти не принимаю участия в этом цирке, только прямой ответ по твоей просьбе.


 
Zheksonz   (2009-07-03 18:26) [80]

[79] ну оно и к лучшему, всё равно на выходе 0.



Страницы: 1 2 3 4 5 6 вся ветка

Текущий архив: 2009.09.06;
Скачать: CL | DM;

Наверх




Память: 0.63 MB
Время: 0.39 c
1-1213850890
Xandr
2008-06-19 08:48
2009.09.06
Длительный процесс


15-1246722417
olevacho_
2009-07-04 19:46
2009.09.06
Delphi+ flash( action script)


15-1244637305
nach
2009-06-10 16:35
2009.09.06
C++ to Delphi


15-1246798358
TIF
2009-07-05 16:52
2009.09.06
FF3.5 - Включить приватный просмотр


15-1246915719
DillerXX
2009-07-07 01:28
2009.09.06
Подскажите пожалуйста автора и название?