Bonjour,

je bloque actuellement sur la conversion d'un bout de code transformé du C++ au C#, j'obtient l'erreur suivante :

Impossible de convertir le type 'short[]' en 'System.IntPtr' (avec le cas simillaire pour le byte[])
Si quelqu'un avait une solution et, en abusant un peu, une explication sur la dite solution, je lui en serait reconnaissant.

Merci à l'avance

En C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void CInterpret :: SaveState(SaveFile& file)
{
	//Check
	file.WriteUInt(check_CInterpret);
 
	file.WriteUShort(m_GamePart);
	file.WriteUShort(m_CurrentGamePart);
 
	m_pDisplay->SaveState(file);
 
	file.WriteBytes((const void*)m_TabVars, sizeof(short)*es_MaxVars);
 
	file.WriteBytes((const void*)m_OpStack, sizeof(ushort)*256);
 
	file.WriteUShort((int)m_OpStackPoint-(int)m_OpStack);
 
	file.WriteBytes((const void*)m_EntityFlags, sizeof(uchar)*es_MaxEntity);
	file.WriteBytes((const void*)m_EntityFrameFlags, sizeof(uchar)*es_MaxEntity);
 
	file.WriteBytes((const void*)m_EntityPoint, sizeof(short)*es_MaxEntity);
	file.WriteBytes((const void*)m_EntityFrame, sizeof(short)*es_MaxEntity);
 
	file.WriteInt(m_NbTrameToWait);
	file.WriteInt(m_ProcessEntity);
	file.WriteBool(m_showBuffer);
 
	//Check
	file.WriteUInt(check_CInterpret);
}

En C#
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public void SaveState(ref SaveFile file)
	{
		//Check
		file.WriteUInt((uint)GlobalMembersAw_Interpret.check_CInterpret);
 
		file.WriteUShort(m_GamePart);
		file.WriteUShort(m_CurrentGamePart);
 
		m_pDisplay.SaveState(ref file);
 
		file.WriteBytes((System.IntPtr)m_TabVars, sizeof(short) * (int)AnonymousEnum.es_MaxVars);
 
		file.WriteBytes((System.IntPtr)m_OpStack, sizeof(ushort) * 256);
 
		file.WriteUShort(m_OpStackPoint - m_OpStack);
 
		file.WriteBytes((System.IntPtr)m_EntityFlags, sizeof(byte) * (int)AnonymousEnum.es_MaxEntity);
		file.WriteBytes((System.IntPtr)m_EntityFrameFlags, sizeof(byte) * (int)AnonymousEnum.es_MaxEntity);
 
		file.WriteBytes((System.IntPtr)m_EntityPoint, sizeof(short) * (int)AnonymousEnum.es_MaxEntity);
		file.WriteBytes((System.IntPtr)m_EntityFrame, sizeof(short) * (int)AnonymousEnum.es_MaxEntity);
 
		file.WriteInt(m_NbTrameToWait);
		file.WriteInt(m_ProcessEntity);
		file.WriteBool(m_showBuffer);
 
		//Check
		file.WriteUInt(GlobalMembersAw_Interpret.check_CInterpret);
	}