|
How can i make the file executable by someone else with out the need of downloading a visual basic program onto their computer?
|
|
|
|
|
Search for click-once deployment.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
|
|
Hey got a question about visual basic. Got a project for college to write a small code for a button to search an array called 'Members(0)'. The programme basically gets the user to input data via a input box (name, age only) and this button needs to find the LONGEST name in the array. And display it in the text box called 'txtResult.text'
Here's the code I have so far;
Private Sub btnLongName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLongName.Click
Dim LongName As String
Dim LengthOfLongestName As Integer
LongName = Members(0).Name
LengthOfLongestName = Len(Members(0).Name)
End Sub
End Class
|
|
|
|
|
There are two things I would like to point out:
The first, is that nowhere in your code, do you examine all of the elements of Members(0) . You only examine one element.
In order to resolve this problem you need to learn how to iterate through the elements of the array. To find out how to do that, why not search MSDN or google for the words in bold.
The second thing is fairly small:
Your code:
LongName = Members(0).Name
LengthOfLongestName = Len(Members(0).Name)
The first line gets the name from the array element. Accessing stuff in arrays is reasonably costly in terms of the processing required. So, in the second line, don't get the length by diving into the array again, use the name you have already fetched.
Modified code:
LongName = Members(0).Name
LengthOfLongestName = Len(LongName)
Good luck!
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Thanks for the info but the meat of the matter is on actually how to search for the longest name in that array which i'm struggling with big time >< Sorry to be so general, I'm fairly new to VB
I've edited it a bit more;
Private Sub btnLongName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLongName.Click
Dim LongName As String
Dim LengthOfLongestName As Integer
LongName = Members(0).Name
LengthOfLongestName = Len(LongName)
If LongName Then
End If
txtResult.Text = "The longest name is " & LongName & " ."
End Sub
End Class
modified on Wednesday, March 25, 2009 6:43 PM
|
|
|
|
|
OK.
Some more clues.
Since you are interested in the longest name, look at the first element (your code already does that) and set the LengthOfLongestName variable to its length (your code already does that), and set the LongName variable to the name of the first element (your code already does that). So you've made a good start.
Then look at the length of the next element and if, but only if it is greater than LengthOfLongestName , set LengthOfLongestName to this length and set LongName to the Name of this element.
Then do the same for the next element, and so on, until you have examined all of the elements.
When you have done this, LengthOfLongestName will hold the length of the longest name and LongName will hold the longest name itself.
That's it.
Iterating over an array is such a basic operation that there are thousands and thousands of examples in MSDN and elsewhere.
I'm not going to write it for you. Do some research find an example and try to code it yourself. To start with it doesn't have to do the longest name thing. Try just getting it to list the elements, then when you are sure you understand what's happening, do the longest name bit.
Once you have done some coding and got at least part of it working, come back if you get stuck.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Henry Minute wrote: Once you ... got at least part of it working, come back if you get stuck.
This begs for an article entitled "How to get unstuck at the very start?"
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Picky, picky, picky.
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
Private Sub subLongest()
Dim arr(100) As String
arr(0) = "aa"
arr(1) = "bbb"
arr(2) = "cc"
arr(3) = "ddddd"
arr(4) = "aa"
arr(5) = "bbb"
arr(6) = "cc"
Dim maxLenIndex As Int16 = 0
Dim maxLen As Int16 = arr(0).Length
For ii As Int16 = 1 To 100
If arr(ii) IsNot Nothing Then
If arr(ii).Length > maxLen Then
maxLen = arr(ii).Length
maxLenIndex = ii
End If
End If
Next
MsgBox("Longest element is " & arr(maxLenIndex))
End Sub
|
|
|
|
|
OK.
That's your code.
You have made a lot of progress, since the last code-sample you posted. Well done!
Now what happens when you run it?
Do you get errors? If so, what are they?
Does it give an incorrect answer?
What is the problem that you need help with?
Henry Minute
Do not read medical books! You could die of a misprint. - Mark Twain
Girl: (staring) "Why do you need an icy cucumber?"
“I want to report a fraud. The government is lying to us all.”
|
|
|
|
|
I know how to determine how many lines per printed page in .net
Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As System.Drawing.Printing.PrintPageEventArgs)
Dim linesPerPage As Single = 0
linesPerPage = ev.MarginBounds.Height / printingFont.GetHeight(ev.Graphics)
end sub
Is there a way I can determine how many characters will fit on a line before hitting the left margin, based on font?
I have a report that can get very long. I want to break long lines to print on separate pages so the report could be viewed on two pieces of paper side by side.
Thanks
Ryan
|
|
|
|
|
I think Graphics.MeasureString is what you are looking for. You can the size of print area, then you can find the size of text you are printing.
जय हिंद
|
|
|
|
|
I had been looking at the MeasureString method, and was not sure if there was a better way. I just want to clarify that there is not a better way to use MeasureString than the way I am doing it right now. By the way because this is a text report, I am using the Courier New font, so all characters are the same width. Code Snippet Below:
***************************************************************************************
Private Sub buildReport(ByVal ev As System.Drawing.Printing.PrintPageEventArgs)
Dim line As String = ""
Dim LinesIfPrinted As Int16 = 0
'Get the longest line of text in the report
For LineIndex As Int16 = 0 To strLines.Length - 1
'strLines is a text array with each line of the report
If strLines(LineIndex).Length > line.Length Then line = strLines(LineIndex)
Next
'Find Out How Many Pages
ev.Graphics.MeasureString(line, printingFont, ev.MarginBounds.Size, System.Drawing.StringFormat.GenericTypographic, CharactersPerPage, PagesToPrint)
'PagesToPrint is set to how many lines the longest text of the report is
'Thus I know how many pages this line will require.
ReDim LinesToPrint(PagesToPrint - 1, strLines.Length - 1)
'This is what I think could be more efficient. Currently I shorten the
'longest line of text by one ASCII character, until the LinesIfPrinted
'Variable is equal to 1. Than I know how many characters fit on a single
'line.
For CharIndex As Int16 = 1 To line.Length - 1
ev.Graphics.MeasureString(line.Substring(0, line.Length - CharIndex), printingFont, ev.MarginBounds.Size, System.Drawing.StringFormat.GenericTypographic, CharactersPerPage, LinesIfPrinted)
If LinesIfPrinted = 1 Then Exit For
Next
'Next I build the multidimenstional array with each line of text
'and if it is longer than CharactersPerPage I break it into separate
'pages.
<this code="" left="" out=""> End Sub
*************************************************************************************
So my question is if there is a more efficient way to determine how many characters fit on a line without using the For CharIndex as Int16 = 1....... block of code?
Thanks
Ryan
|
|
|
|
|
Yes and no. If the font you're using is a fixed-width font, then yes, you can figure it out. If you're using a proportional spaced font, then each line can take a different number of characters because each character takes up a variable width.
|
|
|
|
|
Doesn't the measurestring solve this? (provided he does it for every line)
|
|
|
|
|
To a point. There's some extra math you have to do to get just the one line in characters. If you send a string that's too big, it'll wrap down the the next line, or just cut off the rendered image, but not tell you how many characters are on the line that you wanted.
|
|
|
|
|
True, didn't say it was easy just possible
|
|
|
|
|
Nothing is ever easy, is it??
|
|
|
|
|
hi
modified 28-Nov-12 8:52am.
|
|
|
|
|
vijay2482 wrote:
If m <> -1 Then
If m = -1 Then
there you have your problem. You got m <> -1 and m = -1 . Well only one of them is true. Don't you think so?
Yusuf
Oh didn't you notice, analogous to square roots, they recently introduced rectangular, circular, and diamond roots to determine the size of the corresponding shapes when given the area. Luc Pattyn[^]
|
|
|
|
|
m = name.IndexOf("Groupe")
If m <> -1 Then
sw.WriteLine(LTrim(name))
End If
this is right...
but even then i dont get the output
|
|
|
|
|
So what are you expecting LTrim to return?? It removes all whitespace characters from the left end of a String, like Tab and Space. If there are character values higher than these than don't have a glyph image, or has just a box image, those characters will not get removed.
You'll have to explain what you mean by "doesn't work".
|
|
|
|
|
i want to shift the line left by 2 characters
|
|
|
|