Ich muß für ein Programm auf Outlook-Kontakte zugreifen und diese auch verändern. Nun ist es aber so, daß die Kontakte in Unterverzeichnissen strukturiert sind. Über einen rekursiven Aufruf lassen sich die Daten auch gut auslesen. Leider geht aber das Schreiben dann aber nicht mehr. Wie ist mein Problem zu lösen? Etwas Quellcode habe ich angefügt. Leider konnte ich nicht entsprechendes im Forum finden.
<P>
Vielen Dank
<P>
<PRE>Procedure TGMain.ScanFolder2( Var aContacts: MAPIFolder );
Var
newContact: MAPIFolder;
iCnt, Jcnt: Integer;
aContactItem: ContactItem;
Begin
For Jcnt := 1 To aContacts.Folders.Count Do
Begin
newContact := aContacts.Folders.Item( Jcnt );
For iCnt := 1 To newContact.Items.Count Do
Try
aContactItem := newContact.Items.Item( iCnt ) As ContactItem;
aContactItem.User1 := 'Das ist ein Test';
aContactItem.save;
Application.ProcessMessages;
Except
showmessage( 'Fehler beim Schreiben eines Kontaktes in ' + newContact.Name );
End;
newContact.save
ScanFolder2( newContact );
End;
End;
</PRE>
<P>
<PRE>
Procedure TGMain.ToolButton8Click( Sender: TObject );
Var
aNameSpace: NameSpace;
aContacts: MAPIFolder;
iCnt: Integer;
aContactItem: ContactItem;
Begin
OutlookApplication1.Connect;
aNameSpace := OutlookApplication1.GetNamespace( 'MAPI' );
aContacts := aNameSpace.GetDefaultFolder( olFolderContacts );
For iCnt := 1 To aContacts.Items.Count Do
Try
aContactItem := aContacts.Items.Item( iCnt ) As ContactItem;
aContactItem.User1 := 'Das ist ein Test';
aContactItem.save;
Application.ProcessMessages;
Except
showmessage( 'Fehler beim Nullen eines Kontaktes in ' + aContacts.Name );
End; // Das Klappt noch ganz prima aber der Rekursive Aufruf wird völlig ignoriert
ScanFolder2( aContacts );
OutlookApplication1.Disconnect;
End;
</PRE>
<P>
Vielen Dank
<P>
<PRE>Procedure TGMain.ScanFolder2( Var aContacts: MAPIFolder );
Var
newContact: MAPIFolder;
iCnt, Jcnt: Integer;
aContactItem: ContactItem;
Begin
For Jcnt := 1 To aContacts.Folders.Count Do
Begin
newContact := aContacts.Folders.Item( Jcnt );
For iCnt := 1 To newContact.Items.Count Do
Try
aContactItem := newContact.Items.Item( iCnt ) As ContactItem;
aContactItem.User1 := 'Das ist ein Test';
aContactItem.save;
Application.ProcessMessages;
Except
showmessage( 'Fehler beim Schreiben eines Kontaktes in ' + newContact.Name );
End;
newContact.save
ScanFolder2( newContact );
End;
End;
</PRE>
<P>
<PRE>
Procedure TGMain.ToolButton8Click( Sender: TObject );
Var
aNameSpace: NameSpace;
aContacts: MAPIFolder;
iCnt: Integer;
aContactItem: ContactItem;
Begin
OutlookApplication1.Connect;
aNameSpace := OutlookApplication1.GetNamespace( 'MAPI' );
aContacts := aNameSpace.GetDefaultFolder( olFolderContacts );
For iCnt := 1 To aContacts.Items.Count Do
Try
aContactItem := aContacts.Items.Item( iCnt ) As ContactItem;
aContactItem.User1 := 'Das ist ein Test';
aContactItem.save;
Application.ProcessMessages;
Except
showmessage( 'Fehler beim Nullen eines Kontaktes in ' + aContacts.Name );
End; // Das Klappt noch ganz prima aber der Rekursive Aufruf wird völlig ignoriert
ScanFolder2( aContacts );
OutlookApplication1.Disconnect;
End;
</PRE>
Comment