«

»

июня 26 2011

Распечатать Запись

Взаимные преобразования OleVariant и String

Ниже приведены две простые функции на Delphi для преобразования OleVariant в String и обратно. Функции написаны с использованием TStringStream.

1. Преобразование OleVariant в String

uses Classes, Variants;
function OleVariantToString(const Value: OleVariant): string;
  var ss: TStringStream;
      Size: integer;
      Data: PByteArray;
begin
  Result:='';
  if Length(Value) = 0 then Exit;
  ss:=TStringStream.Create;
  try
    Size := VarArrayHighBound (Value, 1) - VarArrayLowBound(Value, 1) + 1;
    Data := VarArrayLock(Value);
    try
      ss.Position := 0;
      ss.WriteBuffer(Data^, Size);
      ss.Position := 0;
      Result:=ss.DataString;
    finally
      VarArrayUnlock(Value);
    end;
  finally
    ss.Free;
  end;
end;

2. Преобразование String в OleVariant

uses Classes, Variants;
function StringToOleVariant(const Value: string): OleVariant;
  var Data: PByteArray;
      ss: TStringStream;
begin
  Result:=null;
  if Value='' then Exit;
  ss:=TStringStream.Create(Value);
  try
    Result := VarArrayCreate ([0, ss.Size - 1], varByte);
    Data := VarArrayLock(Result);
    try
      ss.Position := 0;
      ss.ReadBuffer(Data^, ss.Size);
    finally
      VarArrayUnlock(Result);
    end;
  finally
    ss.Free;
  end;
end;

Постоянная ссылка на это сообщение: http://www.foxbase.ru/delphi/vzaimnye-preobrazovaniya-olevariant-i-string.htm

Оставить комментарий

Почта (не публикуется) Обязательные поля помечены *