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

Antwort per Email an