![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringOf
Gu © (2011-12-03 19:42:00)StringOf = массив байт в строку. А как строку в массив байт?
B:TBytes;s:string;
..
s:=TBytes(b);
компилит норм но показывет только 1 символ
DVM (2011-12-03 22:10:00) [21]
> Gu (03.12.11 22:02) [12]
> тот пример не работал потомучто тогда стринги еще ансями
> были :)
"Тот пример" тоже будет работать (причем в любой Delphi в нем размер Char проверяется):
var
buf: TBytes;
s: String;
begin
s := Edit1.Text;
SetLength(buf, Length(s) * SizeOf(Char));
if s <> '' then Move(s[1], buf[0], Length(buf));
end;
Gu (2011-12-03 22:02:00) [22]во.
тот пример не работал потомучто тогда стринги еще ансями были :)
спасибо dvm, но мне нужно было для string в xe, решение уже нашел, выше см.
DVM (2011-12-03 21:59:00) [23]
> Обратное однозначное преобразование невозможно.
Строку в массив байт невозможно?
Массив байт в строку то он уже нашел.
DVM (2011-12-03 21:55:00) [24]
> Gu (03.12.11 20:31) [6]
var
b: TBytes;
S, S1: AnsiString;
begin
S := 'ПРИВЕТ!';
SetLength(B, Length(S));
Move(S[1], B[0], Length(S));
S1:=StringOf(B);
Caption := S1;
end;
Gu (2011-12-03 21:53:00) [25]нашел
b:=TEncoding.Unicode.GetBytes(s);
Ega23 (2011-12-03 21:53:00) [26]
> для особо непонятливых:
Для особо непонятливых: строка это массив символов (char). В Ansi-случае AnsiChar и Byte суть одно и то же.
В unicode-случае char и byte не одно и то же, размер Char более одного байта.
Соответственно, твоя функция // Converts a byte array into a Unicode string using the default system locale.
Обратное однозначное преобразование невозможно. Это как интеграл берёшь, с конце "плюс С" не просто так добавляется.
В простейшем случае:
var
aStr: AnsiString;
wStr: string;
begin
wStr := string(aStr);
aStr := AnsiString(wStr);
end;
sniknik (2011-12-03 21:25:00) [27]> // Converts a byte array into a Unicode stringusing the default system locale.
"обратная" в общем случае невозможна. получишь набор из вопросов.
чего не понятно?
Gu (2011-12-03 20:31:00) [28]если не знаете ответа нечего писать.
для особо непонятливых:
есть функция
function StringOf(Bytes:TBytes):String;
// Converts a byte array into a Unicode string using the default system locale.
нужна обратная
function AntiStringOf(str:String):TBytes;
чего не понятно?
sniknik (2011-12-03 20:22:00) [29]> это понятно. только вопрос не об этом
если бы было понятно, то вопроса бы не было.
строка и так уже массив байт. разница только в интерпретации... ну вот чтобы сменить, свое к ним отношение, домашнее задание 1000 раз повторить мантру - "это уже массив байт, это уже массив байт, ...".
> нужна функция обратная StringOf. Из string получить tbytes
чего??? еще раз по ручки, начни с описания чего делает, как ты понимаешь, StringOf... и что есть для нее "обратная"? только не функцией, а описанием действия.
Gu (2011-12-03 19:54:00) [30]нужна функция обратная StringOf. Из string получить tbytes
Gu (2011-12-03 19:50:00) [31]это понятно. только вопрос не об этом
Ega23 (2011-12-03 19:44:00) [32]Строка и так уже массив байт.
Gu (2011-12-03 19:43:00) [33]http://embarcadero.newsgroups.archived.at/public.delphi.rtl/200907/0907291663.html
тут есть один пример но он не фурычит