Autor Thema: Lotusscript:NotesItem  (Gelesen 8797 mal)

Offline developperFLY

  • Frischling
  • *
  • Beiträge: 8
Lotusscript:NotesItem
« am: 04.01.10 - 12:18:26 »

Hallo zusammen, wie kann ich prüfen ob ein Item (Richtextfeld) leer ist.
Also es ist vorhanden, aber es hat keinen Inhalt (kein Bild).

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #1 am: 04.01.10 - 12:38:46 »
Hallo,

Schon mal geshaut, ob in der Klasse "NotesRichTextItem" etwas brauchbares dabei ist?


Andreas

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Lotusscript:NotesItem
« Antwort #2 am: 04.01.10 - 12:43:14 »
das ist gar nicht so einfach.

Du kannst zum einen NotesRichTextItem.getUnformattedText prüfen, ob ein leerer Wert zurück kommt. Dann kann aber immer noch ein Attachment / Bild o.ä. enthalten sein.

Ob ein Attachment/Bild enthalten ist kannst du evtl durch Abfrage von NotesRichTextItem.valueLength fest stellen. Da dieser Wert dann (meistens) > 200 ist.

Wenn du's absolut zuverlässig machen willst, hilft meiner Meinung nur der Weg über DXL oder die C-API.

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline developperFLY

  • Frischling
  • *
  • Beiträge: 8
Re: Lotusscript:NotesItem
« Antwort #3 am: 04.01.10 - 12:51:48 »
Besten Dank. Ja das Problem hört sich recht simpel an, aber es hat es in sich. :D

Ja ich habe nun Versuche mit ValueLength gemacht, anscheinend, wenn das RichTextFeld leer ist, hat es einen ValueLength von 110 (Long).

Ich glaube das kann ich so lösen. Besten Dank!

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #4 am: 04.01.10 - 12:52:49 »
Zitat
ob ein Item (Richtextfeld) leer ist.
RT ist niemals leer.
Valuelength ist eine option. Ein "leeres" RTItem hat normalerweise eine Länge von 104 Byte
Setzt sich zusammen aus
02 Byte für den RT Typ
90 Byte für die PabDefinition
04 Byte für die PabReference   
08 Byte für den ersten CDTEXT record

Aus der C++ API Help
Zitat
A rich text item is considered empty if it contains only empty plain text and font and paragraph style information. Note that an empty rich text item does not have zero length, nor does it necessarily even have a fixed length. The simplest case of valid empty rich text consists internally of a CDPABREFERENCE followed by a CDTEXT, but empty rich text may also contain paragraph styles stored in records such as CDPABDEFINITION, CDSTYLENAME, and CDPABHIDE
« Letzte Änderung: 04.01.10 - 13:49:14 von eknori »
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Lotusscript:NotesItem
« Antwort #5 am: 04.01.10 - 13:17:27 »
Darüber hatten wir hier schon einiges:

http://atnotes.de/index.php/topic,12104.0.html
http://atnotes.de/index.php/topic,10168.0.html
http://atnotes.de/index.php/topic,10458.0.html

Es gibt hier noch wesentlich mehr, bemühe mal die Forensuche.

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #6 am: 04.01.10 - 14:18:09 »
Bevor man über das Analysieren des Inhalts sinniert, muss zunächst die Frage geklärt werden: Ist das Dokument mit dem RTI schon gespeichert oder nicht? Wenn es nicht gespeichert ist, sind noch Vorarbeiten zu leisten, damit man überhaupt etwas zum Analysieren hat.

@Ulrich: Ein "leeres" RTI hat mindestens 104 Byte - je nach Gestlatung der Maske können das durchaus auch mehr sein. Ich würde mich generell nicht auf fixe Werte bei einer Prüfung verlassen ausser "grösser als".

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #7 am: 04.01.10 - 15:26:22 »
Zitat
je nach Gestlatung der Maske können das durchaus auch mehr sein.
Hmm?? inwiefern das denn? Dem Item ist es ziemlich wurscht, was um ihm herum passiert. Auch in der Memo Maske hat das Body Item eine initialie Groesse von 104 byte.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #8 am: 04.01.10 - 15:47:02 »
Beispiel gefällig? Ist unten angehängt. Die DB stammt noch aus R3-Zeiten (hässlich, aber immer noch seeehr praktisch (für mich)). Und in allen "leeren" RTIs mit dem Namen "Stand" sind es 122 Byte.

Ich suche auch gerne nach anderen Beispielen. Zu R5-Zeiten habe ich das letzte Mal Tests gemacht (und es dann aufgegeben), wie gross denn "leere" RTIs sind - da waren es meistens 109 Byte.

Das RTI ist ein geheimnisvolles Ding  ;)    (Ist es natürlich nicht, aber es ist eben "anders als andere Kinder")

Bernhard

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #9 am: 04.01.10 - 15:53:03 »
Dann ist das Versionsabhängig und nicht von der Gestaltung der Form beeinflusst.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #10 am: 04.01.10 - 16:17:51 »
Wenn Du magst, suche ich noch Beispiele heraus, die mit der gleichen Designer-Version erstellt wurden. Abgesehen davon - die Dokumente in dieser DB wurden mit den Client-Versionen 6, 7 und 8 erstellt.

Abgesehen davon steht das ja auch alles in dem Text aus der C++-API-Doku, den Du zitierst hast. Meine Lehre aus den damaligen Tests (das muss schon 1999 oder 2000 gewesen sein - wie die Zeit vergeht ...): "gehe niemals von einem fixen Wert aus!

Bernhard

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Re: Lotusscript:NotesItem
« Antwort #11 am: 05.01.10 - 12:56:06 »
Dann ist das Versionsabhängig und nicht von der Gestaltung der Form beeinflusst.
Ist es nicht so, dass das RT-Item die gerade aktive Hideformel "annimmt" die in der Maske im Abschnitt definiert ist ???

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline eknori

  • @Notes Preisträger
  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.730
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #12 am: 05.01.10 - 13:14:09 »
Zitat
Dann ist das Versionsabhängig und nicht von der Gestaltung der Form beeinflusst.
Ist es nicht so, dass das RT-Item die gerade aktive Hideformel "annimmt" die in der Maske im Abschnitt definiert ist Huh

Was aber auf den Aufbau eines "leeren" RT Feldes keinen Einfluss hat.
In der C++ API gibt es eine Property LNRTItem.IsEmpty.
Die macht im Grunde nichts anderes, als die CD Records des Items zu parsen. Wenn nach dem ersten TEXT Record nichts weiter kommt, und der "value" der CDText struct leer ist, dann ist auch das RTItem leer.

Man kann das in LS nachbilden ( habe ich ja schon in einem anderen Thread beschrieben).

Bernhard hat natürlich mit seiner Aussage recht,m dass man sich nicht auf die Länge verlassen kann.
Die kann nur ein Anhaltspunkt sein.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Lotusscript:NotesItem
« Antwort #13 am: 06.01.10 - 14:57:26 »
Hallo,

ich hatte einmal Prüfungsroutinen hier eingestellt:
http://atnotes.de/index.php/topic,44226.msg284750.html#msg284750

Gruß

Norbert
Situs vilate in isse tabernit.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz