|
jasonpb wrote: What does it matter where the string came from?
He simply wanted to know how to fix the string by replacing the double backslashes with singles. Problem was solved.
As the string contains both escaped control characters and escaped backslashes, simply replacing the backslashes will not solve the whole problem.
It's not very uncommon that the real problem is different from what the original poster thinks. If you then only answer the question, you haven't solved the problem. Many times I have not only provided the correct answer, but also the correct question. Just because people don't know what to ask for, should we deprave them of a good answer?
---
b { font-weight: normal; }
|
|
|
|
|
mav.northwind wrote: Why does this matter? You can have a hardcoded rtf string somewhere to preset the contents of a RichTextBox for example, and the sample the original author gave here looks just like such a case.
If it were a hardcoded string, the obvious solution would of course be to correct the string in the code instead of correcting it afterwards.
mav.northwind wrote: Besides it seems to be perfectly good rtf, he just misinterpreted the escaped backslashes...
If it really was actual code that the original author showed, the problem does not exist at all, so the correct solution would be to do nothing at all.
What the best solution is, is still unknown until we know where the string comes from. That why I asked.
---
b { font-weight: normal; }
-- modified at 3:58 Thursday 2nd February, 2006
|
|
|
|
|
I think the simple explanation is that fmardani pasted something into his RTB and looked at the Rtf property in the VS debugger.
I guess that's what a lot of people do in the beginning to get into rtf.
That's exactly the format you get there (including the missing semicolon after his strData = ... assignment)
But you're right, the RTF string itself is not the real source for the author's problems but a general misunderstanding regarding escaped characters and the '@' notation.
Regards,
mav
|
|
|
|
|
I need to decompress some files from a UNIX system that has compressed them with COMPRESS in to <filename>.Z
I've checked SharpZipLib and GZIP does not work with this format (nor any other)
Anyone know of a C# (or VB.NET) library that can decompress this file type?
'Howard
|
|
|
|
|
I have come across an issue using the RichTextBox control and using hidden text.
I have programatically placed hidden text in the control and then attempt to search for that text using the Find method. The indexes it returns are correct.
However, when I call Select (or even set the SelectionStart and SelectionLength properties) to select some text that includes the hidden text this fails to work properly. The actual behavior is to reverse SelectionStart and SelectionLength.
For example:
this.textBox.SelectionStart = 45;
this.textBox.SelectionLength = 0;
-or-
this.textBox.Selection(45, 0);
Now look at the property values in the debuger and you will see SelectionStart = 0 and SelectionLength = 45.
If I remove hidden text from the control everything works fine.
Has anybody experienced this behavior? Just to be sure I wasn't messing with the values somewhere else, I commented out all other Selection calls and setting of the properties from my code and still had the issue.
Thanks
Eric
|
|
|
|
|
I have investigated further and noted the following behavior:
If I set the SelectionStart property to 45 it will stay at 45. However, when I set the SelectionLength property to say 0; then the problem arises.
So it seems you can set one of the properties and it will store properly but when you set the second one the "switch" occurs.
Thanks,
Eric
|
|
|
|
|
Even more strange behavior:
It seems that the Select method and setting of SelectionStart/SelectionLength will result in:
SelectionStart = SelectionStart + SelectionLength
and
SelectionLength = 0
This appears to be the case no matter what the values are and the settings will occur after both properties have been set.
Thanks,
Eric
|
|
|
|
|
Hi!
I have been working with hidden text in RichTextBoxes some time ago and couldn't find suspicious behaviour.
Since you didn't write how you insert hidden text and didn't give the exact RTF string, all I can say is that selection seemed to be consistent if you are aware that a RTB's Text property will contain the hidden text (although the RTB doesn't show it) and the values used for selection are relative to the contents of your Text property.
Regards,
mav
|
|
|
|
|
I insert the Rtf string as follows at the current position of selection.
textBox.SelectedRtf = "{\rtf1\ansi\v " + text + "\v0}"
I also am aware that the Text property will have the hidden text in it. The Find method returns the correct index. The problem occurs when I try to move the selection to the location returned by Find and set the length of selected text.
Please let me know if the above insertion is not valid.
Thanks for your help,
Eric
|
|
|
|
|
I just tried it.
Created a RTB and then wrote:
richTextBox1.Text = "test";
richTextBox1.Select(2,0);
string text = "hidden";
richTextBox1.SelectedRtf = @"{\rtf1\ansi\v " + text + @"\v0}";
richTextBox1.Select(0,0); The RTB showed just "test", the cursor was at the beginning of the line, as expected.
Then I tried to select something via code:
richTextBox1.Select(1,8); and, like I expected, the RTB selected "es" inside "test".
That's what I meant in my previous posting: richTextBox1.Text is "tehiddenst" and selection has to occurr according to this string. In my sample the selection goes from the first 'e' (index 1) 8 characters to the right ('ehiddens'). Since the hidden part isn't shown, only 2 characters are shown as selected, even though 8 characters actually are selected.
Regards,
mav
|
|
|
|
|
Thanks for clearing this up.
I won't be able to try this out until later.
I'll let you know if I'm successful.
Thanks
Eric
|
|
|
|
|
Ok, thanks again for the input.
I have looked at what is going on and still believe I'm doing things right (probably wrong since it doesn't work, but oh well!).
I created a little test app to do what you did and was able to create the issue I'm having. If you don't mind please try:
Create an form with richTextBox1 and button1 objects.
Use the code below:
private void button1_Click(object sender, EventArgs e)<br />
{<br />
int index = this.richTextBox1.Find("hidden2",<br />
RichTextBoxFinds.MatchCase | RichTextBoxFinds.NoHighlight);<br />
this.richTextBox1.Select(0, index);<br />
int temp = this.richTextBox1.SelectionStart;<br />
int temp2 = this.richTextBox1.SelectionLength;<br />
this.richTextBox1.SelectedText = "Eric";<br />
}<br />
<br />
private void Form1_Load(object sender, EventArgs e)<br />
{<br />
this.richTextBox1.SelectedRtf = @"{\rtf1\ansi te\v hidden1\v0st1\par}";<br />
this.richTextBox1.SelectedRtf = @"{\rtf1\ansi te\v hidden2\v0st2\par}";<br />
}<br />
Now if you run the app with the first two lines of SelectedRtf statements (basically like your example) and run the app the selection process in the button click method works well; the resulting text in the RTB is: "Ericst2".
Now if you use the other two lines of SelectedRtf statemsnt (basically what I'm doing) you will find the Select doesn't work. And behaves like I mentioned and the RTB shows: "test1Erictest2." Note the SelectionStart and SelectionLength properties don't match what was sent to Select.
Thanks,
Eric
|
|
|
|
|
Ok, now I think I see what the problem is.
The RTB seems to have a problem when the RTF starts with hidden text.
I doubt that the behaviour is created by the .NET wrapper around the underlying rich edit control, but you can try to reproduce the same effect with an MFC program, for example, to verify this.
Then you should try to contact Microsoft and let them know that there's a problem with the rich edit control, they might even be able to fix it easily and produce a hotfix.
Some time ago I had a different problem with the RTB (the undo/redo buffer was cleared when you queried its Text property) and received a new version of the rich edit control that didn't show the behaviour.
Altogether, I'm very content with the performance of Microsoft's support, so you should give it a try.
Regards,
mav
|
|
|
|
|
I don't have the ability to make an MFC program, but I will definately let Microsoft support know.
Thanks for your help.
At least now I don't feel stupid!
Eric
|
|
|
|
|
When I try to reference an exe file it says it doesn't allow exe or com to be referenced, but it's a .NET exe... so there must be some way to reference it..
Anyone knows how to do that in visual studio 2003?
|
|
|
|
|
alexrait1 wrote: but it's a .NET exe... so there must be some way to reference it..
Why must there be?
A technique that is used a lot where I work is to have an EXE project that is just a bootstrap to launch code in DLLs (in other words there is only one class - with a main method). That way if anything needs to be referenced it can be.
ColinMackay.net
"Man who stand on hill with mouth open will wait long time for roast duck to drop in." -- Confucius
"If a man empties his purse into his head, no man can take it away from him, for an investment in knowledge pays the best interest." -- Joseph E. O'Donnell
|
|
|
|
|
There must be because it's a dll that has a Main method which is defined as an entry method for the application...
Your suggestion doesn't look appealing to me.. I still hope there is some better workaround.
But thanx anyway.
-- modified at 11:54 Wednesday 1st February, 2006
|
|
|
|
|
Library .DLL's have a DllMain method, not a Main. Did you compile this thing as a Console Application??
Colin's suggestion is the best workaround. Doing the "rename .EXE and modify the project file" thing works, but is a total hack.
If the code in the .EXE is going to be shared, do the right thing and put it where it belongs, in a library .DLL!
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I think it's a kind of a bug in visual studio and not a hack that I should apply.
If I can reference the exe from the commandline, why not to allow me doing the same from visual studio which is only an IDE not more than that...
|
|
|
|
|
It's no bug. It's by design. It's trying to force you to follow correct methods and techniques.
Library code and shared objects belong in LIBRARIES, not .EXEs. If you have an object that is shared between modules, it goes in a library. Why is this so hard to understand?
Go ahead and do the "rename .EXE" thing. It just makes you application harder to maintain, a bitch to reuse code, and more difficult to exapand upon.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
I think you can really argue whether this is a bug or not.
One application I would have found the possiblity to reference a .NET exe quite convenient was when I tried to make a working application controllable via remoting.
I wanted a quick way to tell my "remote control application" which members my application has, so this was the direct way.
Meanwhile I've dropped the whole idea, but nevertheless I think this to be a perfectly valid example for wanting to reference an exe from a different project.
Any other, better ideas are welcome, though.
Regards,
mav
|
|
|
|
|
You can't set a reference to an .EXE, only .DLL's and other libraries. An .EXE is NOT a library. Well, unless it's an old ActiveX server anyway...
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
It's perfectly possible using the command line compiler, only Visual Studio doesn't allow it. Workaround: rename the file to .dll, add it as reference, rename it back, modify the project file in Notepad.
|
|
|
|
|
|
I was wondering how to find the source code line / filename (__LINE__/__FILE__ equivalent) when using the Compact Framework, since the System.Diagnostics.StackTrace class is not supported? Goal is to support logging of location of errors in release as well as debug. Has anyone found a technique using Trace, perhaps?
|
|
|
|