Entwickler-Ecke
Basistechnologien - Pointer in C#
HoPPeL - Fr 18.03.11 15:29
Titel: Pointer in C#
hi,
ich bins schon wieder :oops: ...
für mein progrämmchen benötige ich zwingend folgende methode einer klasse:
C#-Quelltext
1:
| void vtkImageImport::SetImportVoidPointer (void * ptr) |
es wird also ein Pointer auf mein Array, welches meine Punkte enthält benötigt
also habe ich mich ein wenig umgeschaut, wie ich das nun in c# gelöst bekomme und folgendes ist bis jetzt dabei rausgekommen
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| int[] buffer = {255, 0}; vtkImageImport test = new vtkImageImport(); unsafe { fixed (void* pData = buffer); { test.SetImportVoidPointer((IntPtr)pData); } } |
wo könnte das Problem liegen, gibt es eine bessere/saubere Vorgehensweise ? mfg
Kha - Fr 18.03.11 15:39
Das Semikolon hinter fixed ;) ...
Denke aber daran, dass der Pointer dann auch nur innerhalb des fixed-Blocks gültig ist.
Christian S. - Fr 18.03.11 15:42
Hallo!
Ohne es gerade teste zu können:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| vtkImageImport test = new vtkImageImport();
int[] buffer = {255,0}; var pin = GCHandle.Alloc(buffer, GCHandleType.Pinned);
try { test.SetImportVoidPointer(pin.AddrOfPinnedObject()); } finally { pin.Free(); } |
Grüße,
Christian
HoPPeL - Fr 18.03.11 15:48
ohhh man da guck ich da ne ewigkeit drauf und raffs nicht, dass da ein Semikolon steht ... :/
danke Christian, werds gleich mal so test, wie du es beschrieben hast :)
mfg
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!