Proper usage of string.Format to format an EVAL - asp.net

I've got a (probably) simple question, just can't seem to work this out. I've got a repeater and I want to show tracks on a CD. My code looks like this:
<td><%(string.Format("{0:00}", #EVAL("TrackNo")) %>: <%#Eval("SongName") %></td>
Everything was working perfect before I started putzing with the format piece, I want the tracks to line up like:
01
02
...
09
10
instead of
1
2
...
9
10
What am I doing wrong? The field TrackNo is an INT, so I read that it might need to be converted to an int first?

I think it should work;
<%# string.Format("{0:00}", (Convert.ToInt32(Eval("TrackNo"))) %>
or
<%# (Convert.ToInt32(Eval("TrackNo"))).ToString("00") %>

Related

sprintf causing timing-issues?

I'm experiencing a perculiar issue when using sprintf.
I need a char array to look like this: g;cmd;arg;e;, where arg gets leading zeros so it is always 3 chars long, and cmd gets leading zeros so it's always 15 chars long.
As an example, if cmd = 20 and arg = 3749, I need a char array looking like this: g;020;000000000003749;e;.
Both arg and cmd are integers.
I initially accomplished this in pretty inefficient way, but I changed it to something much simpler using sprintf because I needed my code to be faster. Both my initial code and my change can be found on github.
My current implementation looks like this:
#define cmdMsgLength 3
#define argMsgLength 15
#define totalFormatedMsgLength (2+cmdMsgLength+1+argMsgLength+3)
#define msgFormater "g;%03d;%015d;e;"
char msgToSendFormated[totalFormatedMsgLength];
void sendMsg(int _cmd, int _arg) {
sprintf(msgToSendFormated, msgFormater, _cmd, _arg);
Serial.print(msgToSendFormated);
}
This seemed to work well, until my uC also had to control 4 ESC's. I honestly can't find any relation between the two, but it seems like this implementation leads to problems with the ESC's, where of course timing is quite important. The ESC's are being programmed correctly, but when using the Arduino function servo.writeMicroseconds to actuate them, they seem to act randomly. After quite a lot of tests, only this change to my code seems to be causing the issue. As this piece code is so simple and the old code (check the github link) also used Serial.print, I assume sprintf is the culprit.
Is sprintf known to cause these sort of timing-issues? Could it be anything else?
As JVApen pointed out, sprintf always writes a null terminator. As msgToSendFormated was not long enough for that, I'd get an overflow. Setting char msgToSendFormated[totalFormatedMsgLength + 1]; fixed the problem.

Rails 4: how to identify and format links, hashtags and mentions in model attributes?

In my Rails 4 app, I have a Post model, with :copy and :short_copy as custom attributes (strings).
These attributes contain copies for social medias (Facebook, Twitter, Instagram, Pinterest, etc.).
I display the content of these attributes in my Posts#Show view.
Currently, URLs, #hashtags and #mentions are formatted like the rest of the text.
What I would like to do is to format them in a different fashion, for instance in another color or in bold.
I found the twitter-text gem, which seems to offer such features, but my problem is that I do NOT need — and do NOT want — to have these URLs, #hashtags and #mentions turn into real links.
Indeed, it looks like the twitter-text gem converts URLs, #hashtags and #mentions by default with Twitter::Autolink, as explained in this Stack Overflow question.
That's is not what I am looking for: I just want to update the style of my URLs, #hashtags and #mentions.
How can I do this in Ruby / Rails?
—————
UPDATE:
Following Wes Foster's answer, I implemented the following method in post.rb:
def highlight(string)
string.gsub!(/\S*#(\[[^\]]+\]|\S+)/, '<span class="highlight">\1</span>')
end
Then, I defined the following CSS class:
.highlight {
color: #337ab7;
}
Last, I implemented <%= highlight(post.copy) %> in the desired view.
I now get the following error:
ArgumentError
wrong number of arguments (1 for 2..3)
<td><%= highlight(post.copy) %></td>
What am I doing wrong?
—————
I'm sure each of the following regex patterns could be improved to match even more options, however, the following code works for me:
def highlight_url(str)
str.gsub!(/(https?:\/\/[\S]+)/, '[\1]')
end
def highlight_hashtag(str)
str.gsub!(/\S*#(\[[^\]]+\]|\S+)/, '[#\1]')
end
def highlight_mention(str)
str.gsub!(/\B(\#[a-z0-9_-]+)/i, '[\1]')
end
# Initial string
str = "Myself and #doggirl bought a new car: http://carpictures.com #nomoremoney"
# Pass through each
highlight_mention(str)
highlight_hashtag(str)
highlight_url(str)
puts str # > Myself and [#doggirl] bought a new car: [http://carpictures.com] [#nomoremoney]
In this example, I've wrapped the matches with brackets []. You should use a span tag and style it. Also, you can wrap all three gsub! into a single method for simplicity.
Updated for the asker's add-on error question
It looks like the error is references another method named highlight. Try changing the name of the method from highlight to new_highlight to see if that fixes the new problem.

Is there a length limitation of qDebug()<<?

In my code, I found one qDebug()<<s; didn't output the content given to it. It's very strange, so I output s.length(). It says 135254, so I'm wondering whether there is a limitation of length which is shorter than 135254? I have read the source header and do not find the result.
i noticed something similar...
This might narrow it down a bit (using Qt 5.5.1 with Windows mingw):
45000 character trace did not show up in qDebug.
10000 character trace did show up in qDebug.
I was able to qDebug my 45000 characters as 5 separate qDebug calls, each was something like this:
qDebug()<<foo.mid(20000, 10000);
then piece them together in a text editor.
it may have been a little nicer to use qDebug's noQuotes feature too, but i don't need to run my script again today so I'm not prettying it up right now.

Error reported on a blank line

I am truly stumped this afternoon and have done quite a bit of searching to no avail. I am getting the error
"Object doesn't support this property or method /admin/Upload1_20120508JB.asp, line 91"
From the following code:
90 wf = fso2.CreateTextFile(sWriteFilePath)
91
92 If fso1.FileExists(sReadFilePath) Then ...
Line 91 is blank and Line 90 works as expected, the file gets created in the proper location. Has anyone seen anything like this before? If so, what was the solution?
Thanks!
You must use Set, when you assign an object to a variable.
(see here to realize that today is a bad day for this feature of VBScript.)

Adding C# code inline to aspx file generates VS 2008 compile error

The inline code
<% for (int i = 0; i < ThumbnailList.Items.Count; i++)
{ Response.Write("thumbnailViews[" + i.ToString() + "] = $find('" +
ThumbnailList.Items[i].FindControl("ThumbnailView").ClientID + "');\n"); } %>
produces a bunch of compile time errors in Visual Studio 2008 - although it works fine.
But this seems to be the exact way inline code should be added, at least according to this MS help file:
http://msdn.microsoft.com/en-us/library/ms178135(VS.80).aspx
The errors are:
expected expression (at "<%")
expected ';' (at "int i")
expected ')' (at ThumbnailList.Items.Count;
expected ';' (at " i++)")
I have done a
<%# Page Language="C#" ...
at the top of the file.
I know this doesn't answer your question, but it does address the problem of using inline code in that manner.
If a client script (I assume that's what you're trying to make here) seems to require inline asp.net code, I'd suggest moving it to the code behind and start using the ClientScriptManager class.
A good place to start would be:
http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.aspx
Good luck!

Resources