Форум: "Начинающим";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
ВнизArray of Byte в String Найти похожие ветки
← →
Antoha111 © (2007-01-06 14:06) [0]Добрый день, уважаемые! Возник тут один вопрос, вроде ерундовый, но чего-то ничего не получается......Вообщем имеется массив байтов. Необходимо этот массив преобразовать к String. Заранее благодарен.
← →
ors_archangel © (2007-01-06 14:20) [1]setlength(s,length(a)); Move(a[0],s[1],length(s)) ?
← →
ors_archangel © (2007-01-06 16:37) [2]А причём здесь WinAPI?
← →
Ihor Osov'yak © (2007-01-06 17:30) [3]to ors_archangel
А почему такая уверенность в том, что индексация массива начнается с 0?
И почему такая уверенность в том, что под "преобразованием" подразумевалось бинарное копирование?
to Antoha111. Уточните вопрос, хотя бы в части, что имеется ввиду под "преобразованием". Можно с примером (преобразования, "на бумажке").
← →
ors_archangel © (2007-01-06 17:33) [4]
> А почему такая уверенность
- поэтому я и поствил знак вопроса в конце [1], а вообще тема = "Array of Byte в String" меня, наверно, сбила с истинного пути :)
← →
Antoha111 © (2007-01-06 19:55) [5]Извиняюсь, надо было сразу проблемму описать.....
Вообщем работаю с внешним оборудованием (конкретно аналогово-цифровой преобразователь). При опросе общей информации об устройстве возвращает результат (фирма, название и т.д.) в виде array [0..24] of byte. Необходимо вывести полученную информацию на форму в RichEdit, например
← →
-DeBUGGeR- © (2007-01-06 21:57) [6]Должно работать:
[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 22:08) [7]Данный вариант - первый, что я попробовал.......К сожалению, ничего не выходит........
← →
Antoha111 © (2007-01-06 22:10) [8]Тут начинает, что-то проясняться при использовании Move. Уточнит, пожалуйста, данную процедуру необходимо организовать в цикле??? Т.е. с каждым элементом байтового массива...
← →
palva © (2007-01-06 22:22) [9]Если в конце данных стоит нулевой байт, то можно так:
{$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.
← →
palva © (2007-01-06 22:29) [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, ...)
← →
Antoha111 © (2007-01-06 23:06) [11]Я че-то вообще уже запутался.......
Вообщем после опроса устройства возвращается следующий массив /array [0..15] of Byte/, который в приципе должен содержать серийный номер последнего:
(0, 0, 0, 138, 4, 22, 0, 228, 228, 18, 0, 0, 0, 0, 0, 152)
Как его привести к читаемому виду???
← →
Степан (2007-01-06 23:31) [12]А в чем проблема... Организуешь цикл от 0 до 15, в теле цикла пишешь чтото типа такого:
Line := Line + IntToStr(Buff[I]) + "\";
Если же байты в массиве - коды ANSI, то так:Line := Line + Chr(Buff[I]);
И все...
← →
Antoha111 © (2007-01-06 23:48) [13]Пробовал я так......но, увы......ничего не выходит....
← →
Anatoly Podgoretsky © (2007-01-07 00:29) [14]> Antoha111 (06.01.2007 23:48:13) [13]
Зачем мучаться, 16 байтов можно скопировать простым присвоением в цикле.
← →
try (2007-01-07 01:03) [15]
> Antoha111 © (06.01.07 23:06) [11]
> Как его привести к читаемому виду???
Что такое "читаемый вид"?
← →
Antoha111 © (2007-01-07 01:51) [16]To Anatoly Podgoretsky
А можно поподробнее, что-то не уловил мысль....В смысле присвоением???
← →
Antoha111 © (2007-01-07 02:51) [17]Все, проблемма решилась при помощи функции StrPas, долго пришлось порыться в unit"ах......
Всем большое спасибо за участие......Ветка закрыта.....
← →
ors_archangel © (2007-01-07 17:59) [18]Вот до чего дошли, люди сами ответы находят, то же мне, мастера :)
← →
Ihor Osov'yak © (2007-01-08 00:35) [19]Сообщение Antoha111 © (07.01.07 02:51) [17] противоречит сообщению
Antoha111 © (06.01.07 23:06) [11]
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.01.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.042 c