|
I have posted similar question on StackOverflow[^]. I am unable to find the solution as yet
|
|
|
|
|
Please don't assume that CodeProject members are going to logon to SO just to read your question.
Veni, vidi, abiit domum
|
|
|
|
|
Right!
I pasted code here:
Code[^]
I get Invalid Object Array error on CopyObject line
|
|
|
|
|
Hi,
I have to get a directory file list, filtered on multiple extensions...and sorted!
I use this, which is the fastest way I've found to get dir content filtered on multiple extensions:
Dim ext As String() = {"*.jpg", "*.bmp","*png"}
Dim files As String() = ext.SelectMany(Function(f) Directory.GetFiles(romPath, f)).ToArray
Array.Sort(files)
and then use an array sort.
I was wondering (and this is my question ) if there would be a way to do the sorting IN the same main line? A kind of:
Dim files As String() = ext.SelectMany(Function(f) Directory.GetFiles(romPath, f)[B].Order By Name[/B]).ToArray
and, if yes, if I would gain speed doing this instead of sorting the array at the end (but I would do my test and report..as soon as I get a solution!!)?
Thanks for your help!!
|
|
|
|
|
Jayme65 wrote: if there would be a way to do the sorting IN the same main line? A kind of: You can combine methods on a line, but that makes it a compound statement; it still execute a statement at a time.
Getting a list and sorting are two distinctly different things.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Jayme65 wrote: ext.SelectMany(Function(f) Directory.GetFiles(romPath, f))
This part gets the list three times, and filters it three times. Next, you turn it into an array, and sort that. It'd (probably) be faster to get the list once and filter it. Since GetFiles already returns an array, there's no need to convert it.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I'd like to have charmap.exe open with the same font I'm using in my application's main window. But I've had no success passing arguments to it. I had assumed that:
Process.Start("charmap.exe", "Arial")
would get it done. But this has no effect. Suggestions?
XAlan Burkhart
|
|
|
|
|
That's because CharMap doesn't take any command line arguments.
AFAIK, the only way to open it at a specific font would be to launch it, make sure the window has the focus and then use SendKeys to send the font name, essentially typing it into the drop down list in CharMap.
|
|
|
|
|
I had considered this but was wanting to send arguments instead. But SendKeys works perfectly. Thanks much for the info.
XAlan Burkhart
|
|
|
|
|
Arguments only work when the target app is expecting them, and only if you use the switches it expects.
|
|
|
|
|
You can do this via the registry.
Dim CharMap_Key As RegistryKey = Registry.CurrentUser.OpenSubKey("Software\Microsoft\CharMap", writable:=True)
Dim currentfont As String = CStr(CharMap_Key.GetValue("Font", defaultValue:=""))
CharMap_Key.SetValue("Font", "Arial")
Dim proc As Process = Process.Start(Environment.SystemDirectory & "\charmap.exe")
|
|
|
|
|
In my case, charmap.exe already opens with "Arial" as the selected value - Of course, if you have a different font in your app you'll need to go the SendKeys-Way.
|
|
|
|
|
I build random character, plot, etc. generators for my fiction writing. I've learned the basics and have been trying to expand. Unable to get a Designer back to Design, I scrapped a major project that I couldn't continue. I than snagged part of the code that worked in that project, in the exact same way, but will not work in the new project. (I would also love to know how to get Designer back to Design as that's eaten multiple projects.)
I click a "Name" button on Form2. Form3 is a pop up with 4 checkbox and a "close" button. The "close button" works. The checkbox to random line selection to Form2 textbox does not work.
Male.txt (which is male names) is in the Debug folder. It has a lengthy name list.
In the original version, I clicked the box, it automatically generated a line from the file which appeared in the appropriate txtbox. In the new version, nothing happens.
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.CheckState = 1 Then
Male()
End If
End Sub
Sub Male()
Dim randomnum As New Random()
Dim RandomNumber As Integer
Dim lines = IO.File.ReadAllLines("Male.txt")
RandomNumber = randomnum.Next(0, UBound(lines))
Form2.TextBox1.Text = (lines(RandomNumber))
End Sub
End If
End Sub
|
|
|
|
|
Step through the code with your debugger, it will soon show you what is happening.
Veni, vidi, abiit domum
|
|
|
|
|
One thing you need to do is move the creation of the Random object to class-level. Just create it once and use it throughout your class as required.
Why? Because if you call this code in quick succession, the RNG is initialized with the current time, which can be exactly the same in quick successive calls, resulting in the same number being generated multiple times in a row.
|
|
|
|
|
There are no error messages. I try to "debug" and it simply doesn't work. There is no reason, that I can find, for it not working. I have resolved anything that showed up at the bottom errors/msgs/etc.
I did not understand the other message. I need it explained.
|
|
|
|
|
You're going to have to define "not working". What does it actually do?? Step through the code line by line and watch the variable contents.
As for moving the Random to class-level, it's easy. Oh, and you might want to break your click handler functionality down a bit into simpler methods:
Public MyForm
' This is declared at the class level.
Private RNG As New Random()
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
If CheckBox1.CheckState = 1 Then
Male()
End If
End Sub
' This code really should be in Form2, not in any other form.
' Form code should be responsible only for interacting with the controls
' on its own form, not with controls on another form.
Private Sub Male()
Dim lines() As String = GetLinesFromFile("male.txt")
Form2.TextBox1.Text = lines(RNG.Next(lines.Length))
End Sub
Private Function GetLinesFromFile(ByVal filename As String) As string()
return File.ReadAllLines(filename)
End Function
End Class
|
|
|
|
|
It does nothing. I click the box. The name (from the file) does not appear in the textbox.
If I'm suppose to be reading some line by line file, I don't know where that is.
I will try this.
The multiple forms are pop ups. The alternative is a much larger window that takes much more effort and results in the Designer window popping up and eating all my work (as I'm no longer able to work on a program when I've the Design view.) Hence my strategy change.
|
|
|
|
|
In response to someone saying I should not use a form to affect another form, as this code does, I tried using a Dialog box for the same effect. I have the exact same irreconcilable error. The code works in the test project but will not work once I am trying to build the program.
"Not Work" I click the check boxes and no text appears in the textbox before or after clicking the OK button.
There are no error messages before nor during Debugging. I have hit a wall, again, of a VB error that makes no sense.
|
|
|
|
|
That's what the debugger is for, along with Breakpoints and the Watch window where you can easily see the currently scoped variables and their values.
Seriously, if you don't know how to use the debugger, stop what you're doing and learn. Without it, you're just guessing at what the code is really doing and frustrating yourself in the process. Quite frequently, you'll find that the code is working differently from what you thought it should be doing.
Read and watch these.[^]
|
|
|
|
|
Adding to what Dave has said:
As a bit of a pointer towards debugging have a look at the following two variables after their values have been set.
Set a breakpoint at
Form2.TextBox1.Text = (lines(RandomNumber))
run your code and when the breakpoint is hit hover your move over lines and RandomNumber .
This will show you the values these variables have been set to.
Debugging is one of the most important skills you will need as a developer and even after 24 years of codeing I still use the debugger daily.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|
|
If I'm expected to learn something, I need to know what it is, where it is and how it works.
I learn by doing, not by reading. Especially since I have been unable to find anything specific to what I'm doing.
Note: I opened VB and looked for "Watch." It has one option in the instructions that don't work because it requires selecting options not available. I am unable to do something without accurate instructions.
|
|
|
|
|
Zyndell wrote: I learn by doing I get that .
However I think you might need to read something to give yourself a bit of a start with debugging - after all if you did not learn by reading you would not be posting messages on this forum and reading the answers.
As I am feeling friendly today I thought I would find a Youtube debugging tutorial[^] that might be a good place to start.
[edit - after DeathByChocolate's post on the correlation between looks and speelling I though I should correct my spelling]
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
modified 3-Sep-13 11:02am.
|
|
|
|
|
I'm not objecting to using this. The problem is I can find absolutely no use for it. What I can manage is to put in a breakpoint that simply stops the debugging process and accomplishes nothing. I'm used Help the try to find out about debugging, watch and breakpoints and it doesn't accomplish anything.
Please explain, or give me a URL that explains, how to do this. As my attempts to find this information, both on my computer and by Google has just left me even more frustrated with the situation.
|
|
|
|
|
Have a look at the debugging tutorial(CLICK HERE!!!)[^] url I included in my last post.
It's a basic youtube tutorial and will give you enough to get started.
“That which can be asserted without evidence, can be dismissed without evidence.”
― Christopher Hitchens
|
|
|
|