Ungültige Klassenzeichenfolge



  • Hallo,

    ich habe eine kleines Programm geschrieben, welches nach einem Button Klick auf Outlook zugreift, um Kontakte auszulesen. Funktioniert alles solange die Standalone exe Datei auf dem Rechner ausgeführt wird, auf dem auch der Borland C++ Builder installiert ist.

    Habe auch unter den Projekt Optionen bei Linker den Punkt 'Dynamische RTL verwenden' und bei Packages 'Mit Laufzeit-Packages aktualisieren' deaktiviert.

    Auf einem anderen Rechner ohne Borland kann man das Programm zwar ausführen, aber sobald man den Button Klickt, wo dann auf Outlook zugegriffen wird erhalte ich folgede Fehlermeldung Ungültige Klassenzeichenfolge

    Hier der Quelltext:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    const int olFolderContacts  = 0x0A;
    
    Variant outlook;
    Variant nameSpace;
    Variant contactFolder;
    Variant folder;
    Variant items;
    Variant contact;
    Variant FullName;
    Variant name;
    Variant vname;
    
    int                i,k;
    int                nContact;
    int                nFolders;
    int                contactClass;
    
    outlook = CreateOleObject("Outlook.Application");
    nameSpace = outlook.OleFunction("GetNameSpace", "MAPI");
    
    contactFolder = nameSpace.OleFunction ("GetDefaultFolder", olFolderContacts);
    items = contactFolder.OlePropertyGet ("Items");
    nContact = items.OlePropertyGet ("Count");
    
    }
    

    Bereits in diesem kleinen Ausschnitt muss der Fehler liegen.

    Vielleicht kann mir jemand Helfen.
    Danke



  • du greifst auf outlook über COM objekte zu. und wenn die auf dem zíelrechner nicht vorhanden sind, kommt es zu so einer oder noch merkwürdigerer fehlermeldung. mit standalone ist es bei COM nicht getan. du muss die COM Objekte noch registrieren. mit regsvr32.exe z.b. registriert ader nur dll's



  • du muss die COM Objekte noch registrieren. mit regsvr32.exe z.b. registriert ader nur dll's

    Hi,

    danke erstmal für die schnelle Antwort.

    Da ich aber ein absoluter Anfänger bin, was C++ und Borland anbetrifft,
    wäre es nett, wenn Du mir noch sagen könntest, wie bzw. wo ich die COM Objekte registrieren kann.

    Ich weiß wahrscheinlich eine dumme Frage, aber ich weiß es leider nicht.

    Danke



  • dein problem hat mit c++ und borland nix zu tun.

    com muss man immer registrieren.

    ruf regsvr32.exe ohne parameter von der dos-konsole auf und du bekommst eine kleine hilfe, wie das tool verwendet wird.

    oder du machst ein setup-packet vertig, z.b. mit Instalshield. Instalshield wird mit BCB mitgeliefert (zumendes die Pro Version). Instalshield registriert die COM-dll's automatisch. du muss nur wissen, welche dll's du deinem Setup hinzufügen sollst. 😃



  • Tja alles schön und gut, hab den Installshield vorliegen
    jetzt müsste ich nur wissen, welche dll's verwendet werden.

    Kann man das irgendwo nachschauen?

    Wie gesagt ich bin Anfänger.



  • Also hab jetzt hin und her probiert.
    Hab zig Setup Routinen mit Installshield erstellt aber es klappt trotzdem nicht. Hab beim Installshield sämtliche MergeModule ausgewählt, da ich nicht weiß, welche dll's mein Programm nun verwendet aber ich bekomme es einfach nicht zum laufen.

    Hat jemand noch nen Tip für mich ?


Anmelden zum Antworten