![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WideString из массива.
newcounter © (2007-08-14 12:59:00)У меня есть некоторый массив заполненный данными, среди этих данных мне нужно считать строку типа WideString заранее известной длины.
Привожу код для примера. У меня ничего не получилось. Что я делаю не так?
type
PData = ^TData;
TData = record
Dt: array [0..$FF - 1] of Byte;
Position: Integer; // текущая позиция
end;
function GetWideString(Data: PData; NeedLength: Integer): WideString;
begin
Result := '';
while NeedLength > 0 do
begin
Result := Result + PWideChar(LongWord(Data) + Data^.Position)^;
Inc(Data^.Position, SizeOf(WideChar));
Dec(NeedLength, SizeOf(WideChar));
end;
end;
oxffff (2007-08-17 17:50:00) [1]
> если нечетное, то один байт "отвалится"
Второй байт "Отвалиться". А первый перезатрет байт вне lWStr
MetalFan (2007-08-16 19:28:00) [2]
> А если CSomeSize нечетное? :)
я привел пример кода)
если нечетное, то один байт "отвалится"
oxffff (2007-08-14 19:38:00) [3]
> MetalFan © (14.08.07 17:38) [4]
> upd: Move( lArr[0], lWStr[1], C_SomeSize );
А если CSomeSize нечетное? :)
MetalFan (2007-08-14 17:38:00) [4]upd:
Move( lArr[0], lWStr[1], C_SomeSize );
MetalFan (2007-08-14 17:37:00) [5]
> Не знаю, как из массива корректно достать widestring.
type
TSomeArr = array[0..C_SomeSize-1] of byte;
var
lArr: TSomeArr;
lWStr: WideString;
begin
SetLength( lWStr, C_SomeSize div 2 );
Move( lArr[0], lWStr[1] );
newcounter (2007-08-14 16:38:00) [6]
> А что должно было "получиться" ?и к чему эти выкрутасы с
> массивами и записями, если при фигуранте с именем Position
> гораздо логичней было бы использование наследника TMemoryStream
> ?
Получиться должна была на выходе WideString строка. У меня ничего не получилось, ерунда просто. Не знаю, как из массива корректно достать widestring. Как это все же сделать?
Использовать MemStream не получится. Я лишь доделываю функцию в проект, а на этом извращенном массиве и записях, много кода написано.
Сергей М. (2007-08-14 13:04:00) [7]
> У меня ничего не получилось
А что должно было "получиться" ?
и к чему эти выкрутасы с массивами и записями, если при фигуранте с именем Position гораздо логичней было бы использование наследника TMemoryStream ?