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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.057 c
15-1168445263
killmeplease
2007-01-10 19:07
2007.01.28
Что ж это такое?


2-1168428563
Megabyte
2007-01-10 14:29
2007.01.28
Открыть страницу в браузере без компонента TWebBrowser


15-1168083641
Чапаев
2007-01-06 14:40
2007.01.28
InnoSetup, файловая система


15-1168460817
Chort
2007-01-10 23:26
2007.01.28
Логотип программы


15-1168400743
Alex_ey
2007-01-10 06:45
2007.01.28
спящий режим