Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: COM Object : Binär bzw. Struktur übergeben

  Alt 3. Nov 2009, 12:00
Hier sind zwei Funktionen mit denen man einen AnsiString als "Variant-Array of varBytes"
verpacken und wieder auspacken kann.
Dass man beliebige binäre Daten in einen AnsiString packen kann sollte ja bekannt sein.

Delphi-Quellcode:
function VarByteArrayCreate(const s:AnsiString):Variant;
var
   data : Pointer;
begin
   if s<>'then
   begin
      Result := VarArrayCreate([0, Length(s)-1], varByte);
      data := VarArrayLock(Result);
      try
         Move(s[1], data^, Length(s));
      finally
         VarArrayUnlock(Result);
      end;
   end
   else
      Result := Null;
end;

function VarByteArrayToString(v:Variant):AnsiString;
var
   len : Integer;
   data : Pointer;
begin
   Assert(VarType(V) = varByte or varArray);
   Assert(VarArrayDimCount(V) = 1);

   len := VarArrayHighBound(v,1)-VarArrayLowBound(v,1)+1;
   SetLength(result, len);

   data := VarArrayLock(v);
   try
      Move(data^, Result[1], len);
   finally
      VarArrayUnlock(v);
   end;
end;
Andreas
  Mit Zitat antworten Zitat