![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
array of byte to string [D7]
slon2k © (2006-07-03 20:55:00)Господа, есть такая структура, цель преобразовать значение 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, но видимо знания теории подкачивают, - не знаю что делать.
begin...end (2006-07-03 21:37:00) [1]> Пусик © (03.07.06 21:29) [8]
Да, извиняюсь. Мой ответ относится к случаю array of Char, а у автора -- of Byte.
slon2k (2006-07-03 21:29:00) [2]Спасибо! Вроде такая штука заработала:
SetString(fbu, pchar(@pkt.Data), pkt.len);
Пусик (2006-07-03 21:29:00) [3]
> Сочувствую. У меня [2] работает, причём в той же версии
> Delphi, что и у Вас.
Вряд ли. или просьба опции компилятора дать, при которых это работать будет.
> slon2k (03.07.06 20:55)
SetLEngth(fbu,pkt.Len);
Move(pkt.Data[0],fbu[1], pkt.Len);
begin...end (2006-07-03 21:20:00) [4]> 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 ). А в данном -- достаточно убрать собачку.
Шпиён (2006-07-03 21:17:00) [5]
> MBo © (03.07.06 21:10) [3]
> slon2k (03.07.06 21:12) [4]
SetString(fbu, pchar(@pkt.Data), pkt.len);
> например у меня там оказалось только 2 первых из массива,
> а должно быть гораздо больше.
Проверь свой массив. Нолик не затесался после первых двух символов?
slon2k (2006-07-03 21:12:00) [6]
> fbu := pchar(@pkt.Data); ?
Это первое, что в голову пришло, но в итоге, ерунда получается. Не полностью значение в стринге оказывается, так например у меня там оказалось только 2 первых из массива, а должно быть гораздо больше.
> fbu := pkt.Data
Ну это не стыковка массива и стринга.
> SetString(fbu, @pkt.Data, pkt.len);
[Pascal Error] ... Incompatible types
MBo (2006-07-03 21:10:00) [7]SetString(fbu, @pkt.Data, pkt.len);
begin...end (2006-07-03 21:06:00) [8]fbu := pkt.Data
Шпиён (2006-07-03 21:03:00) [9]fbu := pchar(@pkt.Data); ?