|
still looking for a good (and fast) solution for the same problem...
please someone help
|
|
|
|
|
Hi, I'm writing a project that takes values out of a n OleDbDataReader and places them into a text file exactly.
In other words, it has start codes, end codes, and line terminator codes. The line terminator sequence is a 0x0A (LF) followed by 0x00 (NULL). However, when writing this, the next string to be written has strange characters in front of it, like it'll have the 0x00 and then 0x13, which if left in and used in production, will cause the system that processes this file to reject it.
I'm using a BinaryWriter, and it's opened with ASCII encryption specified, so I do not know what is wrong. Anyone have any ideas?
|
|
|
|
|
Since you have specified ASCII encoding, I assume you are using the string overload of the BinaryWriter.Write method. This method writes strings prefixed by their length. That explains the strange characters you are seeing.
You would be better of converting the string to a series of bytes or chars first.
|
|
|
|
|
Using the String class's ToCharArray() worked, but just out of curiousity, is there a similar function that would do the conversion into a byte array?
And thanks for the solution, like I said, it's just a matter of curiousity, what I have now does work.
|
|
|
|
|
See the System.Text.Encoding class, and use the correct encoding.
Also, keep in mind this isn't a text file you're creating. The line endings are wrong (should be Environment.NewLine , but can be others except the null-terminator throws it out of whack). It you want a text file, use a TextWriter derivative. Unless you're trying to write a CSV, you can always base64-encode (or whatever encoding you want, but the .NET FCL doesn't have support for others at this time) binary data. You can use the Convert.ToBase64String or Convert.ToBase64CharArray methods, or the ToBase64Transform for streaming support (in this case you'll need to use a StreamWriter to get access to the string, or use a MemoryStream temporarily then use the Encoding class to write it to your text file).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I have written a couple of windows services apps. when I test them they run fine and do what they are supposed to do. But after a couple of days or so, they are still running but do not perform the tasks. Any suggestions, if what could be causing it !
Would really appreciate any help.
Vinayak Katkam
japanreddy@yahoo.com
|
|
|
|
|
Make sure you're cleaning up code. If you use any IDisposable implementations (ADO.NET connections and commands are a good example), make sure you call Dispose on them when finished. It's a good idea to using a using block to make sure resources are released:
using (SqlConnection conn = new SqlConnection(...))
{
} It's also a good idea to instrument your service (using the Event Viewer, WMI events, etc.) so that you know what's going on. Obviously this would be a hard problem to debug (given the amount of time before things start going haywire), so instrumenting your app and responding to events will let you know when a problem starts.
Read some of the exception management and instrumentation blocks in the MSDN Patterns and Practices[^] section.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I created a C# project and I would like to call functions in my existing C++ project, so I add the C++ project to my C# solution. Can someone please tell me how to call a C++ function from a C# project? Thank you for your great help.
|
|
|
|
|
you need to add reference to the project in your C# project. This is a guess.
|
|
|
|
|
If this is a Managed C++ project, then it produces an assembly that you can use like any other assembly in your C# project.
If you want to call exported native functions, you need to learn about Platform Invoke. Read Consuming Unmanaged DLL Functions[^] and Marshaling Data with Platform Invoke[^].
If your project is a native VC++ project, your C# doesn't need a reference to it. Just make sure the compiled DLL is resolvable (i.e., either in the application's directory or in a directory within the PATH environment variable).
Read about the LoadLibrary API in the Platform SDK for the exact steps that the Winodws executable loader uses to resolve executables.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Fairly simple: i need to get the correct [THEME]_STARTBUTTON_BMP resource from the msstyles file, according to the current theme. UXTHEME reports Homestead for olive, Metallic for Metallic ... but... NormalColor for blue. i need the string "blue" if the current theme is in fact, the blue theme, in order to get the correct bitmap resource. IS THIS POSSIBLE?????
P.D.: I've tried, but uxtheme doesn't supports direct painting of startbutton resource, so, i thought the key is inside the .msstyles file itself. If i have the exact location where: DEFAULT=BLUE, then i read it and my problem is over. AFAIK, this location doesn't exists. PLZ HELPP!!!!
|
|
|
|
|
(this probably really belongs in the VS IDE board, but I'd rather Mr. Stewart took a read - apologies all)
Is there a way to programmatically create the "Add Reference" dialog as seen in the VS.NET IDE? I'm aiming at creating a wizard to generate a particular type of component. During this wizard process, the user will need to select an existing .NET assembly (one that conforms to interface X). I'm wobbling between writing my own file chooser, but if the "Add Reference" dialog is a creatable control, I'd rather use that.
Any ideas?
Jeremy Kimball
I have traveled the gutters, lo these many days, with no signs of life. Well met.
-brianwelsch
|
|
|
|
|
Currently, the way the Add Reference works is as follows:
Go to the registry
Under the Framework it get the list of directories
Under each directory it gets each item in the GAC
You could probably do something similar where you have either a number of well-known directories or a way of dynamically constructing a directory list. For each assembly in each directory, you would then do an Assembly.Load and check to see if it exposes IMyInterface.
______________________________
The Tao gave birth to machine language.
Machine language gave birth to the assembler.
The assembler gave birth to ten thousand languages.
Each language has its purpose, however humble.
Each language expresses the Yin and Yang of software.
Each language has its place within the Tao.
Beauty exists because we give a name to C#.
Bad exists because we give a name to COBOL.
|
|
|
|
|
Thanks for the replies guys...I'll probably end up going with the Registry iteration route. Kinda fits what I was thinking before I came up with the Add Reference idea.
Jeremy Kimball
I have traveled the gutters, lo these many days, with no signs of life. Well met.
-brianwelsch
|
|
|
|
|
As theRealCondor said, you go to the registry. Enumerate the keys under HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders. If you want, you could also have your dialog enumerate the GAC using fusion.dll. Read Undocumented Fusion[^] here on CodeProject for more details.
And, no, this really doesn't belong in the IDE forum, since you're only talking about programming something like the IDE has. Just my opinion, anyway.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
What exactly is the point of enumerating GAC assemblies? It's not like VS will let you add references to assemblies that are sitting in the GAC.
|
|
|
|
|
See ExecuteCommand Method (DTE Object). You'll want "Project.AddReference", I think...
DTE.ExecuteCommand("Project.AddReference", "");
Try it in the immediate window by typing "Project.AddReference" It'll bring up your requested dialog.
Ian Mariano - Bliki | Blog
"We are all wave equations in the information matrix of the universe" - me
|
|
|
|
|
Nifty...never screwed much with the Command Window. Nice to know what it can do.
Jeremy Kimball
I have traveled the gutters, lo these many days, with no signs of life. Well met.
-brianwelsch
|
|
|
|
|
The following doesn't seem to work...
foreach (Form f in this.MdiChildren)
{
f.Close();
}
I recieve the following error "Specified cast is not valid."
Am I missing something.
Sweet
|
|
|
|
|
You can't change a collection while enumerating it. Calling Close ultimately will change the collection. Instead, use:
for (int i=0; i<MdiChildren; i++)
{
Form f = (Form)MdiChildren[i];
f.Close();
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Right now comes the this. I've got 3 mdichildren forms and when I click the button to close all the forms, only 2 closes and 1 stays open until I click the button again. Is it because I did the following like u showed except I added .Length.
for (int i = 0; i < MdiChildren.Length; i++)
{
Form f = (Form)MdiChildren[i];
f.Close();
}
Sweet
|
|
|
|
|
Sorry - I made a mistake. You should either run through the array backward or make a copy of the array (and forgetting .Length was a typo - it's only sample code):
for (int i=MdiChildren.Length; i >= 0; i--)
{
Form f = MdiChildren[i];
f.Close();
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thanks it works. All I had to do is add the - 1
for (int i = MdiChildren.Length - 1; i >= 0; i--)
{
Form f = MdiChildren[i];
f.Close();
}
The Author of the book I'm reading should revise his book.
My brain is 2 small for all the knowledge that I need.
|
|
|
|
|
You were real close, here is my CloseAllChildren process for my MDIParent:
private void CloseAllChildren()
{
System.Windows.Forms.Form[] myChildren = this.MdiChildren;
foreach (Form child in myChildren)
{
child.Close();
}
return;
}
______________________________
The Tao gave birth to machine language.
Machine language gave birth to the assembler.
The assembler gave birth to ten thousand languages.
Each language has its purpose, however humble.
Each language expresses the Yin and Yang of software.
Each language has its place within the Tao.
Beauty exists because we give a name to C#.
Bad exists because we give a name to COBOL.
|
|
|
|
|
Hi everyone.
Could anyone give me a few pointers on how to write a writepixel method with directx for .NET please?
Thanks.
|
|
|
|