Announcement

Collapse
No announcement yet.

Com

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Com

    Hallo,

    ich komme eigentlich aus der Delphi-Ecke, jetzt soll ich jedoch mit dem Builder eine Routine schreiben die den Outlookkalender ausliesst. Da Delphi meine Hauptsprache ist, habe ich das Teil in Delphi geschrieben und wollte es dann portieren, aber irgendwie will es in c++ nicht klappen. hier mein Delphi-code:


    procedure TForm1.OutlookAddCalendar(CalendarFolderPath: string; Calendar: TCalendar);
    var
    Outlook : OleVariant;
    NameSpace : OleVariant;
    CalendarsRoot : OleVariant;
    CalendarsFolder : OleVariant;
    OutlookCalendar : OleVariant;
    SubFolderName : string;
    Position : integer;
    Found : boolean;
    Counter : integer;
    TestContactFolder : OleVariant;
    begin
    Outlook := CreateOleObject('Outlook.Application');

    NameSpace := Outlook.GetNameSpace('MAPI');

    CalendarsRoot := NameSpace.GetDefaultFolder(olFolderCalendar);

    CalendarsFolder := CalendarsRoot; //kopieren für weitere aufgaben.
    //in kalender schreiben.
    OutlookCalendar := CalendarsFolder.Items.Add;
    OutlookCalendar.Subject := Calendar.Subject;
    OutlookCalendar.Location := Calendar.Location;
    OutlookCalendar.Save;

    //Zugriff auf einzelne Kalenderdaten.
    OutlookCalendar := CalendarsFolder.Items[3];
    ShowMessage(OutlookCalendar.Subject);
    // freigeben.
    Outlook := Unassigned;
    end;

    aufgerufen wird das ganze per ButtonClick:

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Calendar: TCalendar;
    begin
    Calendar.Subject := SubEdit.Text;
    Calendar.Location := LocEdit.Text;
    Self.OutlookAddCalendar(PathEdit.Text, Calendar);
    end;


    kann mir jemand helfen, diesen Code nach CBuilder zu bringen, habe schon viel probiert, aber ausser einigen totalabstürtzen des systems nicht viel erreicht.

    mfg
    ake

  • #2
    Hallo ake,

    habe mal eine auf C++ umgeschriebene Datei angehangen, vielleicht hilft's ja ein Stück weiter...

    Gruß Knut
    Attached Files

    Comment


    • #3
      Hallo Knut,

      erst mal Danke für Deine Mühe. Mein Problem ist, das der Code nicht übersetzt wird, so oder fast so sah meine Übersetzung auch aus, ist aus meiner Sicht auch logisch, aber der Code wird halt nicht übersetzt. naja, vielleicht geht das in c++ nicht.

      dennoch vielen Dank

      ake

      Comment


      • #4
        Hallo ake,

        wenn Du mal die Fehlermeldungen (und die dazugehörigen Codezeilen) posten würdest, könnte Dir vielleicht weitergeholfen werden... ;-)

        Gruß vom Knut

        Comment


        • #5
          Hallo Knut,

          Habe dir die originalen Compilerausgaben als Kommentar mit angegeben:

          OleVariant Outlook, NameSpace, CalendarsRoot, CalendarsFolder, OutlookCalendar;

          Outlook = CreateOleObject("Outlook->Application"); //Läuft.
          NameSpace = Outlook->GetNameSpace('MAPI'); //[C++ Fehler] Main.cpp(34): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
          CalendarsRoot = NameSpace->GetDefaultFolder(olFolderCalendar); //[C++ Fehler] Main.cpp(35): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich

          OutlookCalendar = CalendarsFolder->Items[3]; //[C++ Fehler] Main.cpp(37): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
          ShowMessage(OutlookCalendar->Subject); //[C++ Fehler] Main.cpp(37): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
          // freigeben.
          delete Outlook; //[C++ Fehler] Main.cpp(40): E2157 Für das Löschen eines Objekts ist genau eine Umwandlung in einen Zeigeroperator erforderlich

          in Delphi sieht der perfekt laufende Code so aus:

          procedure TMainForm.ReadOutlookCalendar();
          var
          Outlook: OleVariant;
          NameSpace: OleVariant;
          CalendarsFolder: OleVariant;
          OutlookCalendar: OleVariant;
          i: Integer;
          begin
          Outlook := CreateOleObject('Outlook.Application');
          NameSpace := Outlook.GetNameSpace('MAPI');
          CalendarsFolder := NameSpace.GetDefaultFolder(olFolderCalendar);

          OutlookCalendar := CalendarsFolder.Items[i];
          ShowMessage(OutlookCalendar.Subject);
          Outlook := Unassigned;
          end;

          mfg
          ake

          Comment


          • #6
            Hallo ake,

            da hab' ich natürlich auch Fehler eingebaut: wenn die Variablen vom Typ OleVariant keine Zeiger sind, muss bei deren Referenzen ein Punkt statt des Pfeils stehen. Sorry!

            Gruß vom Knut

            Comment


            • #7
              Hallo Knut,

              das habe ich auch schon versucht, aber anstelle der alten kommt dann die:
              'GetDefaultFolder ist kein Element von OleVariant'
              womit ich wieder am Anfang wäre.

              gvake

              Comment


              • #8
                In wie vielen Foren hast Du die Frage eigentlich gestellt? Und dann auch noch im Minutenabstand...

                Comment


                • #9
                  Hallo ake,

                  mit welcher C++Builder-Version arbeitest Du? Im BCB5 z.B. gibt's auf der Palettenseite 'Server' eine 'OutlookApplication'. Wie wär's denn damit?

                  Was man dann weiter damit machen kann, geht aus der Header Datei 'Outlook_2K_SRVR.h' hervor. Ob das natürlich Deine Wünsche befriedigt, kann ich nicht sagen, habe mich auch noch nicht weiter mit OLE/COM befasst.

                  Gruß vom Knut

                  Comment


                  • #10
                    lösung

                    Hallo Knut,

                    Danke für Dein Interesse, habe Lösung gefunden, war total einfach, manchmal sieht vor lauter bäumen den wald nicht mehr...

                    @joe: wie schon in der arena, es geht dich wirklich efda wo ich wann welche Fragen stelle. Ist doch eine ganz logische Sache:

                    2 Foren = viel mehr user als in nur einem = höhere wahrscheinlichkeit das jemand behilflich sein kann. Es ist nur sehr traurig das ich sowas einem "Programmierer" hier extra nochmal erklären muss....

                    mfg
                    ake

                    Comment


                    • #11
                      a) wer ist Joe?

                      b) da du dich hier in einem öffentlichen Forum bewegst, hat jeder die Möglichkeit zu deinen Handlungen Stellung zu beziehen. Welche Stellung nimmst du ein, dass einzelnen Usern zu verbieten?
                      Christian

                      Comment


                      • #12
                        Mit Joe meint er mich. Und in meinen Augen ist es ziemlich unverschämt, in mehreren Foren gleichzeitig die Hilfegebenden parallel an dem gleichen Problem arbeiten zu lassen...

                        Nun ja, man sieht ja, welch Geistes Kind er ist. Er hat es nicht mal nötig die Lösung zu posten.

                        Grüße Jochen

                        Comment


                        • #13
                          Zwar Off Topic, aber dennoch:
                          Originally posted by Jochen Reichenberg View Post
                          Er hat es nicht mal nötig die Lösung zu posten.
                          Ganz, ganz schlechter Stil: das ärgert mich auch maßlos!

                          Grüße vom Knut

                          Comment


                          • #14
                            M.E. ist unter Examples (im Builder-Verzeichnis) ein Beispiel.... wenn ich mich erinnere....
                            Christian

                            Comment

                            Working...
                            X