Das ist wahrsch. mein erstes Posting hier im "Programmieren"... ![]()
Ich habe in einem Lotus Notes - Userforum einen Quellcode für ein Tool gefunden, welches ein Workaround für die Synchronisationsprobleme des P800 mit Lotus Notes sein soll.
Da ich mit Programmieren so gar nix am Hut habe, kann ich mit dem Quelltext nicht viel anfangen, insbes. kann ich ihn nicht zu einem ausführbaren Programm compilieren. Sieht nach C++ aus, aber wie gesagt - ich keinen Plan habe... ![]()
Kann hier jemand was damit anfangen und das ganze mal schnell in eine .exe verwandeln?
Habe mir den Quelltext auch nochmal angeschaut. Ich vermute mal, daß da oben am Anfang eine spezielle Library für den Zugriff auf Lotus Notes eingebunden wird. stdlib und stdio sagen mir nämlich noch was (ganz früher habe ich die Programmiererei auch mal thematisch anreißen müssen), aber lncppapi ist wahrsch. irgendwas spezielles, oder? Ich weiß leider nicht, wo man das herbekommen kann...
Anyway - hier der Quelltext (in der Zeile "session.GetDatbase" habe ich bereits den für mich korrekten Pfad und Dateinamen eingetragen, dafür hats gerade noch so gereicht
![]()
#include <stdlib.h>
#include <stdio.h>
#include <lncppapi.h>
void main( int argc, char *argv[] )
{
LNNotesSession session; // create session object on stack
LNDatabase db; // Create LNDatabase object
LNViewFolder view; // Create LNViewFolder object
LNVFEntry entry; // Working entry
char *call= "None"; // Current call
int count;
int c;
int fix = 0;
if (argc == 2 && !strcmp(argv[1], "-fix"))
fix = 1;
LNSetThrowAllErrors(TRUE);
try
{
call = "Init";
session.Init();
call = "GetDatabase";
session.GetDatabase("c:\\Programme\\Lotus\\Notes\\Data\\decp5567.nsf", &db);
call = "Database Open";
db.Open();
call = "GetViewFolder";
db.GetViewFolder("Meetings", &view);
call = "View Open";
view.Open();
call = "View GetEntryCount";
count = view.GetEntryCount();
if (count != 0)
{
call = "GotoFirst";
view.GotoFirst(&entry);
for (c = 0; c < count; ++c)
{
LNDocument doc;
LNText text;
call = "Entry GetDocument";
entry.GetDocument(&doc);
call = "Document Open";
doc.Open();
call = "Document HasItem";
if (!doc.HasItem("Body")
doc.GetItemType("Body") != LNITEMTYPE_RICHTEXT)
{
LNString str;
call = "Document GetItem Subject";
doc.GetItem("Subject", &text);
call = "Text GetText";
text.GetText(&str);
printf("Found missing body item %d \"%s\"", c, (const char *)str);
if (fix)
{
LNRichText rtext;
call = "rtext SetValue";
rtext.SetValue("FIXSYNC1");
call = "CreateItem";
doc.CreateItem("Body", rtext, LNITEMFLAGS_AUTO_SUMMARY, LNITEMOPTION_DELETE_APPEND);
printf(" FIXED");
}
printf("\n");
}
else if (doc.HasItem("Body") && doc.GetItemType("Body") == LNITEMTYPE_RICHTEXT)
{
LNRichText rtext;
doc.GetItem("Body", &rtext);
if (rtext.GetValueSize() == 0)
{
LNString str;
call = "Document GetItem Subject";
doc.GetItem("Subject", &text);
call = "Text GetText";
text.GetText(&str);
printf("Found empty body item %d \"%s\"", c, (const char *)str);
if (fix)
{
rtext.SetValue("FIXSYNC2");
printf(" FIXED");
}
printf("\n");
}
}
if (fix)
{
call = "Document Save";
doc.Save();
}
call = "Document close";
doc.Close();
call = "View GotoNext";
view.GotoNext(&entry);
}
}
call = "View Close";
view.Close();
call = "Database close";
db.Close();
call = "Session term";
session.Term();
}
catch(LNSTATUS error)
{
char errorBuf[LNERROR_MESSAGE_LENGTH];
LNGetErrorMessage(error, errorBuf);
printf("Error: [%s] %s\n", call, errorBuf);
}
}