Recent

Author Topic: FrameBrowser substring problem  (Read 2478 times)

Sniper

  • New Member
  • *
  • Posts: 39
FrameBrowser substring problem
« on: April 20, 2018, 08:33:39 am »
I'm trying to get substring with selected string in FrameBrowser, but no luck. Could you give any advice?
Code: Pascal  [Select][+][-]
  1. procedure TForm1.Button6Click(Sender: TObject);
  2. var start : integer;
  3.      endl : integer;
  4. begin
  5.   start := FrameBrowser.SelStart;
  6.   endl := FrameBrowser.SelLength;
  7.   Edit3.Text := FrameBrowser.SelText;
  8.   Edit4.Text := IntToStr(start)+ ' ' + IntToStr(abs(endl));
  9.   if (FrameBrowser.Find(FrameBrowser.SelText, True)) then
  10.   begin
  11.       Edit5.Text := FrameBrowser.ToString.Substring(10, abs(endl)+10);
  12.       Edit5.Text := FrameBrowser.ToString.Substring(FrameBrowser.SelStart, FrameBrowser.SelLength); // Also do not work
  13.   end;
  14. end;  

Output is Invalid type cast.
« Last Edit: April 20, 2018, 12:08:35 pm by Sniper »

howardpc

  • Hero Member
  • *****
  • Posts: 4144
Re: FrameBrowser substring problem
« Reply #1 on: April 20, 2018, 09:55:51 am »
What is the declaration of FrameBrowser? Is it an LCL control?

Sniper

  • New Member
  • *
  • Posts: 39
Re: FrameBrowser substring problem
« Reply #2 on: April 20, 2018, 10:04:41 am »
What is the declaration of FrameBrowser? Is it an LCL control?

This is a part of THTMLViewer/FrameViewer component: FrameBrowser: TFrameBrowser;
TFrameBrowser = class(TFVBase)
TFVBase = class(TFrameViewerBase)
TFrameViewerBase = class(TViewerBase)
TViewerBase = class(ThtControlBase)
ThtControlBase = class(TWinControl)
TWinControl = class(TControl)
TControl = class(TLCLComponent)
« Last Edit: April 20, 2018, 10:06:20 am by Sniper »

howardpc

  • Hero Member
  • *****
  • Posts: 4144
Re: FrameBrowser substring problem
« Reply #3 on: April 20, 2018, 12:27:01 pm »
It is not clear what string data you are trying to find.
If FrameBrowser.SelText is not empty, then a Find based on it is useless, since SelText is already known.
FrameBrowser.ToString returns the known string "TFrameBrowser", the control's ClassName. Why would you want to get a substring of that?

Sniper

  • New Member
  • *
  • Posts: 39
Re: FrameBrowser substring problem
« Reply #4 on: April 20, 2018, 12:33:39 pm »
It is not clear what string data you are trying to find.
If FrameBrowser.SelText is not empty, then a Find based on it is useless, since SelText is already known.
FrameBrowser.ToString returns the known string "TFrameBrowser", the control's ClassName. Why would you want to get a substring of that?
I'm trying to select data on TFrameBrowser:
Code: Pascal  [Select][+][-]
  1.   start := FrameBrowser.SelStart;
  2.   endl := FrameBrowser.SelLength;
  3.   Edit3.Text := FrameBrowser.SelText;
  4.   Edit4.Text := IntToStr(start)+ ' ' + IntToStr(abs(endl));
  5.  
This code works fine.

Now, I'm trying to get substring(10symbols+start,endl+10symbols);
Ex. if string '<body><div>sometext</div></body>' result text should be 'body><div>sometext</div></bo'
Code: Pascal  [Select][+][-]
  1. Edit5.Text := FrameBrowser.ToString.Substring(start-10, abs(endl)+10);
  2.  
But nothing works.

howardpc

  • Hero Member
  • *****
  • Posts: 4144
Re: FrameBrowser substring problem
« Reply #5 on: April 20, 2018, 03:08:50 pm »
Perhaps you're looking for something like this:
Code: Pascal  [Select][+][-]
  1. procedure TForm1.Button6Click(Sender: TObject);
  2. var
  3.   start : Integer;
  4.   endl : Integer;
  5.   s: String;
  6. begin
  7.   start := FrameBrowser.SelStart;
  8.   endl := FrameBrowser.SelLength;
  9.   s := FrameBrowser.SelText;
  10.   Edit3.Text := s;
  11.   Edit4.Text := IntToStr(start)+ ' ' + IntToStr(abs(endl));
  12.   if (FrameBrowser.Find(FrameBrowser.SelText, True)) then
  13.     Edit5.Caption := s.Substring(10, endl+10)
  14.   else Edit5.Caption := 'not found';
  15. end;

Sniper

  • New Member
  • *
  • Posts: 39
Re: FrameBrowser substring problem
« Reply #6 on: April 21, 2018, 08:31:08 pm »
Perhaps you're looking for something like this:
Code: Pascal  [Select][+][-]
  1. procedure TForm1.Button6Click(Sender: TObject);
  2. var
  3.   start : Integer;
  4.   endl : Integer;
  5.   s: String;
  6. begin
  7.   start := FrameBrowser.SelStart;
  8.   endl := FrameBrowser.SelLength;
  9.   s := FrameBrowser.SelText;
  10.   Edit3.Text := s;
  11.   Edit4.Text := IntToStr(start)+ ' ' + IntToStr(abs(endl));
  12.   if (FrameBrowser.Find(FrameBrowser.SelText, True)) then
  13.     Edit5.Caption := s.Substring(10, endl+10)
  14.   else Edit5.Caption := 'not found';
  15. end;

Not found printed or nothing.

Anyway. Is it possible to get string with raw html code loaded in the component using:
Code: Pascal  [Select][+][-]
  1. FrameBrowser1.LoadURL('file:///'+ DosToHTMLNoSharp(OpenDialog1.Filename));

 

TinyPortal © 2005-2018