![]() |
MemoryStream auf Speicherinhalt?
Hallo Forum,
kurzes Problem: Es liegen mehrere Bilder in einem definierten Speicherbereich dessen Einsprungsadresse ich kenne. Wie kann man nun einen MemoryStream von einem Speicherblock erzeugen und diesen bsp. via TCP verschicken? Momentan habe ich eine Quick&Dirty Lösung die funktioniert: Ich kopiere das Bild in die Zwischenablage und versende den Stream übers Netz.
Delphi-Quellcode:
Ich würde aber jetzt gern das LoaderBMP aus dem Speicher direkt erzeugen. Im Speicher liegen aber keine Bilddatan der herkömmlichen Art, sondern RAW Images. Aber das macht ja nichts, denn auf der Client Empfangsseite "weiss" ich ja was ankommt.LoaderBMP.LoadFromClipboardFormat(CF_BITMAP, Clipboard.GetAsHandle(CF_BITMAP), 0); // Save Image to Stream LoaderBMP.SaveToStream(MemStr); Kann mir jemand Helfen? Problem in Delphi Worten: MemoryStream.Create(Anfangsadresse.Im.Speicher, Endadresse.Im.Speicher); TCPSend(MemoryStream); Öhm? |
Re: MemoryStream auf Speicherinhalt?
Hi!
Du könntest dir eine neue Klasse von TCustomMemoryStream ableiten und deren SetPointer-Methode nutzen. Zitat:
//edit: alternativ kannst du auch einfach den Speicher auslesen (z.B. in ein Array of Byte) und dann dieses Array versenden |
Re: MemoryStream auf Speicherinhalt?
Ok tolle Sache. Werde ich mal ausprobieren. Danke :balloon:
|
Re: MemoryStream auf Speicherinhalt?
Hallo,
warum sollen denn die Daten aus dem Speicher erst in einen Stream verpackt werden? Die gängigen TCP-Komponenten beherrschen auch den Versand direkt ab Speicheradresse (Indy: WriteBuffer; VCL: SendBuf). Grüße vom marabu |
Re: MemoryStream auf Speicherinhalt?
Hallo zurück,
hmm...gute Frage. Ich nutze Indy10. Aber die ganze Sache ist mir irgendwie zu verwickt. Die Daten liegen quasi in einem NonPagedMem und werden dort von einer FrameGrabber Karte reingeschrieben. Ich hab grad mal nachgesehen. Write() nimmt auch einen Buffer vom Typ TBytes entgegen. Stimmt. Du meinst ich sollte einfach Byte aussm Ram lesen und knallhart verschicken? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz