Delphi array of byte to string
Delphi array of byte to string
Господа, есть такая структура, цель преобразовать значение TRawPkt -> Data в String:
PRawPkt = ^TRawPkt;
TRawPkt = record
Data: array[0..MAX_DATA_LEN — 1] of Byte;
Len: Word;
end;
var
pkt: TRawPkt;
fbu: String;
begin
fbu := pchar(pkt.Data);
На последней строке, не получается. По моей идее тут должен был помоч pchar, но видимо знания теории подкачивают, — не знаю что делать.
← →
Шпиён ( 2006-07-03 21:03 ) [1]
← →
begin. end © ( 2006-07-03 21:06 ) [2]
← →
MBo © ( 2006-07-03 21:10 ) [3]
SetString(fbu, @pkt.Data, pkt.len);
← →
slon2k ( 2006-07-03 21:12 ) [4]
Это первое, что в голову пришло, но в итоге, ерунда получается. Не полностью значение в стринге оказывается, так например у меня там оказалось только 2 первых из массива, а должно быть гораздо больше.
> fbu := pkt.Data
Ну это не стыковка массива и стринга.
[Pascal Error] . Incompatible types
← →
Шпиён ( 2006-07-03 21:17 ) [5]
> MBo © (03.07.06 21:10) [3]
> slon2k (03.07.06 21:12) [4]
SetString(fbu, pchar(@pkt.Data), pkt.len);
> например у меня там оказалось только 2 первых из массива,
> а должно быть гораздо больше.
Проверь свой массив. Нолик не затесался после первых двух символов?
← →
begin. end © ( 2006-07-03 21:20 ) [6]
> slon2k (03.07.06 21:12) [4]
> > fbu := pkt.Data
> Ну это не стыковка массива и стринга.
Сочувствую. У меня [2] работает, причём в той же версии Delphi, что и у Вас.
> > SetString(fbu, @pkt.Data, pkt.len);
> [Pascal Error] . Incompatible types
В общем случае — PChar(@pkt.Data). А в данном — достаточно убрать собачку.
← →
slon2k ( 2006-07-03 21:29 ) [7]
Спасибо! Вроде такая штука заработала:
SetString(fbu, pchar(@pkt.Data), pkt.len);
← →
Пусик © ( 2006-07-03 21:29 ) [8]
> Сочувствую. У меня [2] работает, причём в той же версии
> Delphi, что и у Вас.
Вряд ли. или просьба опции компилятора дать, при которых это работать будет.
← →
begin. end © ( 2006-07-03 21:37 ) [9]
> Пусик © (03.07.06 21:29) [8]
Да, извиняюсь. Мой ответ относится к случаю array of Char, а у автора — of Byte.
Delphi array of byte to string
Опции темы
Joker07 |
| ||
![]() Профиль Репутация: нет | |||
|
Alexeis |
| ||
![]() Амеба Профиль Репутация: 34 Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать | |||
|
Joker07 |
| ||
![]() Профиль Репутация: нет
| |||
|
Virtuals |
| ||||
Цитата(Joker07 @ 13.11.2008, 00:19 ![]() |
Непонял. Это такая шутка или что. Причем тут функция Move? |
Код |
var a:array[1..8] of Byte; b:packed array[0..3] of Word; s:ShortString; procedure TForm1.Button1Click(Sender: TObject); begin setlength(s,8); a[1]:=$45; a[2]:=$46; a[3]:=$47; a[4]:=$48; move(a,s[1],8); Memo1.Lines.Add(s); b[0]:=$4748; b[1]:=$4546; move(b,s[1],8); Memo1.Lines.Add(s); end; |
Код |
s:=inttohex(a[1],2)+inttohex(a[2],2)+inttohex(a[3],2)+inttohex(a[4],2); Memo1.Lines.Add(s); |
Это сообщение отредактировал(а) Virtuals — 13.11.2008, 06:22
![]() ![]() ![]() | ![]() |
Joker07 |
| ||
![]() Профиль Репутация: нет | |||
|
| |||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) |
0 Пользователей: |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
[ Время генерации скрипта: 0.1219 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Delphi array of byte to string
2 type Name = array of
3 Name : array of
Name : Array type; // Открытый динамический массив
|