avec ce code j'ai une erreur #42,
j'ai rajouté
EncdStream.Seek(0,soFromBeginning);
et
memo2.Lines.LoadFromStream(EncdStream); (pour vérif)
la copie dans memo2 est correcte
et j'ai une erreur #53 qui doit être une erreur mémoire ???
ici Jpeg.LoadFromStream(EncdStream);
implementation
{$R *.dfm}
function ExcludeChars(const S : string; const CS : TSysCharSet): string;
var
P, PR : {$IFDEF UNICODE}PWord;{$ELSE}PByte;{$ENDIF}
Size, I : Integer;
begin
P := {$IFDEF UNICODE}PWord{$ELSE}PByte{$ENDIF}(S);
Size := Length(S);
SetLength(Result, Size);
PR := {$IFDEF UNICODE}PWord{$ELSE}PByte{$ENDIF}(Result);
I := 0;
while P^ <> $0 do begin
if not (Chr(P^) in CS) then begin
Pr^ := P^;
Inc(Pr);
end
else Inc(I);
Inc(P);
end;
if I > 0 then SetLength(Result, Size - I)
end;
procedure StrToImage(aStrImage: AnsiString; aImage: TImage);
// cette fonction ne sert qu'à afficher une image Jpeg contenue dans une string
var MS: TMemoryStream;
JPG: TJPEGImage;
begin
if aStrImage = '' then
Exit;
MS := TMemoryStream.Create;
with MS do
try
SetSize(Length(astrImage));
MoveMemory(Memory, PByte(aStrImage), Length(astrImage));
Seek(0, soFromBeginning);
SaveToFile('test.jpg');
if (aImage.Picture.Graphic is TJPEGImage) then
TJPEGImage(aImage.Picture.Graphic).LoadFromStream(MS)
else
begin
JPG := TJPEGImage.Create;
try
JPG.LoadFromStream(MS);
aImage.Picture.Assign(JPG);
finally
JPG.Free;
end;
end;
finally
Free;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
aStr: string;
begin
Memo1.Text := ExcludeChars(Memo1.Text, [#13, #10]);
SetLength(aStr, Length(Memo1.Text));
HexToBin(PChar(Memo1.Text), PChar(aStr), Length(aStr));
StrToImage(aStr, Image1);
end;
end.
Super
merci OK en D7 je vais regarder si je peu transposer XE8.
pour les retours chariots et les lignes blanches c'est une erreur que j'ai fait en créant le fichier txt.
merci encore