Текущий архив: 2009.09.06;
Скачать: CL | DM;
Вниз
Помогите разобраться в преобразовании Найти похожие ветки
← →
Юрий Зотов © (2009-07-04 23:41) [120]> Zheksonz (04.07.09 23:38) [118]
Скажите, что означает символ # в записи #19#136 ?
← →
Sha © (2009-07-04 23:48) [121]Это просто числа, каждое размещено в одном байте, и они передаются друг за другом.
Вот также и 5000 - это просто число, размещенное в двух байтах, которые надо передать друг за другом.
← →
Zheksonz (2009-07-04 23:50) [122]
> Sha © (04.07.09 23:40) [119]
</I
> Юрий Зотов © (04.07.09 23:41) [120]
>
Вы как сговорившись задаёте мне вопрос, ответ на который я ищу в этом форуме, в этой теме ))) Поэтому и вопросом было как преобразовать 5000 в #19#136
Сам инвертор принимает 8 байт. для отправки этих 8 байт на COM порт я использую ф-циюComPort.WriteStr(String_);
в переменную String_ я присваиваю не"#01#01#01#01#19#136#01#01"
, а
#01#01#01#01#19#136#01#01
← →
Zheksonz (2009-07-04 23:54) [123]Sha © (04.07.09 23:48) [121]
оооооочень похоже на правду... а как отправлять число, размещенное в двух байтах, в строковую переменную???
← →
Юрий Зотов © (2009-07-04 23:57) [124]> Zheksonz (04.07.09 23:50) [122]
> в переменную String_ я присваиваю не "#01#01#01#01#19#136#01#01",
> а #01#01#01#01#19#136#01#01
И правильно. В чем проблема-то?
Знак # означает "символ с кодом". То есть, запись #19#136 означает: последовательность из 2-х символов с кодами 19 и 136. Это будут 2 байта, в которых записаны числа 19 и 136. Именно так оно у Вас и формируется, все должно быть нормально.
← →
Юрий Зотов © (2009-07-04 23:59) [125]> Zheksonz (04.07.09 23:54) [123]
> как отправлять число, размещенное в двух байтах,
> в строковую переменную???
Блин. Еще раз - функция WordToString2 в [4] для кого писана? Что она делает?
← →
Sha © (2009-07-05 00:03) [126]Там SetLength пропущен
← →
Zheksonz (2009-07-05 00:04) [127]
> Именно так оно у Вас и формируется, все должно быть нормально.
как мне к#01#01#01#01
прибавить#19#136
??? а вернее как мне получить эти самые #19#136, а не 19136 или "#19#136" или#$13"€"
???
← →
Юрий Зотов © (2009-07-05 00:05) [128]Короче:
var
S: string;
=====
S := #01#06#00#04 + WordToString2(5000);
S := S + CRC16(S);
ComPort.WriteStr(S);
И если в протоколе Вы ничего не напутали, то все должно работать.
← →
Юрий Зотов © (2009-07-05 00:07) [129]> Sha © (05.07.09 00:03) [126]
Там короткая 2-х символьная строка.
← →
Zheksonz (2009-07-05 00:17) [130]
> Юрий Зотов © (05.07.09 00:05) [128]
Вот что получилось на выходе(((#1#6#0#4#$13"€"#1#0#0#0#0#0#0#0#0#0#0#0#0#0#2#0#0#3#0#0#0#3#0#0#0#$16#0#0# 0#2#0#0#0"°Y˜"#0"dF˜"#0"Tц"#$12#0#0#0#0#0"p™G"#0"` ˜"#0"lч"#$12#0"&аC"#0"°Y˜"#0"I^C"#0"Ёч"#$12#0"=_C"#0"°Y˜"#0"‹ЮC"# 0"Ёч"#$12#0"Ёч"#$12#0"°Y˜"#0#$1C
← →
Германн © (2009-07-05 00:17) [131]
> Zheksonz (04.07.09 22:11) [101]
>
> Германн © (04.07.09 21:58) [93]
> Опять на выходе пресловутые: #$13"€" но это не #19#136(((
А я то так старался! :(
P.S. Автор на форуме уже год, если не два или более. Уровень его базовых знаний за это время ничуть не изменился. Как был нулевой, так и остался. К советам по увеличению этого уровня, например путём чтения книжек, хотя бы для чайников, он остался глух. Объяснить что-то данному автору невозможно. Не потому, что он не хочет понимать, а потому, что невозможно объяснить слепому от рождения "что такое зрение". Тем более - "что такое цвет". Автору можно только либо указать на ошибку в его бредовом коде, либо дать код. Исходя из этого я поставил пред собой задачу дать автору код, дабы прекратить захламление форума. При этом я исходил из следущего:
1. Код должен был выполнять именно "преобразование", как того и хотел автор.
2. Стиль кода должен был полностью соответствовать стилю автора, дабы выглядеть естественно в окружении строк кода самого автора.
3. Код должен был давать правильный результат.
Я то думал, что вполне нормально справился с поставленной пред собой задачей :(
← →
Юрий Зотов © (2009-07-05 00:19) [132]> Zheksonz (05.07.09 00:17) [130]
На выходе чего?
← →
Zheksonz (2009-07-05 00:26) [133]
> Германн © (05.07.09 00:17) [131]
мда, и поспорить не с чем...
> Юрий Зотов © (05.07.09 00:19) [132]
сорри... лишнего мусора набросало...
← →
Sha © (2009-07-05 00:36) [134]> Юрий Зотов © (05.07.09 00:07) [129]
> Там короткая 2-х символьная строка.
Ну и что?
Попробуй выполнить это:
type
String2 = string[2];
function WordToString1(Value: word): String2;
begin
SetLength(Result,1);
Result[1] := Char(Value div 256);
end;
function WordToString2(Value: word): String2;
begin
Result[1] := Char(Value div 256);
Result[2] := Char(Value mod 256)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
s: String2;
begin
s:=WordToString1($3231);
s:=WordToString2($3231);
ShowMessage(s);
end;
← →
Anatoly Podgoretsky © (2009-07-05 00:38) [135]> Юрий Зотов (05.07.2009 00:19:12) [132]
Может код в отладчике
← →
Zheksonz (2009-07-05 00:45) [136]
function WordToString2(Value: word): String2;
begin
Result[1] := Char(Value div 256);
Result[2] := Char(Value mod 256)
end;
на выходе этой функции пусто... хотя в отладчике смотрю, значение Value наполнено. Это что может быть???
← →
Sha © (2009-07-05 00:49) [137]После
begin
добавь такой оператор:
SetLength(Result,2);
← →
Zheksonz (2009-07-05 00:52) [138]мужики, вы не сердитесь, ну туговат я в этих вопросах... я не собираюсь это оспаривать, зато когда нужно выйти и выступить перед толпой, с речью, мои коленки не трусятся и не заикаюсь... все же мы разные и всем нам что-то свойственно, а что-то нет...
← →
Zheksonz (2009-07-05 00:55) [139])))
смех и грех... на выходе Strn := Strn + WordToString2(UpDown1.Position); всё те же #1#6#0#4#$13"€" //не вот и как я бы мог разобраться если даже у Вас нифига не получается уже столько времени??? по одному и тому же кругу ходим...
← →
Германн © (2009-07-05 00:57) [140]
> Zheksonz (05.07.09 00:52) [138]
>
> мужики, вы не сердитесь, ну туговат я в этих вопросах...
> я не собираюсь это оспаривать
Ты в энный раз хочешь сказать, что ты не программист и не собираешься заниматься программированием? Мы уже знаем. Но зачем тогда ты вновь и вновь пытаешься программировать лезя на форум с вопросами? Если не хочешь, но интересно, так купи книжку для чайников и читай её хоть в траспорте.
← →
Германн © (2009-07-05 00:59) [141]
> Zheksonz (05.07.09 00:55) [139]
>
> )))
> смех и грех... на выходе Strn := Strn + WordToString2(UpDown1.
> Position); всё те же #1#6#0#4#$13"€" //не вот и как я бы
> мог разобраться если даже у Вас нифига не получается уже
> столько времени??? по одному и тому же кругу ходим...
Лично я пас. Надоело.
← →
Sha © (2009-07-05 01:00) [142]> Zheksonz (05.07.09 00:52) [138]
> выступить перед толпой, с речью
Хотелось бы речь заслушать, с ответом на вопрос [86]
← →
Zheksonz (2009-07-05 01:02) [143]Германн © (05.07.09 00:59) [141]
ты пас, потому что ты так и не понял что нужно сделать и делаешь вид, что ты типа с ними, мастерами, не хочешь разбираться в этом вопросе... Но ИХ, не обманешь ;)
← →
Zheksonz (2009-07-05 01:12) [144]
> Sha © (05.07.09 01:00) [142]
в общем имеется инвертор - преобразователь частоты для электродвигателя. Управление частотником производится через COM порт. Формат запроса 8 байт, т.е. в этих восьми байтах зарыт весь формат отправляемой команды. Для простоты я использую компонент управления СOM портом, у которого есть функцияComPort.WriteStr(String_);
пример отправляемой строки:String_ := #01#06#00#04#19#136 + crc16(String_);
где #19#136 - это частота вращения двигателя(5000=50 герцам), вот в этом формате мне и нужно менять частоту, например на 4000 = #15#160
← →
Германн © (2009-07-05 01:12) [145]
> Zheksonz (05.07.09 01:02) [143]
>
> Германн © (05.07.09 00:59) [141]
> ты пас, потому что ты так и не понял что нужно сделать и
> делаешь вид, что ты типа с ними, мастерами, не хочешь разбираться
> в этом вопросе... Но ИХ, не обманешь ;)
Я не с ними. Я выше их :) Они лишь Мастера Дельфи, а я ПШП!
А то что "их" не обманешь - эт точно!
P.S. Ещё чуть-чуть и можно на уровень башорга перейти. :)
← →
Sha © (2009-07-05 01:17) [146]> Zheksonz (05.07.09 01:12) [144]
Тогда непонятно, почему тебя не устраивает результат [139]?
Ведь он соответствует твоему описанию.
← →
Zheksonz (2009-07-05 01:25) [147]
> Германн © (05.07.09 01:12) [145]
думаю моя расшифровка ПШП тебе не понравится...
ты по существу хоть слово сказал??? Или может ты понял в чём суть вопроса??? а может ты сюда зашёл, чтобы поумничать???, ведь ветка-то для начинающих... Знаешь почему меня Юрий и Sha не послали ещё??? потому что я выполняю то что они говорят, а не спрашиваю куда begin поставить, но при этом результат отрицательный... Ты же просто "воду льёшь"... Я тут больше года, как ты правильно заметил, но за это время я не видел ни одного полезного совета от тебя... Да ты и правда ПШП )))
← →
Sha © (2009-07-05 01:28) [148]> Zheksonz (05.07.09 01:25) [147]
А вот это ты напрасно.
Если ветку закроют, будут правы.
← →
Zheksonz (2009-07-05 01:31) [149]
> Sha © (05.07.09 01:17) [146]
перечитал ещё раз свой вопрос и скажу вам, что ничего не изменилось... всё так же нужно из, например, 5000 получить #19#136, каюсь, просто думал, что обозначение #nn#nn стандартно и имеет функцию преобразования из обычного числа в формат #nn#nn.
← →
Германн © (2009-07-05 01:31) [150]
> Sha © (05.07.09 01:17) [146]
>
> > Zheksonz (05.07.09 01:12) [144]
>
> Тогда непонятно, почему тебя не устраивает результат [139]?
>
> Ведь он соответствует твоему описанию.
>
Думаю гораздо проще написать эксперт IDE, который будет показывать содержимое строковой переменной строго и только в виде #xx#xx#xx...
Ничто другое автору не понравится. И он будет обвинять в этом нас.
← →
Zheksonz (2009-07-05 01:35) [151]Sha © (05.07.09 01:28) [148]
ну так я тоже так думаю... оскорблять можно только новичков и тех, кто не так способен как мы любимые... я тоже пекаря какого-нибудь закрыл бы за то, что он вообще не представляет что такое шестнадцатиричная система...
← →
Германн © (2009-07-05 01:36) [152]
> Sha © (05.07.09 01:28) [148]
И это будет скорее традицией, чем прецендетом :)
> Zheksonz (05.07.09 01:31) [149]
>
>
> > Sha © (05.07.09 01:17) [146]
>
> перечитал ещё раз свой вопрос и скажу вам, что ничего не
> изменилось... всё так же нужно из, например, 5000 получить
> #19#136, каюсь, просто думал, что обозначение #nn#nn стандартно
> и имеет функцию преобразования из обычного числа в формат
> #nn#nn.
>
И всё также ты ничего как не понимал раньше, так и не понял. И без базовых знаний и не сможешь понять никогда.
← →
Германн © (2009-07-05 01:39) [153]
> Германн © (05.07.09 01:36) [152]
Старею, блин.
Опять пропустил букву.
В четверг получу заказанные "очки для чтения".
← →
Zheksonz (2009-07-05 01:40) [154]Германн © (05.07.09 01:31) [150]
Я уже давно получил "#19#136"... а мне нужно #19#136... вот и вся разница... те, кто говорил как это сделать все получили в итоге#$13"€"
а я-то в чём не разобрался??? я все рекомендации проделывал с пониманием, просто они не дали желаемого результата... так давай же скажем всё, я пас и сошлёмся на то, что обучаемый цветам слеп???
← →
Sha © (2009-07-05 01:44) [155]> Zheksonz (05.07.09 01:31) [149]
> нужно из, например, 5000 получить #19#136
Получили уже, и не один раз
> Германн © (05.07.09 01:31) [150]
> Думаю гораздо проще написать эксперт IDE...
Еще проще функцию
> Zheksonz (05.07.09 01:35) [151]
> я тоже пекаря какого-нибудь закрыл бы за то, что он вообще не представляет что такое шестнадцатиричная система...
У нас не приветствуется использование ненормативной лексики, высказываний личного характера.
Я спать, жаль что не удалось досмотреть до конца.
← →
Zheksonz (2009-07-05 01:47) [156]
> Получили уже, и не один раз
спасибо за время которое Вы уделили, но результат себе в актив Вы записать не сможете... мне жаль не только потому, что я не узнал ответ на свой вопрос, а и потому, что я был уверен, что Вы это сможете сделать.
← →
Германн © (2009-07-05 01:49) [157]
> Я спать, жаль что не удалось досмотреть до конца.
>
Будь спок. До конца ещё очень далеко. Если не в этой ветке так в других.
Сей жестянщик нас так просто не оставит.
← →
Zheksonz (2009-07-05 01:57) [158]вот вы прикольные)))
я спросил, как, например, из 5000 получить#19#136
вы мне ответили#$13"€"
и удивляетесь что мне ответ не подходит... мол я ничего не понимаю... если уж на то пошло, то как преобразовать #$13"€" в #19#136 ???
ну и в довершение о том, что же у вас приветствуется:
> У нас не приветствуется использование ненормативной лексики,
> высказываний личного характера.
</
> Сей жестянщик нас так просто не оставит.
I>
← →
Sha © (2009-07-05 01:57) [159]> Zheksonz (05.07.09 01:47) [156]
Ты не понял, что мы сделали то, что ты просил. Просто, возможно, ты просил не то что надо.
Можешь убедиться в этом при помощи функции, которая отображает любую строку в твоем фирменном формате.function ZheksonzFormat(const s: string): string;
var
i: integer;
begin;
Result:="";
for i:=1 to Length(s) do Result:=Result+"#"+IntToStr(ord(s[i]));
end;
Теперь точно спать.
← →
Zheksonz (2009-07-05 02:01) [160]я так понимаю на выходе будет "#19#136", а мне такая строка не нужна... мне нужно, чтобы строковая переменная была наполнена #19#136, а не "#19#136"... ну неужели не понятно???
Страницы: 1 2 3 4 5 6 вся ветка
Текущий архив: 2009.09.06;
Скачать: CL | DM;
Память: 0.84 MB
Время: 0.026 c