![]() |
AW: Memorystream vs TMemoryStream
Funktioniert jetzt.
Den ganzen Kram mit dem Pinnedobject konnte ich mir sparen und ist nicht nötig. Der einzige Nachteil habe jetzt einen unsicheren Code .. was ich eigentlich nicht wollte. (unsafe) bedingt durch die Konvertierung vom Image zum Pointer. Wenn jemand eine Idee hat wie ich das anders machen kann. Nur zu! Möchte das unsafe gern wieder entfernen.
Code:
gruss
byte[] openFile = File.ReadAllBytes(OpenFileDialog1.FileName);
fixed (byte* p = openFile) { IntPtr image = (IntPtr)p; CoverArtData.Name = Marshal.StringToHGlobalAuto(Description); CoverArtData.CoverType = 3; CoverArtData.MIMEType = Marshal.StringToHGlobalAuto(MIMEType); CoverArtData.Description = Marshal.StringToHGlobalAuto(Description); CoverArtData.Width = Width; CoverArtData.Height = Height; CoverArtData.ColorDepth = ColorDepth; CoverArtData.NoOfColors = NoOfColors; CoverArtData.PictureFormat = CoverArtPictureFormat; CoverArtData.Data = image; CoverArtData.DataSize = BitmapStream.Length; if (TagsLib.TagsLibrary_AddCoverArt(Tags, TTagType.ttAutomatic, CoverArtData) == -1) { MessageBox.Show("Error while adding cover art: ", OpenFileDialog1.FileName, MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error); } image = IntPtr.Zero; BitmapStream.Close(); btnSave_MouseDown(sender, e); } |
AW: Memorystream vs TMemoryStream
Das unsafe wirst du nicht wieder los, weil du schließlich Code produzierst, der unmanaged, also außerhalb der Kontrolle des .NET-RT liegt. Das wiederum liegt an der Delphi-DLL, die nun mal unmanaged ist.
|
AW: Memorystream vs TMemoryStream
Zitat:
Wird nur verwendet wenn ich den Code mit dem flag unsafe kompiliere und unsafe explicit verwende. Was hat das mit Delphi zu tun? Wenn ich den code nicht mit unsicheren Pointern schreibe dürfte unsafe nicht aktiv sein. unmanaged nicht gleich unsafe gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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