Cirec
Messages postés3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 19 juil. 2011 à 02:50
Salut,
[quote= Caribensila]normalement un fichier de ressources se lit avec ReadComponentResFile/quote je suis pas tout à fait d'accord avec ça !
ReadComponentResFile est plutôt fait pour charger d'autres type de ressources, genre fichier *.dfm ou autre flux de composants.
Mais pour le type de ressources *.res
TResourceStream s'y prête très bien ...
d'ailleurs voici un exemple:
pour les testes j'ai extrait le fichier en question de la ressource "luna.msstyles" et enregistré en "binary" donc en hexa et je l'ai chargé avec un TMemoryStream
Mais le principe ne change pas et la modification du code vers "TResourceStream" est très facile à faire:
[hr] procedure TForm1.Button1Click(Sender: TObject);
[b]var
/bMS: TMemoryStream;
Data: PByte;
DataBegin, DataEnd: Cardinal;
aStr: string;
[b]begin
/bMS : = TMemoryStream.Create;
[b]try
/bMS.LoadFromFile('1.bin');
GetMem(Data, MS.Size);
[b]try
/bMS.ReadBuffer(Data^, MS.Size);
DataBegin := Cardinal(Data);
DataEnd := DataBegin + MS.Size;
while DataBegin < DataEnd [b]do
begin
/baStr : = PWideChar(DataBegin);
Memo1.Lines.Add(aStr);
Inc(DataBegin, Length(aStr) * 2 + 2);
end;
[b]finally
/bFreeMem(Data);
end;
[b]finally
/bMS.Free;
end;
end;
[hr]
ah oui ...
ps: pour ce code il faut un TButton et un TMemo