Strict Off zu Strict On konvertieren

  • VB.NET

Es gibt 36 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Strict Off zu Strict On konvertieren

    Hallo zusammen,

    ich bin am verzweifeln.
    Ich versuche in einem Tool Strict Off zu Strict On zu wandeln.

    Bisher klappt auch alles super, jetzt habe ich aber schon seit einiger Zeit ein Problem:
    Ich muss mit Lotus Notes Kommunizieren.

    Mein funktionierender Strict Off Code sieht zur Zeit so aus:

    Spoiler anzeigen

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Mailfunktion zum Versenden von Mails per NotesMail
    3. ''' </summary>
    4. ''' <param name="str_EMailBetref">Betref</param>
    5. ''' <param name="str_EMailEmpfänger">Empfänger</param>
    6. ''' <param name="str_EMailText">Text</param>
    7. ''' <param name="bol_erfolgsMeldungAnzeigen">"gesendet" Meldung anzeigen</param>
    8. ''' <param name="bol_gesendeteMailSpeichern">Mail unter gesendet Speichern</param>
    9. ''' <remarks></remarks>
    10. Public Sub MailSenden(ByRef str_EMailBetref As String, _
    11. ByRef str_EMailEmpfänger As String, _
    12. ByRef str_EMailText As String, _
    13. Optional ByVal bol_erfolgsMeldungAnzeigen As Boolean = True, _
    14. Optional ByVal bol_gesendeteMailSpeichern As Boolean = False) 'Und ab dafür!
    15. Dim bol_MailFehler As Boolean = bol_MailFehler = False
    16. Try
    17. Dim obj_NotesSession As Object = cControls.ccFunction.CreateObject("Notes.NotesSession")
    18. 'Datenbank öffnen
    19. Dim obj_MailDatenbank As Object = obj_NotesSession.GetDatabase("", Environment.UserName & ".nsf")
    20. If obj_MailDatenbank.isOpen = True Then
    21. 'Fertig zum mailen!
    22. Else
    23. obj_MailDatenbank.OPENMAIL()
    24. End If
    25. Dim obj_MailDokument As Object = obj_MailDatenbank.CreateDocument
    26. 'Ein neues Maildokument erstellen
    27. obj_MailDokument.Form = "Memo"
    28. obj_MailDokument.sendto = str_EMailEmpfänger
    29. obj_MailDokument.Subject = str_EMailBetref
    30. obj_MailDokument.body = str_EMailText
    31. obj_MailDokument.save(True, True, True) 'Mail als "gelesen" markieren
    32. obj_MailDokument.SAVEMESSAGEONSEND = bol_gesendeteMailSpeichern 'Mail unter gesendeten Mails in Notes speichern (z. B. Krank/Spät)
    33. 'Senden
    34. obj_MailDokument.PostedDate = Date.Now
    35. obj_MailDokument.SEND(0, str_EMailEmpfänger)
    36. Catch ex As Exception
    37. bol_MailFehler = True
    38. 'Hauptmodul.FehlerBehandlung(ex, "Fehler", "NotesMail", "Fehler beim Senden einer Notes-Email!", False)
    39. Finally
    40. End Try
    41. 'Bestätigungsmeldung / Fehlermeldung für Mail-Versand
    42. If bol_erfolgsMeldungAnzeigen Then
    43. If bol_MailFehler Then
    44. MessageBox.Show("Mail wurde nicht gesendet!", str_AnwTitel, MessageBoxButtons.OK, MessageBoxIcon.Warning)
    45. Else
    46. MessageBox.Show("Mail wurde gesendet!", str_AnwTitel, MessageBoxButtons.OK, MessageBoxIcon.Information)
    47. End If
    48. End If
    49. End Sub
    50. #End Region


    Code in der Klasse ccFunction

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Erstellt und gibt einen Verweis auf ein COM-Objekt zurück.
    3. ''' CreateObject kann in VB nur dann zur Erstellung von Klasseninstanzen verwendet werden, wenn diese explizit als COM-Komponenten verfügbar gemacht sind.
    4. ''' </summary>
    5. ''' <param name="ProgId">Erforderlich. String. Die Programm-ID des zu erstellenden Objekts</param>
    6. ''' <param name="ServerName">Optional. String. Der Name des Netzwerkservers, auf dem das Objekt erstellt wird. Wenn Servername eine leere Zeichenfolge ("") ist, wird der lokale Computer verwendet.</param>
    7. ''' <param name="throwExeption">Optional. Boolean. true, um mögliche Ausnahmen auszulösen oder false, um Ausnahmen zu ignorieren.</param>
    8. ''' <returns>Erstellt und gibt einen Verweis auf ein COM-Objekt zurück.CreateObject kann in Visual Basic nur dann zur Erstellung von Klasseninstanzen verwendet werden, wenn diese explizit als COM-Komponenten verfügbar gemacht werden.</returns>
    9. Public Shared Function CreateObject(ByVal ProgId As String, Optional ByVal ServerName As String = Nothing, Optional ByVal throwExeption As Boolean = True) As Object
    10. Return System.Activator.CreateInstance(System.Type.GetTypeFromProgID(ProgId, ServerName, throwExeption))
    11. End Function



    Ich bekomme keinen Funktionierenden Strcit On Code hin.
    Ich wäre für Hilfe dankbar.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    VB.NET-Quellcode

    1. Dim obj_NotesSession As Object = cControls.ccFunction.CreateObject("Notes.NotesSession")
    Zunächst: Option Strict Off.
    Nach Abarbeitung dieser Zeile geh mal mit der Maus auf die Variable obj_NotesSession und schreib was da angezeigt wird oder mach einen ScreenShot davon.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    obj_NotesSession|{System.__ComObject}
    Dynamisch | Beim Erweitern werden alle Member dynamisch ausgewertet

    @sonne75
    ex.message:
    Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "Domino.NotesSession" umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID "{29131578-2EED-1069-BF5D-00DD011186B7}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).

    ex.stacktrace:
    bei MitarbeiterInformationen._KommunikationMitNotes.MailSenden(String& str_EMailBetref, String& str_EMailEmpfänger, String& str_EMailText, Boolean bol_erfolgsMeldungAnzeigen, Boolean bol_gesendeteMailSpeichern) in Y:\1-Projekte\1 - WIP\MitarbeiterInformationen\MitarbeiterInformationen\Module\_KommunikationMitNotes.vb:Zeile 27.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    @sonn75
    Genau.
    cControls ist eine Sammlung von Klassen
    den infrage kommenden Ausschnitt aus cControls.ccFunction habe ich oben im Codebeispiel erwähnt.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    {System.__ComObject}
    Die Dinger gehen nicht mit Option Strict On.

    Mach Dir Deine Mail-Klasse in eine separate Datei und gib dieser explizit Option Strict Off.
    Oder Du siehst Dich mal nach anderen Klassen um, mit denen Du unter Strict On arbeiten kannst, da gibt es hier im Forum auch was zu (ich bin mir sicher).
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ () aus folgendem Grund: explizit [b]Option Strict Off[/b]

    @RodFromGermany
    Alle Funktionierenden Beispiele zu dem Problem die ich bisher finden konnte haben das Problem, dass sie mit "obj_NotesSession.Initialize" arbeiten. Das führt aber dazu das eine neue Session geöffnet wird und der Anwender erneut sein Notespasswort eintragen muss.

    In Option Strict Off kann ich per late Binding auf die bereits geöffnete Notessession zugreifen. Und so muss der Anwender kein Passwort eingeben.

    Ich konnte bisher nichts finden womit ich bei Notes das Late Binding umgehen kann ohne das Passwort einzugeben.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    ohne das Passwort einzugeben.
    Dann leg Dir in dieser Klasse eine Shared Variable an, die nur beim 1. Mal instanziiert werden muss.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany
    Auch einmal wäre zuviel.
    Dank Option Strict Off und Latebinding sind die Mitarbeiter gewöhnt das sie ihr Notespasswort nur beim Start von Notes eingeben müssen. Jegliche Erneute Eingabe würde zu Verwirrung führen.
    Das Überarbeitete Programm soll ja schließlich auch einfacher / komfortabler in der Bedienung sein wie das alte.

    Falls es keine Lösung für das Problem gibt bleibe ich einfach in der einen Klasse bei Option Strict Off. Der Rest des Programms ist Option Strickt On.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    Auch einmal wäre zuviel.
    Wo genau ist denn der Unterschied von Deinem Code zu meinem?
    Auch Du musst doch diese Klasse genau einmal instanziieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Moment,

    Ich hab dich falsch verstanden.

    Ich weiß nicht wie du das meinst.
    Ich habe die Klasse NotesKommunikation mit der Sub MailSenden, was für einen Shared Variable soll ich denn erstellen?.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    Shared Variable
    obj_NotesSession
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    OK mit Public Shared läuft es da schon mal durch.

    dann kommt das nächste Problem:

    VB.NET-Quellcode

    1. Dim obj_MailDatenbank As Object = obj_NotesSession.GetDatabase("", Environment.UserName & ".nsf")


    Fehler: obj_NotesSession.GetDatabase -> "Option Strict On" lässt spätes Binden nicht zu
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    "Option Strict On"
    Sorry, in meinem Post hätte es heißen sollen
    Mach Dir Deine Mail-Klasse in eine separate Datei und gib dieser explizit Option Strict Off.
    ==> Post #7 editiert.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Mit "Option Strict Off" Funktioniert der Code schon die ganze Zeit.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."

    Schamash schrieb:

    "Option Strict Off"
    in dieser einen Datei, der Rest des Projekts Option Strict On.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Genau.
    Projekt ist Option Strict On.
    Diese eine Klasse hat Option Strict Off.

    Ich hätte aber gerne auch in dieser Klasse "Option Strict On".
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Was Du brauchst, ist die

    Interop.Domino.dll

    Solltest Du eigentlich zur Verfügung haben. Wenn nicht, dann hier:

    codeproject.com/Articles/18517…ith-Microsoft-NET-Platfor

    ein Artikel darüber. Binde diese .dll ein, importiere den NameSpace und lies Dich durch die Dokumentation.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o
    @SpaceyX
    Hab ich schon importiert.
    Wenn ich dann obj_NotesSession als Domino.Notessession deklariere bekomme ich die Fehlermeldung das ich system.__objekt nicht zu domino.notessession casten kann.
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."