Entwickler-Ecke

Windows API - [Gelöst]Outlook Kategorien auflisten/verändern/löschen


MartelKombatADH - Mi 27.08.14 11:33
Titel: [Gelöst]Outlook Kategorien auflisten/verändern/löschen
Ich versuche gerade die Outlook Kategorien aufzulisten usw. siehe Titel
Ich kann die Besteheneden Kategorien auch z.B. einem Termin zuweisen, eine neue Kategorie anlegen inklusive Farbe.

Was ich nicht kann ist überprüfen ob es eine Kategorie schon gibt bevor ich sie anlege (Habe einen C#-Code gefunden, kann ihn aber nicht in Delphi übersetzen).

C#-Quelltext
1:
2:
3:
4:
5:
6:
myNamespace = outLookApp.GetNamespace("MAPI");
if (myNamespace.Categories["liveMeeting"] == null)
{
  myNamespace.Categories.Add("liveMeeting", OlCategoryColor.olCategoryColorDarkRed, OlCategoryShortcutKey.olCategoryShortcutKeyNone);
}
newEvent.Categories = "liveMeeting";

Mein Code

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Outlook := CreateOLEObject('Outlook.Application');
NameSpace := Outlook.GetNameSpace('MAPI');

//*** Kalender-Ordner öffnen
memLog.Lines.Add(DateTimeToStr(Now) + ': GetDefaultFolder');
Ordner := NameSpace.GetDefaultFolder(olFolderCalendar);

//nil gibt vor dem compilieren schon einen Fehler
if NameSpace.Categories['Bla'] = '' then begin
  NameSpace.Categories.Add('Bla'15);
end;

Fehler: Unzulässige Parameteranzahl

EDIT1: Hate mein Thema noch nicht fertiggeschrieben
EDIT2: ich arbeite mit Delhpi 5


platzwart - Mi 27.08.14 12:48

Und wo genau tritt der Fehler auf?!?


baumina - Mi 27.08.14 13:03

Naja, also wenn hier hier mal nachzähl :

C#-Quelltext
1:
2:
3:
4:
myNamespace.Categories.Add(
"liveMeeting"// Parameter 1
OlCategoryColor.olCategoryColorDarkRed, // Parameter 2
OlCategoryShortcutKey.olCategoryShortcutKeyNone); //Parameter 3


und dann hier nachzähle:

Delphi-Quelltext
1:
2:
3:
NameSpace.Categories.Add(
'Bla',  // Parameter 1
15);   // Parameter 2


würde ich sagen dass der Fehler hier auftritt.


MartelKombatADH - Mi 27.08.14 13:27

user profile iconbaumina hat folgendes geschrieben Zum zitierten Posting springen:
Naja, also wenn hier hier mal nachzähl :

C#-Quelltext
1:
2:
3:
4:
myNamespace.Categories.Add(
"liveMeeting"// Parameter 1
OlCategoryColor.olCategoryColorDarkRed, // Parameter 2
OlCategoryShortcutKey.olCategoryShortcutKeyNone); //Parameter 3


und dann hier nachzähle:

Delphi-Quelltext
1:
2:
3:
NameSpace.Categories.Add(
'Bla',  // Parameter 1
15);   // Parameter 2


würde ich sagen dass der Fehler hier auftritt.


Naja das ist es leider nicht... Erstellen kann ich meine Kategorie ja(auserhalb der if-Abfrage), der letzte Parameter ist nicht notwendig
und 15 meint die Farbe schwarz
http://msdn.microsoft.com/de-de/library/office/ff860420%28v=office.15%29.aspx

Ich glaube das es die Klammern sind. Da weiß ich nicht mehr weiter.
Habe hier auch einen Link mit Code um die ganzen Kategorien aufzulisten. blos weiß ich nicht wie ich es in Delphi realiesiere.
http://msdn.microsoft.com/en-us/library/office/ff863110%28v=office.15%29.aspx

Da macht mir die foreach Probleme. Ich weiß nicht welchen Variablen-Typ ich benutzen soll/kann (OleVariant schon versucht).


MartelKombatADH - Mi 27.08.14 14:33

Ich habe es jetzt geschaft (nach 2 tagen suchen :evil: :oops: ) meine Kategorien "aufzulisten"

Eine Änliche Variante hatte ich auch mal versucht

Delphi-Quelltext
1:
2:
3:
4:
5:
      for ii := 1 to NameSpace.Categories.Count -1 do begin
        if String(NameSpace.Categories.Item(ii)) <> 'Bla' then begin
          ShowMessage(NameSpace.Categories.Item(ii));
        end;
      end;


Ich hatte dort aber immer mit Eckigen-Klammern gearbeitet... Man kann statt dem Integer wert in der Klammer auch den gesuchten Namen eintragen.


baumina - Mi 27.08.14 14:37

Hast du es mal so probiert?


Delphi-Quelltext
1:
if NameSpace.Categories['Bla'] = null then begin                    


MartelKombatADH - Mi 27.08.14 15:01

user profile iconbaumina hat folgendes geschrieben Zum zitierten Posting springen:
Hast du es mal so probiert?


Delphi-Quelltext
1:
if NameSpace.Categories['Bla'] = null then begin                    

ja aber mit nil, was ja nicht funktioniert.

Wie bei meinem letzten Post zu sehen, geht das ja dan so.

Delphi-Quelltext
1:
2:
3:
if String(NameSpace.Categories.Item('Bla')) = '' then begin
  ...
end;


baumina - Mi 27.08.14 15:04

Versuchs mit "null" (aus Unit Variants) nicht mit "Nil"

EDIT : Achso, es geht jetzt also so wie du es wolltest?