Page 1 of 2

merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 5:02 pm
by jgkoehn
Greetings Sergey,
Is there a new feature that merges items in RV later than 17.6.2 especially RV22.

Working on upgrading and somehow my items are merging. Theyhave the same font, etc but they have different tags.
For example: |The item1| cat item2| ate item3|
Has become: |The cat ate item1|

Edit:
As I dig deeper it seems related to loading RTF somehow.
It seems that in RTF an item like this is fine: {\fs20\cf0 {\field{\*\fldinst HYPERLINK "link"}{\fldrslt word}}space{...
but this is not fine: {\fs20\cf0 {\field{\*\fldinst HYPERLINK "link"}{\fldrslt spaceword}}{...

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 5:42 pm
by Sergey Tkachenko
Do you load RTF or RVF?

If RTF (Rich Text Format, format of MS Word), then RTF does not have items. It has commands like "make bold", "apply font name", etc. Also, tags are not saved in RTF (except for hypertext targets stored in tags). So, items cannot be kept when saving and re-loading in RTF. And it does not depend on TRichView version.

If RVF (RichView format), then loaded document must be the same as the original document (if you use LoadRVF or LoadRVFromSteam method; insertion methods may optimize document by merging subsequent text items having identical properties; however, items that have different tags are never merged)

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 6:06 pm
by jgkoehn
If it helps this works fine in RV17 but not in RV22 so no changes really on our end as best I can in this regard. I have two computers old version works fine under RV17. And new version on antoher computer under RV22 has this problem.

We are loading through RTF

Edit:
As I dig deeper it seems related to loading RTF somehow.
It seems that in RTF an item like this is fine:
{\fs20\cf0 {\field{\*\fldinst HYPERLINK "link"}{\fldrslt word}}space{...
but this is not fine:
{\fs20\cf0 {\field{\*\fldinst HYPERLINK "link"}{\fldrslt spaceword}}{...

The issue almost seems to be the placing of the space.

Note these all have links so as you said no items but I guess better would be "links"

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 6:09 pm
by jgkoehn
I may have changed code always possible but I am trying to be very careful with RV code:

here is what we are using for RTF could it be "Merging"?

Code: Select all

rv.RTFReadProperties.ParaStyleMode := rvrsAddIfNeeded; {PI}
  with rv.Style do  for i:=0 to DEF_PARA_STYLES-1{ParaStyles.Count-1} do ParaStyles[i].Border.Style := rvbSingle;   //force RV to not use existing styles - BEGIN
  rvd.LoadRTFFromStream(ms);   //load the rtf
  with rv.Style do  for i:=0 to DEF_PARA_STYLES-1{ParaStyles.Count-1} do ParaStyles[i].Border.Style := rvbNone;   //force RV to not use existing styles - END
  rv.RTFReadProperties.ParaStyleMode := rvrsAddIfNeeded; //not needed any more

Hmms I tried to make sure RTF Options are the same as previous RV17

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 6:36 pm
by jgkoehn
Based on above the "space" position should not matter?
And if this hasn't changed then it would be on my end?

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 6:41 pm
by jgkoehn
Here is the RTF at least the part I could get easily in Delphi7.1
so technically here is the actual text that is Greek:
{\fldrslt \u915?\u945?\u912?\u8179?}}{...(Does NOT work)
{\fldrslt \u949?\u957?}} {...(Does work)

BSBGrkINT-----------------with English Does NOT work
'{\rtf1\ansi\ansicpg0\deff0\deflang0{\fonttbl{\f0\fcharset0 Palatino Linotype;}{\f1\fcharset0 Palatino Linotype;}{\f2\fcharset161 Gentium;}{\f3\fcharset177 Cardo;}{\f4\fcharset0 Palatino Linotype;}{\f5\fcharset0 Palatino Linotype;}}{\colortbl \red0\green0\blue128;\red51\green51\blue51;\red0\green0\blue127;\red73\green142\blue62;\red0\green128\blue128;\red51\green153\blue102;\red0\green0\blue0;\red70\green70\blue70;\red0\green0\blue1;\red153\green51\blue0;\red128\green128\blue0;\red0\green0\blue255;\red128\green0\blue128;}{\fs20\cf0 {\field{\*\fldinst HYPERLINK "_ORIGWORD_%E1%BD%89%5Cpar%7B%5Cb%5Cf0%5Cfs20%5Ccf0%20Transliteration%3A%20%5Cb0%5Ccf9%20%20Ho%7D%5Cpar%7B%5Cb%5Cf0%5Cfs20%20English%3A%20%7D%7B%5Cf0%5Cfs20%5Ccf12%20%20The%7D%26popup%3D1%7C_LEMMA_%E1%BD%81%7C_STRONG_G3588%7C_MORPH_Art-NMS%7C_NOLINK_%7C"}{\fldrslt \u8009?}}{\field{\*\fldinst HYPERLINK "_ORIGWORD_%20%CF%80%CF%81%CE%B5%CF%83%CE%B2%CF%8D%CF%84%CE%B5%CF%81%CE%BF%CF%82%2C%5Cpar%7B%5Cb%5Cf0%5Cfs20%5Ccf0%20Transliteration%3A%20%5Cb0%5Ccf9%20%20presbyteros%2C%7D%5Cpar%7B%5Cb%5Cf0%5Cfs20%20English%3A%20%7D%7B%5Cf0%5Cfs20%5Ccf12%20%20elder%2C%7D%26popup%3D1%7C_LEMMA_%CF%80%CF%81%CE%B5%CF%83%CE%B2%CF%8D%CF%84%CE%B5%CF%81%CE%BF%CF%82%7C_STRONG_G4245%7C_MORPH_Adj-NMS%7C_NOLINK_%7C"}{\fldrslt \u960?\u961?\u949?\u963?\u946?\u973?\u964?\u949?\u961?\u959?\u962?,}}{\field{\*\fldinst HYPERLINK "_ORIGWORD_%20%CE%93%CE%B1%CE%90%E1%BF%B3%5Cpar%7B%5Cb%5Cf0%5Cfs20%5Ccf0%20Transliteration%3A%20%5Cb0%5Ccf9%20%20Gai%C5%8D%7D%5Cpar%7B%5Cb%5Cf0%5Cfs20%20English%3A%20%7D%7B%5Cf0%5Cfs20%5Ccf12%20%20To%20Gaius%7D%26popup%3D1%7C_LEMMA_%CE%93%CE%AC%CF%8A%CE%BF%CF%82%7C_STRONG_G1050%7C_MORPH_N-DMS%7C_NOLINK_%7C"}{\fldrslt \u915?\u945?\u912?\u8179?}}{\field{\*\fldinst HYPERLINK "_ORIGWORD_%20%CF%84%E1%BF%B7%5Cpar%7B%5Cb%5Cf0%5Cfs20%5Ccf0%20Transliteration%3A%20%5Cb0%5Ccf9%20%20t%C5%8D%7D%5Cpar%7B%5Cb%5Cf0%5Cfs20%20English%3A%20%7D%7B%5Cf0%5Cfs20%5Ccf12%20%20the%7D%26popup%3D1%7C_LEMMA_%E1%BD%81%7C_STRONG_G3588%7C_MORPH_Art-DMS%7C_NOLINK_%7C"}{\fldrslt \u964?\u8183?}}{\fie

ABP----------------------------------------- Does work
'{\rtf1\ansi\ansicpg0\deff0\deflang0{\fonttbl{\f0\fcharset0 Palatino Linotype;}{\f1\fcharset0 Palatino Linotype;}{\f2\fcharset161 Gentium;}{\f3\fcharset177 Cardo;}{\f4\fcharset0 Palatino Linotype;}{\f5\fcharset0 Palatino Linotype;}}{\colortbl \red0\green0\blue128;\red51\green51\blue51;\red0\green0\blue127;\red73\green142\blue62;\red0\green128\blue128;\red51\green153\blue102;\red0\green0\blue0;\red70\green70\blue70;\red0\green0\blue1;\red153\green51\blue0;\red128\green128\blue0;\red219\green85\blue58;}{\fs20\cf0 {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G%2A%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u921?\u959?\u973?\u948?\u945?\u962?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G%2A%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u921?\u951?\u963?\u959?\u973?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G5547%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u967?\u961?\u953?\u963?\u964?\u959?\u973?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G1401%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u948?\u959?\u973?\u955?\u959?\u962?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G80%7C_STRONG2_G1161%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u945?\u948?\u949?\u955?\u966?\u972?\u962? \u948?\u949?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G%2A%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u921?\u945?\u954?\u974?\u946?\u959?\u965?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G3588%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u964?\u959?\u953?\u962?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G1722%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u949?\u957?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G2316%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u952?\u949?\u974?}} {\field{\*\fldinst HYPERLINK "_NOLINK_%7C_STRONG_G3962%7C_STRONG2_%7C_STRONG3_%7C_STRONG4_%7C_STRONG5_%7C"}{\fldrslt \u960?\u945?\u964?\u961?\u943?}} {\fie

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 7:19 pm
by Sergey Tkachenko
In your original example (|The item1| cat item2| ate item3|), are all 3 items hyperlinks with different targets?
In this case, they must not be merged into a single item.
Please send me a complete sample document for testing.

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 7:26 pm
by jgkoehn
They each have their own hyperlinks as shown in the RTF above. I will try to make the RTF above into a simple document.

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 7:53 pm
by jgkoehn
Here is a simple test file.
When I load this in RV22 directly it has troubles with the hyperlinks/text.

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 8:01 pm
by jgkoehn
Here is one that works well.
When I load this one directly in RV22 it works fine.
versetext - ABP.rtf
(3.45 KiB) Downloaded 157 times

Re: merge items in RV17.6.2--RV22

Posted: Tue Mar 26, 2024 8:28 pm
by jgkoehn
I tried the one that doesn't work in RV22 in RV17.6.2 ActionTestDemo and it works there but not in RV22

Re: merge items in RV17.6.2--RV22

Posted: Wed Mar 27, 2024 3:41 pm
by jgkoehn
I found if I move the space out with a regex it works right but RegEx can't solve this it is often too complex.

Re: merge items in RV17.6.2--RV22

Posted: Wed Mar 27, 2024 8:46 pm
by Sergey Tkachenko
I confirm the bug in RTF and DocX reading.

Quick fix:
Open RVRTFProps.pas.
Change the line 2764 from

Code: Select all

if (InsertPoint > 0) and item.SameAsPrev and (item.StyleNo >= 0) and
        (CurrentRVData.GetItemStyle(InsertPoint - 1) = item.StyleNo) and
        (item.Checkpoint = nil) then
to

Code: Select all

if (InsertPoint > 0) and item.SameAsPrev and (item.StyleNo >= 0) and
        (CurrentRVData.GetItemStyle(InsertPoint - 1) = item.StyleNo) and
        (item.Checkpoint = nil) and
        RV_CompareTags(CurrentRVData.GetItemTag(InsertPoint - 1), item.Tag,
          rvoTagsArePChars in CurrentRVData.Options) then
After that, run "Install TRichView VCL in Delphi IDE" shortcut in Windows Start menu.
Or wait for the next update, this fix will be included.

Re: merge items in RV17.6.2--RV22

Posted: Wed Mar 27, 2024 9:10 pm
by jgkoehn
[EDIT]please ignore all is fixed
Excellent thank you sir,
The install is not picking up my Delphi 7.1 or Delphi 12 hmms
Is there a manual way to rebuild or is it complex?

Re: merge items in RV17.6.2--RV22

Posted: Wed Mar 27, 2024 9:11 pm
by jgkoehn
Ah it seems to have worked right off in the Delphi 7.1/12 without the re-install
So we are good to go! Thank you again sir.