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

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

Array of Byte в String


Antoha111 ©   (2007-01-06 14:06:00) 

Добрый день, уважаемые! Возник тут один вопрос, вроде ерундовый, но чего-то ничего не получается......Вообщем имеется массив байтов. Необходимо этот массив преобразовать к String. Заранее благодарен.


Ihor Osov'yak   (2007-01-08 00:35:00) [1]

Сообщение Antoha111 ©   (07.01.07 02:51) [17]  противоречит сообщению
Antoha111 ©   (06.01.07 23:06) [11]


ors_archangel   (2007-01-07 17:59:00) [2]

Вот до чего дошли, люди сами ответы находят, то же мне, мастера :)


Antoha111   (2007-01-07 02:51:00) [3]

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


Antoha111   (2007-01-07 01:51:00) [4]

To Anatoly Podgoretsky

А можно поподробнее, что-то не уловил мысль....В смысле присвоением???


try   (2007-01-07 01:03:00) [5]


> Antoha111 ©   (06.01.07 23:06) [11]
> Как его привести к читаемому виду???


Что такое "читаемый вид"?


Anatoly Podgoretsky   (2007-01-07 00:29:00) [6]

> Antoha111  (06.01.2007 23:48:13)  [13]

Зачем мучаться, 16 байтов можно скопировать простым присвоением в цикле.


Antoha111   (2007-01-06 23:48:00) [7]

Пробовал я так......но, увы......ничего не выходит....


Степан   (2007-01-06 23:31:00) [8]

А в чем проблема... Организуешь цикл от 0 до 15, в теле цикла пишешь чтото типа такого:
Line := Line + IntToStr(Buff[I]) + '\';

Если же байты в массиве - коды ANSI, то так:
Line := Line + Chr(Buff[I]);

И все...


Antoha111   (2007-01-06 23:06:00) [9]

Я че-то вообще уже запутался.......

Вообщем после опроса устройства возвращается следующий массив /array [0..15] of Byte/, который в приципе должен содержать серийный номер последнего:

(0, 0, 0, 138, 4, 22, 0, 228, 228, 18, 0, 0, 0, 0, 0, 152)

Как его привести к читаемому виду???


palva   (2007-01-06 22:29:00) [10]

Если допустимо описать приемный массив как массив символов, то можно присвоить массив строке непосредственно.

{$APPTYPE CONSOLE}
var
 a: array [0..24] of Char;
 s: String;
begin
 a[0] := 'a'; a[1] := 's'; a[2] := 'd'; a[3] := Char(0);
 s := a;
 WriteLn(s); // asd
end.


Данный вариант возможен, если в конце данных не стоит нулевой байт, а длина данных передается как-то иначе. В этом случае нужно дополнительно задать SetLength(s, ...)


palva   (2007-01-06 22:22:00) [11]

Если в конце данных стоит нулевой байт, то можно так:

{$APPTYPE CONSOLE}
var
 a: array [0..24] of byte;
 s: String;
begin
 a[0] := Ord('a'); a[1] := Ord('s'); a[2] := Ord('d'); a[3] := 0;
 s := PChar(@a[0]);
 WriteLn(s); // asd
end.


Antoha111   (2007-01-06 22:10:00) [12]

Тут начинает, что-то проясняться при использовании Move. Уточнит, пожалуйста, данную процедуру необходимо организовать в цикле??? Т.е. с каждым элементом байтового массива...


Antoha111   (2007-01-06 22:08:00) [13]

Данный вариант - первый, что я попробовал.......К сожалению, ничего не выходит........


-DeBUGGeR-   (2007-01-06 21:57:00) [14]

Должно работать:
[CODE]
var
 a:array [0..24] of byte;
 s: String;
 i: Byte;
begin
 s := '';
 for i:= 0 to 24 do s := s + Chr(a[i]);
 RichEdit.Lines.Add(s);
end;
[/CODE]


Antoha111   (2007-01-06 19:55:00) [15]

Извиняюсь, надо было сразу проблемму описать.....
Вообщем работаю с внешним оборудованием (конкретно аналогово-цифровой преобразователь). При опросе общей информации об устройстве возвращает результат (фирма, название и т.д.) в виде array [0..24] of byte . Необходимо вывести полученную информацию на форму в RichEdit, например


ors_archangel   (2007-01-06 17:33:00) [16]


> А почему такая уверенность

- поэтому я и поствил знак вопроса в конце [1], а вообще тема = " Array of Byteв String" меня, наверно, сбила с истинного пути :)


Ihor Osov'yak   (2007-01-06 17:30:00) [17]

to ors_archangel

А почему такая уверенность в том, что индексация массива начнается с 0?
И почему такая уверенность в том, что под "преобразованием" подразумевалось бинарное копирование?

to Antoha111. Уточните вопрос, хотя бы в части, что имеется ввиду под "преобразованием". Можно с примером (преобразования, "на бумажке").


ors_archangel   (2007-01-06 16:37:00) [18]

А причём здесь WinAPI?


ors_archangel   (2007-01-06 14:20:00) [19]

setlength(s,length(a)); Move(a[0],s[1],length(s)) ?


Наверх

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