![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Непростой вопрос по string [D5, D6, D7, Win2k, WinXP]
ps2006 © (2006-07-24 13:06:00)Всем привет, многоуважаемый ALL !
Есть вопросик по стрингу: есть поток, с него нужно прочитать n (ну например 7) байт в переменную типа string.
Я делаю так:
var
s: string;
FResponse: TMemoryStream;
begin
... другой код ...
SetLength(s, 7);
FResponse.Read(s[1], 7);
Неужели нет более красивого решения ?
Меня не совсем устраивает обращение к переменной так: s[1]
Спасибо.
Loginov Dmitry (2006-07-24 16:31:00) [21]> SetString(s,PChar(FResponse.Memory),7);
Потоки для чего чего сделаны? Чтобы можно было последовательно считать данные в разные переменные. А здесь получается, что только первые 7 байт потока скопируются в проку. В этом плане [0] все-же проще и универсальнее.
Loginov Dmitry (2006-07-24 16:26:00) [22]> только нужно сделать немного по другому:
>
> SetLength(s, 7);
> FResponse.Read(Pointer(s)^, 7);
И что это будет? Бред!
Reindeer Moss Eater (2006-07-24 16:25:00) [23]Более красивого решения нет. Имхо
SetString(s,PChar(FResponse.Memory),7);
Loginov Dmitry (2006-07-24 16:21:00) [24]> не знаю, чем мне не нравится такое обращение к переменной,
> у меня "чутье" на плохой стиль написания кода.
Чутье вас подводит. Такой стиль - ОТЛИЧНЫЙ! Более красивого решения нет. Имхо.
Stakan (2006-07-24 13:30:00) [25]ps2006 © (24.07.06 13:21) [4]
>только нужно сделать немного по другому:
>
> SetLength(s, 7);
> FResponse.Read(Pointer(s)^, 7);
Ну это подразумевалось :) Была приведёна строчка кода которую можно изменить.
Семеныч (2006-07-24 13:30:00) [26]
> Непростой вопрос
Да?
ps2006 (2006-07-24 13:30:00) [27]Спасибо всем за ваши ответы !
ps2006 (2006-07-24 13:29:00) [28]>> Меня не совсем устраивает обращение к переменной так: s[1]
>Чем?
не знаю, чем мне не нравится такое обращение к переменной, у меня "чутье" на плохой стиль написания кода.
ps2006 (2006-07-24 13:21:00) [29]>FResponse.Read(Pointer(s)^, 7);
>Так красивее?
Да, так однозначно красивее, спасибо :-)
только нужно сделать немного по другому:
SetLength(s, 7);
FResponse.Read(Pointer(s)^, 7);
Спасибо
Reindeer Moss Eater (2006-07-24 13:17:00) [30]SetString(s,PChar(FResponse.Memory),7);
Stakan (2006-07-24 13:10:00) [31]ps2006 © (24.07.06 13:06)
FResponse.Read(Pointer(s)^, 7);
Так красивее?
tesseract (2006-07-24 13:08:00) [32]
> Меня не совсем устраивает обращение к переменной так: s[1]
Чем?