Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Вниз

array of byte to string   Найти похожие ветки 

 
slon2k   (2006-07-03 20:55) [0]

Господа, есть такая структура, цель преобразовать значение 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]

fbu := pchar(@pkt.Data); ?


 
begin...end ©   (2006-07-03 21:06) [2]

fbu := pkt.Data


 
MBo ©   (2006-07-03 21:10) [3]

SetString(fbu, @pkt.Data, pkt.len);


 
slon2k   (2006-07-03 21:12) [4]


> fbu := pchar(@pkt.Data); ?


Это первое, что в голову пришло, но в итоге, ерунда получается. Не полностью значение в стринге оказывается, так например у меня там оказалось только 2 первых из массива, а должно быть гораздо больше.


> fbu := pkt.Data

Ну это не стыковка массива и стринга.


> SetString(fbu, @pkt.Data, pkt.len);


[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, что и у Вас.


Вряд ли. или просьба опции компилятора дать, при которых это работать будет.


> slon2k   (03.07.06 20:55) 

 SetLEngth(fbu,pkt.Len);
 Move(pkt.Data[0],fbu[1], pkt.Len);


 
begin...end ©   (2006-07-03 21:37) [9]

> Пусик ©   (03.07.06 21:29) [8]

Да, извиняюсь. Мой ответ относится к случаю array of Char, а у автора -- of Byte.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.07.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.012 c
15-1150988089
Gamer
2006-06-22 18:54
2006.07.23
Документ Word и Delphi


2-1152024016
Новинький
2006-07-04 18:40
2006.07.23
Как по резать слово на части?


15-1151066712
Alarm
2006-06-23 16:45
2006.07.23
О конференции "Начинающим"


9-1132093005
XCoder
2005-11-16 01:16
2006.07.23
Стоит ли учить DirectX?


15-1151015281
DevilDevil
2006-06-23 02:28
2006.07.23
Синус двойного угла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский