Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: developperFLY am 04.01.10 - 12:18:26

Titel: Lotusscript:NotesItem
Beitrag von: developperFLY 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).
Titel: Re: Lotusscript:NotesItem
Beitrag von: ascabg am 04.01.10 - 12:38:46
Hallo,

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


Andreas
Titel: Re: Lotusscript:NotesItem
Beitrag von: pram 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
Titel: Re: Lotusscript:NotesItem
Beitrag von: developperFLY 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!
Titel: Re: Lotusscript:NotesItem
Beitrag von: eknori 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
Titel: Re: Lotusscript:NotesItem
Beitrag von: Axel 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,12104.0.html)
http://atnotes.de/index.php/topic,10168.0.html (http://atnotes.de/index.php/topic,10168.0.html)
http://atnotes.de/index.php/topic,10458.0.html (http://atnotes.de/index.php/topic,10458.0.html)

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

Axel
Titel: Re: Lotusscript:NotesItem
Beitrag von: koehlerbv 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
Titel: Re: Lotusscript:NotesItem
Beitrag von: eknori 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.
Titel: Re: Lotusscript:NotesItem
Beitrag von: koehlerbv 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
Titel: Re: Lotusscript:NotesItem
Beitrag von: eknori am 04.01.10 - 15:53:03
Dann ist das Versionsabhängig und nicht von der Gestaltung der Form beeinflusst.
Titel: Re: Lotusscript:NotesItem
Beitrag von: koehlerbv 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
Titel: Re: Lotusscript:NotesItem
Beitrag von: pram 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
Titel: Re: Lotusscript:NotesItem
Beitrag von: eknori 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.
Titel: Re: Lotusscript:NotesItem
Beitrag von: LN4ever 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