Comment copier un string dans un TByteDynArray ? - Delphi/Pascal - Programmation
Marsh Posté le 23-01-2011 à 12:51:35
Au cas où : 
 
J'ai trouvé ça sur http://www.experts-exchange.com : 
 
function StringToByteArray(const Str: string): TByteDynArray; 
var 
  MSTream: TMemoryStream; 
  pTemp: pointer; 
begin 
  MStream := TMemoryStream.Create; 
  MStream.Write(str,length(str)); 
  MStream.Position := 0; 
  
  SetLength(Result, MStream.Size); 
  pTemp := @Result[0]; 
  MStream.Position := 0; 
  MStream.Read(pTemp^, MStream.Size); 
  
  MStream.Free; 
end; 
  
  
function ByteArrayToString(const ByteArray: TByteDynArray): string; 
var 
  MStream: TMemoryStream; 
begin 
  MStream := TMemoryStream.Create; 
  CopyToStream(ByteArray, MStream); 
  MStream.Position := 0; 
  try 
    MStream.Read(result,MStream.Size); 
  finally 
    MStream.Free; 
  end; 
end;
Marsh Posté le 24-01-2011 à 08:20:26
| PatG a écrit : Au cas où :  | 
 
 
Merci : je le note aussi. Le source et la source également ! 
 
J'avais trouvé ça :  
 
function StringToByteArray(const S: AnsiString): TByteDynArray; 
var 
  Len: Integer; 
begin 
  Len := Length(S); 
  SetLength(Result, Len); 
  Move(S[1], Result[0], Len); 
end; 
 
 
Marsh Posté le 26-01-2011 à 19:04:38
ReplyMarsh Posté le 27-01-2011 à 12:04:55
| PatG a écrit : plus court et facilement compréhensible : c'est mieux  | 
 
Peut-être.  
 
Mais je n'aurais pas pensé à cette utilisation des streams. Il faut que je m'intéresse de plus près aux flux  . En tout cas merci qd-même
 . En tout cas merci qd-même  
 
Marsh Posté le 23-12-2010 à 12:57:01
Bonjour à tous 
 
Voilà : la question est toute bête, mais j'ai tout essayé (StrCopy() etc) rien ne passe. Et comme le TByteDynArray en question est dynamique, je ne peux pas savoir combien de cases il contient à sa déclaration n'est-ce pas ? Autrement, j'essayerais d'affecter chaque caractère de ma string à caque case du tableau.
Si qqn peut m'aider, merci.