AccUnit

Unit Testing in VBA - Microsoft Access, Excel, …

Hinweise und Notizen zum Quellcode

Aus AccUnit
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „* Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code> <source lang="csharp">void CallTestByName(string procName, [MarshalAs(U…“)
Zeile 1: Zeile 1:
 +
AccUnit ist in C# geschrieben. Als Entwicklungsumgebung wird Visual Studio 2010 verwendet.
 +
 +
Hier einige Punkte:
 +
 +
=== Object statt Variant in COM Interface ===
* Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code>
* Object statt Variant in COM Interface: <code>[MarshalAs(UnmanagedType.IDispatch)]</code>
<source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add);
<source lang="csharp">void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add);
Zeile 5: Zeile 10:
object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }</source>
object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }</source>
 +
 +
 +
=== ByRef-Übergabe mit InvokeMember und Application.Run ===
* ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden
* ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden
<source lang="csharp">object[] parameters = { getTestClassFactoryProcedureName(className), new Object() };
<source lang="csharp">object[] parameters = { getTestClassFactoryProcedureName(className), new Object() };

Version vom 20:14, 13. Okt. 2013

AccUnit ist in C# geschrieben. Als Entwicklungsumgebung wird Visual Studio 2010 verwendet.

Hier einige Punkte:

Object statt Variant in COM Interface

  • Object statt Variant in COM Interface: [MarshalAs(UnmanagedType.IDispatch)]
void CallTestByName(string procName, [MarshalAs(UnmanagedType.IDispatch)] out object test2Add);
 
object Fixture { [return: MarshalAs(UnmanagedType.IDispatch)]  get; }
 
object Parent { [param: MarshalAs(UnmanagedType.IDispatch)] set; [return: MarshalAs(UnmanagedType.IDispatch)] get; }


ByRef-Übergabe mit InvokeMember und Application.Run

  • ByRef-Übergabe mit InvokeMember und Application.Run: ParameterModifier verwenden - damit kann ByRef markiert werden
object[] parameters = { getTestClassFactoryProcedureName(className), new Object() };
ParameterModifier p = new ParameterModifier(2);
p[1] = true;
ParameterModifier[] modifiers = { p };
 
OfficeApplication.GetType().InvokeMember("Run", BindingFlags.InvokeMethod, null, OfficeApplication, 
                                         parameters, modifiers, null, null);
Persönliche Werkzeuge