Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Office.Interop.Outlook nach Umstellgun auf 64bit bringt Int64-Überlauf
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 689

Themenstarter:

Office.Interop.Outlook nach Umstellgun auf 64bit bringt Int64-Überlauf

beantworten | zitieren | melden

Hallo zusammen,

ich verwende seit einigen Jahren in einem Projekt die Microsoft.Office.Interop.Outlook.dll.
Nun wurde die Hauptanwendung auf 64bit umgestellt.

Seit dem erhalte ich eine Fehlermeldung, sobald ich auf die Attachments einer Mail zugreifen möchte:
Fehler
Die arithmetische Operation hat einen Überlauf verursacht.
Das ganze passiert in der 2. Zeile:

var dataObject = new OutlookDataObject(iDataObj);
filenames = (string[])dataObject.GetData("FileGroupDescriptorW");
filestreams = (MemoryStream[])dataObject.GetData("FileContents");
fileCount = filenames.Length;

StackTrace:
Fehler
bei System.IntPtr.op_Explicit(IntPtr value)
bei MyDll.OutlookHelper.OutlookDataObject.GetData(String format, Boolean autoConvert)

Durch die Umstellung auf 64bit sind offenbar die Pointer nun vom Typ Int64.
Die Lösungen auf dem Netz "Stell doch auf 32 bit um" oder geht auf EWS, o.ä. sind beide nicht praktikabel.
Zum einen habe ich keinen Einfluss auf die Hauptanwendung und zum anderen brauche ich die Attachments einer aktuell in Outlook ausgewählten Mail.

Habe extra ein System mit 64bit Outlook aufgesetzt und mir die DLL gezogen (15.0.0.0), ohne Erfolg. Ansonsten konnte ich keine extra 64bit Version der Interop-Dll finden.

Wäre für Ideen oder Alternativen dankbar :)
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.163
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,

was ist denn MyDll.OutlookHelper.OutlookDataObject?
Sieht aus als wäre das die Stelle, wo der Hase im Pfeffer liegt...

Gruß, MarsStein
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 689

Themenstarter:

beantworten | zitieren | melden

Hi MarsStein,

Du hast natürlich vollkommen Recht! Dachte das wäre nur der Aufruf von der Interop-Funktion. Aber entgegen meiner Annahme, habe ich wirklich noch einen Wrapper in der DLL gefunden. Manchmal ist man eben blind...

Aus

IntPtr fileDescriptorPointer = (IntPtr)((int)fileGroupDescriptorAPointer + Marshal.SizeOf(fileGroupDescriptorAPointer));
mach

IntPtr fileDescriptorPointer = (IntPtr)((Int64)fileGroupDescriptorAPointer + Marshal.SizeOf(fileGroupDescriptorAPointer));
und schon geht´s.

Danke für den Schubs in die richtige Richtung!
private Nachricht | Beiträge des Benutzers