Du solltest vielleicht deine Icons hochladen.
In deinem Stream kommt zuerst die Länge und danach die Nutzdaten (das Icon).
Dein Gesamtstream sieht ungefähr so aus (L=Länge, x,y,&z=Nutzdaten):
Code:
LLLLxxxxxxxxxxxxxxxxxxxLLLLyyyyyyyyyyyyyyyyyyyLLLLzzzzzzzzzzzzzzzzzz
Sind nun x,y & z immer nur Icons oder kann das auch etwas anderes sein?
Falls es auch andere Daten sind, dann sollte zusätzlich zur Längenangabe auch eine Datentypangabe im Stream vorhanden sein.
Ansonsten; hast du mal versucht den MemoryStream innerhalb procedure ReadIconFromStream wieder in eine Datei zu speichern?
Und dann einen Binärvergleich mit der orginalen Icondatei durchführen.