|
If you're running a script with Process.Start, you can get back the process that was started, and wait for it to end.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
|
I´m working with a process, but the set of instructions i need to delay are not part of the process, so i tinck that i can do it with a thread.
Tanck you for your help the link was very helpfull.
|
|
|
|
|
I'm trying to render a webpage that I previous navigated to it with an axWebBrowser control, the webpage has some adobe flash animations, that of course delay to load in.
when I render the page and saved as a .png file, there exists white rectangles where the animations are.
How can I solve this issue?
Thanks.
P.S. Excuse some or many writing errors.
|
|
|
|
|
Hi All,
stupid question alert!
I've not used generics much yet and I'm just poking around the net looking at various implementations of Generics and I have a question. Can a generic list hold multiple fields? Somethihing akin to a datatable like, a few strings, an int a couple of bools ... ??
I've not come across any demo's of anything like this. If you need to do this would you create a generic list from a class?
Thanks,
James.
|
|
|
|
|
Jammer wrote: Can a generic list hold multiple fields?
Yes, if you take those fields, and define them all as a struct or class. Then you can build a list of that item
Jammer wrote: If you need to do this would you create a generic list from a class?
*grin* bingo
Generics just means being able to specify a type as a parameter. Lists are probably all most people will use them for, and it is the most obvious use IMO, strongly typed collections.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
its YOU again! Do you sleep???
so for argument sake:
struct fileList
{
string dir, filename, extension, file_category;
int file_size, duration;
bool comp, audio, app;
}
FileList<t> filelist
would end up with a generic list capable of holding 4 strings, 2 ints and 2 bools???
I can't find a single instance of anyone talking about a generic list like this. I had originally decided to work with datatables for this until you put me onto the idea of generics.
|
|
|
|
|
*grin* I sleep, a little.
List<fileList> myList
would give you a list of thise items. Is C# like C++, is public the default modifier in a struct ? I don't think so.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Ahhhhhh ... interesting ...
I think i'm going to pop off and write some code ... the fuzziness of what a generic list actually is is clearing a little ... time to put it to the test I think.
I'm must stop this 'too much thinking' before writing code and see what can be done and can't be done!
Still I've just implemented my first proper Exception logging code from my app and that is working really sweet! Thought i'd get that coded early in the lifecycle!
|
|
|
|
|
Yeah, you can't add that soon enough, the sooner you get a written log when you have an error to track down, the better
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
For sure ... i still have some working out to do on the various potential exception types that need handling but i've made a good start, i'm sure its something that will grow with the app as features are added and new exception types are potentially created.
There is a great article on code project about best practice that i'm making my way through. what a great site this is!
back to my structs and generics!
|
|
|
|
|
Hi Christian,
I'm getting a bit confused at the moment (I'm sure you hadn't noticed!)
I'm getting overload errors (just to add to the hilarity, I'm still unsure what overloading is!)
public struct Filelist<br />
{<br />
public string file_name, file_size, file_ext, last_access;<br />
}<br />
<br />
List<filelist> MainFileTable = new List<filelist>();<br />
MainFileTable.Add(@"G:\Jammer\", "2132987", ".WAV", "12/12/2007");</filelist></filelist>
I'm just trying to chuck some test data into the list to see what is going on but as you can see I'm still pretty confused as I thought the .Add() method would simply populate a 'record' in the generic list ...
this isn't the exact structure of the code as is ... here is my code down to the .Add method call.
using System;<br />
using System.IO;<br />
using System.Collections.Generic;<br />
using System.Linq;<br />
using System.Text;<br />
using System.Xml;<br />
<br />
namespace SampleSort.DataLayer<br />
{<br />
public struct Filelist<br />
{<br />
public string file_name, file_size, file_ext, last_access;<br />
}<br />
<br />
public class BuildFileList<br />
{<br />
<br />
<br />
public static void main()<br />
{<br />
List<filelist> MainFileTable = new List<filelist>();<br />
MainFileTable.Add(@"G:\Jammer\", "2132987", ".WAV", "12/12/2007");</filelist></filelist>
<snipped>
|
|
|
|
|
First, you need to create a constructor to instantiate your structure:
public struct Filelist {
public string file_name, file_size, file_ext, last_access;
public FileList(string fileName, string fileSize, string fileExt, string lastAccess) {
file_name = fileName;
file_size = fileSize;
file_ext = fileExt;
last_access = lastAccess;
}
} Then you have to instantiate a new class within the add method, as follows:
MainFileTable.Add(new Filelist(@"G:\Jammer\", "2132987", ".WAV", "12/12/2007")); Hope this helps,
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
that's brilliant! Thank you!
I did get half way as I edited my code to
MainFileTable.Add(new Filelist(@"G:\Jammer\", "2132987", ".WAV", "12/12/2007"));
just one question, how did you format the code in the reply ... ?
|
|
|
|
|
Jammer wrote: how did you format the code in the reply
I used the html preformat tag around the code.
<pre>Your code here</pre>
Sounds like somebody's got a case of the Mondays
-Jeff
|
|
|
|
|
|
Hi Jeff,
I've just amended my code and I have a slight problem I can't figure out.
<code> public class BuildFileList
{
public struct Filelist
{
public string file_name, file_size, file_ext, last_access;
public FileList(string fileName, string fileSize, string fileExt, string lastAccess)
{
file_name = fileName;
file_size = fileSize;
file_ext = fileExt;
last_access = lastAccess;
}
}
public static void main()
{
List<filelist> MainFileTable = new List<filelist>();
MainFileTable.Add(new Filelist(@"G:\Jammer\", "2132987KB", ".WAV", "12/12/2007"));</filelist></filelist></code>
The compile error is on FileList - method must have a return type but adding 'void' to the constructor generates another error
"Error 1 'SampleSort.DataLayer.BuildFileList.Filelist' does not contain a constructor that takes '4' arguments F:\VS2008Stuff\JamSoft.SampleSort\SampleSort.DataLayer\BuildFileList.cs 29 31 SampleSort.DataLayer"
I'm sure its dead simple but I've run out of things to try ... TIA.
|
|
|
|
|
I've moved the struct outside of the BuildFilList class and i'm still having the same the problem. any pointers would be great.
|
|
|
|
|
ok, i've fixed it now! Case sensitivity on the constructor being different to the struct name ...
|
|
|
|
|
Spoke too soon! I promise i'm going to go away soon ... I'm getting "The name 'MainFileTable' does not exist in the current context" on the AddRecordToFileTable() method ... why would this be out of context considering that its instantiated inside a public method main()? Am I trying to do too many things in one class? How do I go about 'positioning' the MainFileTable to make it globally accessible to other methods and so on?
namespace SampleSort.DataLayer
{
public class BuildFileList
{
public struct Filelist
{
public string file_name, file_size, file_ext, last_access;
public Filelist(string fileName, string fileSize, string fileExt, string lastAccess)
{
file_name = fileName;
file_size = fileSize;
file_ext = fileExt;
last_access = lastAccess;
}
}
public static void main()
{
List<filelist> MainFileTable = new List<filelist>();
MainFileTable.Add(new Filelist(@"G:\Jammer\", "2132987KB", ".WAV", "12/12/2007"));
DirectoryInfo dir = new DirectoryInfo(@"G:\samples\ACID-Groove Clips\Loopmasters\DnB Producer\Basslines WAV\Basslines 160bpm WAV");
getDirsFiles(dir);
}
public static void getDirsFiles(DirectoryInfo d)
{
FileInfo[] files;
files = d.GetFiles("*.*");
foreach(FileInfo file in files)
{
string fileName = file.FullName;
string fileSize = file.Length.ToString();
string fileExt = file.Extension;
string fileCreated = file.LastWriteTime.ToString();
AddRecordToFileTable(fileName, fileSize, fileExt, fileCreated);
}
DirectoryInfo [] dirs = d.GetDirectories("*.*");
foreach (DirectoryInfo dir in dirs)
{
getDirsFiles(dir);
}
}
public static void AddRecordToFileTable(string f1, string f2, string f3, string f4)
{
MainFileTable.Add(new Filelist(f1, f2, f3, f4));
}
}
}</filelist></filelist>
|
|
|
|
|
Eventually I have to bind this MainFileTabe to a DataGrid in the SampleSort.Presentation namespace ... should I be creating this generic list in that namespace and merely accessing it from this DataLayer?
very confused at the moment ... you can probably tell!
|
|
|
|
|
Ideally, your presentation layer will not create data sources, it will simply call methods that return them, and then bind to them from there.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Jammer wrote: public static void main() { List MainFileTable = new List(); MainFileTable.Add(new Filelist(@"G:\Jammer\", "2132987KB", ".WAV", "12/12/2007")); DirectoryInfo dir = new DirectoryInfo(@"G:\samples\ACID-Groove Clips\Loopmasters\DnB Producer\Basslines WAV\Basslines 160bpm WAV"); getDirsFiles(dir); }
This variable (MainFileTable) is not global, it's visible only inside the Main method, unless you pass it around from there.
Christian Graus - Microsoft MVP - C++
"also I don't think "TranslateOneToTwoBillion OneHundredAndFortySevenMillion FourHundredAndEightyThreeThousand SixHundredAndFortySeven()" is a very good choice for a function name" - SpacixOne ( offering help to someone who really needed it ) ( spaces added for the benefit of people running at < 1280x1024 )
|
|
|
|
|
Of course!!! <slaps forehead>
Seems obvious now, I'm really struggling getting away from thinking about these repositories of data in terms other than database tables and so on.
I really just need to encapsulate the creation of that generic list into its own method that simply returns it to whatever called it. ie: the class that is going to do something with it ...
Thanks Christian.
|
|
|
|
|
I'm starting to realise that I may need to complete restructure my code. I've spent too long only working in VFP!
Thanks again Christian.
|
|
|
|