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
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.