Domino 9 und frühere Versionen > Entwicklung

$LINKS nicht vorhanden

(1/2) > >>

D. Roth.:
Hallo zusammen , ich möchte gern per C API Links auslesen. Das funktioniert aber leider mit einigen Mails nicht.

Weil das $LINKS Feld nicht vorhanden.

Gibt es einen Lösungsweg ??
Neu Speicher hilft nicht !!

Gandhi:
Meiner Erfahrung nach werden nicht alle Felder so abgespeichert, wie es der Domino Client angibt (z.B. Body Felder in Mime-Mails).
Ich würde mal mittels C-Api eine Liste aller Felder erstellen und nachschauen, ob da was passendes dabei ist.

D. Roth.:
Ich hab das Feld gefunden(LINKEXPORT2 im Body Feld) !!

Gibt es eine Möglichkeit es auszulesen ( Hab es mit C Api nicht hinbekommen !!). Oder das Feld $Links mit einem Agent zu erstellen ?

Gandhi:
Da muss ich passen - aber wenn Du weisst wo es steht müsstest Du doch auch den Wert lesen können :-:

D. Roth.:
Mein Problem ist ich lese das RichText Field in den Arbeitspeicher,
 aber ich weis nicht was für ein CD Typ der LINKExport2 ist .

-----------Schnipp----------------------------------------------------------------------

' read all the Rich Text item info into an array...
   Redim A(0) As APIItem
   m = 0 ' counter
   tt = 0 ' total bytes
   
   NSFItemInfo hNT, item, Len(item), A(m).Item, dt, A(m).Value, A(m).Size
   While Not A(m).Size = 0
      tt = tt + A(m).Size
      m = m + 1
      Redim Preserve A(m)
      ItemInfoNext hNT, A(m - 1).Item, item, Len(item), A(m).Item, dt, A(m).Value, A(m).Size
   Wend
   m = m - 1
' copy the actual Rich Text into a memory block...
   OSMemAlloc 0, tt, hM
   pm = OSLockObject(hM)
   pp = pm
   For i = 0 To m
      aa = A(i)
      na = aa.Size - 2
      pv = OSLockObject(aa.Value.hPool) + aa.Value.Block + 2
      CopyMem pp, pv, na
      OSUnlockObject aa.Value.hPool
      pp = pp + na
   Next
' scan the Rich Text for composite data records...
   R=0
   Do
      GetCD pm, tt, toff, tlen, sig, R
      If sig = ??? Then ' ??? LINKEXPORT2

      End If
   Loop Until ((sig = 0)Or(sig=???))
-----------Schnipp----------------------------------------------------------------------

Sub GetCD(pointer As Long, length As Long, cdoffset As Long, cdlength As Long, cdsig As Integer, R As Long)
   Dim i As Integer
   Do
      Peek i, pointer + R, 2
      cdsig = i And &HFF
      cdlength = (i And &HFF00) / 256
      cdlength = cdlength And &HFF
      If ((cdlength And &HFF) = &HFF) Then
         cdlength = 0
         Peek cdlength, pointer + R + 2, 2
      Elseif cdlength = 0 Then
         Peek cdlength, pointer + R + 2, 4
      End If
      cdoffset = R
      If cdsig = 0 Then R = R + 1 Else R = R + cdlength
   Loop Until R >= length Or Not cdsig = 0
   
   If R >= length Then
      cdoffset = 0
      cdlength = 0
      cdsig = 0
      R = 0
   End If
End Sub

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln