Ich schrieb:
> ich habe in meiner Message-DB viele alte Nachrichten, für die die
> Bezugsverkettung nicht funktioniert.
[...]
> Ein quick und dirty Versuch zur Problembehebung war nicht
> erfolgreich:
> [xp1o.pas]
> <-------------------------------------------------------------->
> function GetBezug(var ref:string):longint;
> var pos : longint;
> var zwiref : string; { HJT 14.08.2005 }
> begin
> { HJT 14.08.2005 start }
> zwiref := ref;
> if left(zwiref,1)='<' then delfirst(zwiref);
> if right(zwiref,1)='>' then dellast(zwiref);
> { dbSeek(bezbase,beiMsgid,dbLongStr(MsgidIndex(ref))); }
> dbSeek(bezbase,beiMsgid,dbLongStr(MsgidIndex(zwiref)));
> { HJT 14.08.2005 end }
...
> end;
> <-------------------------------------------------------------->
Obige Änderung in Kombination mit:
[xp1.o.pas]
<----------------------------------------------------------->
procedure AddBezug(var hd:header; dateadd:byte);
var c1,c2 : longint;
satz : longint;
datum : longint;
empfnr: byte;
zwiref: string; {HJT 14.08.2005 }
begin
if ntKomkette(hd.netztyp) and (hd.msgid<>'') then begin
c1:=MsgidIndex(hd.msgid);
{ HJT 14.08.2005 start }
if hd.ref='' then c2:=0
else begin
zwiref := hd.ref;
if left(zwiref,1)='<' then delfirst(zwiref);
if right(zwiref,1)='>' then dellast(zwiref);
if zwiref = '' then c2:=0
else c2:=MsgidIndex(zwiref);
end;
{ if hd.ref='' then c2:=0 }
{ else c2:=MsgidIndex(hd.ref); }
{ HJT 14.08.2005 end }
dbAppend(bezbase); { s. auch XP3O.Bezugsverkettung }
satz:=dbRecno(mbase);
dbWriteN(bezbase,bezb_msgpos,satz);
dbWriteN(bezbase,bezb_msgid,c1);
dbWriteN(bezbase,bezb_ref,c2);
...
<----------------------------------------------------------->
bringt nach einem "Packen" zumindest grösstenteils die fehlenden Bezüge
zum Vorschein. Ungültige BEZ, wie zum Beispiel:
<8Oxpqa5nJ0B at vandusen.franken.de> (jnpeters at vandusen.franken.de's
message of "16 May 2002 19:46:00 +0200")
(@ <- at) werden bei meiner obigen Änderung natürlich noch nicht
berücksichtigt.
Leider werden bei einem Neueinlesen von Puffern mit ungültigen BEZ (im ZC-
Sinn) die Bezüge noch nicht korrekt aufgebaut. Hier ist wahrscheinlich in
xp3o.pas/xp3o.inc noch einiges anzupassen (procedure Bezugsverkettung
zB.).
Vielleicht kann sich ja jemand, der kompetenter ist als ich, das
Gesamtproblems mit den ungueltigen BEZ in Altbeständen mal anschauen.
Gruss
Hans-Juergen
------------------------------------------------------------------------
FreeXP Entwickler-Mailingliste
[email protected]
http://www.freexp.de/cgi-bin/mailman/listinfo/dev-list