|
Hallo ich_bins,
i guess you mean the System.Windows.Forms.CheckBox , right ?
what i'm looking for is how to use installer conditions to fire custom actions in a msi setup project.
Thanks for your answer
.:[Greetz from Jerry Maguire]:.
|
|
|
|
|
In my application, I want the user to be able to customize the path to some files.
So I use a OpenFileDialog, and get the path of the new file, and I can open the file.
I'd like to store the path for the next use of the program, but I want to store it relatively to my executable.
But the OpenFileDialog return the absolute path.
So if I have:
e:\Programs\MyProgram\Bin\MyExecutable.exe
and the user select
e:\Programs\MyPrograms\Graphics\MyFile.gif
How can I easily find that the path to store is
..\Graphics\MyFile.gif?
|
|
|
|
|
In shlwapi.dll there is a method called PathRelativePathTo .
α.γεεκ Fortune passes everywhere. Duke Leto Atreides
|
|
|
|
|
Hello,
Is the format used by BinaryWriter and BinaryReader portable for standard data types like string and uint?
For example, suppose that one uses a BinaryWriter on a machine of type X to write to a NetworkStream, and the other end of the stream is running on a machine of type Y and uses BinaryReader to read from the NetworkStream. Suppose also that both machines are using programs written in C# and being executed by .NET. Will the reader get what was written, regardless of whether X and Y are different types of machines (possibly having different endianness)?
(The BinaryWriter constructor allows one to specify an encoding. I would like to know whether the default encoding is portable in the way described above, and whether the other standard encodings are portable in this way.)
|
|
|
|
|
In answer to your primary question, BinaryReader will read streams created by BinaryWriter correctly.
Your question about endianness is meaningless at the present time because .NET only runs on Intel CPUs and hence you don't have to worry about it. Once Microsoft target .NET for other CPUs then, yes, the .NET Frameowrk team will have to worry about how the stream is created and used between different endian CPUs.
Cheers, Julian
Program Manager, C#
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
|
|
|
Julian,
Is there complete BinaryWriter/BinaryReader compatibility for all Microsoft .NET implementations and for all pairs of machines that Microsoft's .NET runs on? I tried to be explicit about this in the original post -- if the question is still not clear then I will try to make it clearer. I am looking for an explicitly-written answer that's more informative than, "Some BinaryReader objects can read what's written by some BinaryWriter objects."
The endianness question is meaningful at present because there are different vendors, e.g., Microsoft and Mono, but even information only about Microsoft-to-Microsoft communication would be helpful.
Also, it helps and is even necessary to have some idea of future capabilities. I do not want to release software only to find out in 3 months that a large class of users cannot connect to a server because BinaryWriter and BinaryReader are incompatible in some circumstances, e.g., .NET 2.0 (say) is using a format that is incompatible with .NET 1.0. In fact if this were to happen, then using BinaryWriter/BinaryReader would be painful for many client/server situations because there would be two different classes of users, e.g., many Windows XP users with .NET 1.0 and some other users who are using .NET 2.0. It would become necessary to somehow know in advance which version of the protocol to use, and to be able to use either version within a single assembly (the server).
Andrew
|
|
|
|
|
Andrew
I'm sorry, I see I wasn't being explicit enough <g>. Any stream written with any existing BinaryWriter can be read by any existing BinaryReader. I can even confirm that fact with Whidbey's BinaryReader and Writer (that is, with .NET Framework 2.0). If it didn't then it's a bug. (So the 3D matrix of 1.0, 1.1, 2.0 frameworks, for the two layers of writers and reader combinations has ticks in every cell).
That's the statement about Microsoft's .NET Framework. I know nothing about the Mono project (apart from what it is, of course). I have no idea whether their BinaryReader would always work with a stream createed with BinaryWriter. Similarly I don't know if a stream written by Mono's BinaryWriter would be readable with MS's BinaryReader. However, I would *guess* that the Mono people would have taken endianness into account when they were writing their reader and writer.
Now, as to the future (beyond Whidbey): it would make sense for the .NET Framework team to make sure that BinaryReader and BinaryWriter can continue to work as before. Why? Because the ResourceManager uses BinaryReaders and Writers internally. And that would be bad if Visual Studio .NET X (for X>2) couldn't read resource files from existing projects.
Also, the format used by BinaryWriter is very, very simple and easily reverse engineered. There's no wierdo enums or class names being put in there or stuff like that. An int is written out as 4 bytes, a double as 8, etc, etc.
So, although neither I nor anyone else can really tell you what would happen five years down the road, I wouldn't worry about it.
Cheers, Julian
Program Manager, C#
This posting is provided "AS IS" with no warranties, and confers no rights.
|
|
|
|
|
Thanks Julian. That is just what I wanted to know.
Andrew
|
|
|
|
|
Note also that the version of the assembly must be identical on both ends.
|
|
|
|
|
Arun Bhalla wrote:
Note also that the version of the assembly must be identical on both ends.
Do you mean that the version of .NET that the assembly is using on both sides must be identical? Or do you mean that the version of the assemblies itself must be identical? If the latter this makes no sense because the assembly using BinaryWriter might be different from the assembly using the BinaryReader, e.g., there is a client/server relationship.
|
|
|
|
|
Ooops, sorry I was thinking of BinaryFormatter & Serialization.
|
|
|
|
|
|
what do you think from the following books you most recommend for C# newbie?
Programming C# 3rd Edition by O'REILLY
C# and The .NET Platform, Second Edition
Wrox: Professional C# 2nd Edition
Sybex, Mastering Visual C#.net
MS press c#.net core reference
thnks, i just want to hear your opinion before buying!
nevhile.net
|
|
|
|
|
None of 'em. Go buy Inside C# 2nd edition by Tom Archer. That's the best book for learning C#...ever.
Hawaian shirts and shorts work too in Summer.
People assume you're either a complete nut (in which case not a worthy target) or so damn good you don't need to worry about camouflage...
-Anna-Jayne Metcalfe on Paintballing
|
|
|
|
|
David Stone wrote:
That's the best book for learning C#...ever
Agreed!
James
"then when you go to bed...wait, you dont do that do you....ok....when you plug into the 'hive mind' to charge yourself, ill hack into your head"
Nnamdi Onyeyiri over MSN
|
|
|
|
|
I like "C# Essentials" by O'Reilly press, "Developing Applications with Visual Studio .NET" by Grimes, and Gunnerson's C# book to some extent.
For Windows Forms I like ".NET Windows Forms in a Nutshell" from O'Reilly, and Petzold's "Programming Windows with C#". Windows Forms is so vast that while both of these books are big, neither comes close to covering the whole thing.
I did not like Archer's book at all.
|
|
|
|
|
A s h wrote:
I did not like Archer's book at all.
Blasphemy!!!
Just kidding , different people have different styles of learning. Tom's style of teaching may not be the best for everybody. I recommend going to your local Borders or Barnes & Noble and skimming the book to see if it's right for you.
Hawaian shirts and shorts work too in Summer.
People assume you're either a complete nut (in which case not a worthy target) or so damn good you don't need to worry about camouflage...
-Anna-Jayne Metcalfe on Paintballing
|
|
|
|
|
whatever you do, avoid Windows Forms Programming with C# by Erik Brown
Its one of those books where every example builds on the previous example's code. Horrible, horrible idea. It's like the opposite of the perl cookbook.
"Outside of a dog, a book is Man’s best friend. And inside of a dog, it’s too dark to read."
-Groucho Marx
|
|
|
|
|
Hi all!
I am trying to encrypt data with C# and decrypt the same data using VC++ 6, both using a password. I believe that I am very close on this one but am currently stuck and am receiving error 2148073477 on the VC++ CryptDecrypt() call. My keys generated by C# and VC++ are the same, so that seems to be okay.
My C# code is as follows:
// C# Begin *********************************
string s = "Hello";
RC2CryptoServiceProvider sp;
MemoryStream ms;
byte[] toEncrypt;
byte[] fromEncrypt;
byte[] IV = new byte[8];
byte[] key;
sp = new RC2CryptoServiceProvider();
sp.Mode = CipherMode.CBC;
sp.KeySize = 40;
sp.EffectiveKeySize = 40;
ms = new MemoryStream();
// Create the key
PasswordDeriveBytes pdb = new PasswordDeriveBytes( "ABCD-1234-XXXX-0000", IV );
key = pdb.CryptDeriveKey( "RC2", "MD5", 40, IV );
sp.Key = key;
// Create the crypto stream
CryptoStream cs = new CryptoStream( ms, sp.CreateEncryptor(), CryptoStreamMode.Write );
// Encrypt the data
toEncrypt = Encoding.UTF8.GetBytes( s );
cs.Write( toEncrypt, 0, toEncrypt.Length );
cs.FlushFinalBlock();
ms.Position = 0;
fromEncrypt = new byte[ms.Length];
ms.Read( fromEncrypt, 0, (int)ms.Length );
// Cleanup
cs.Close();
ms.Close();
// C# End *********************************
My VC is as follows:
The VC code contains a byte array that I populate after running the C# code and stepping through.
It contains a call to CryptEncrypt() and CryptDecrypt() to prove that encryption is working with the generated key.
I also exported the key to ensure that it was identical to the C# key.
// VC Begin *********************************
HCRYPTPROV hCryptProv;
HCRYPTKEY hKey;
HCRYPTHASH hHash;
CHAR szPassword[] = "ABCD-1234-XXXX-0000";
CHAR szMessage[512] = "";
DWORD dwLength;
BOOL b;
BYTE* pbKeyBlob;
BYTE bTest[] = {0x1e, 0x03, 0x91, 0xbe, 0xef, 0x2b, 0xdf, 0x91};
strcpy( szMessage, "Hello" );
b = CryptAcquireContext( &hCryptProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, 0);
b = CryptCreateHash( hCryptProv, CALG_MD5, 0, 0, &hHash);
dwLength = strlen( szPassword );
b = CryptHashData( hHash, (BYTE*)szPassword, dwLength, 0);
b = CryptDeriveKey( hCryptProv, CALG_RC2, hHash, CRYPT_EXPORTABLE, &hKey);
dwLength = strlen( szMessage );
b = CryptEncrypt( hKey, 0, TRUE, 0, (BYTE*)szMessage, &dwLength, 512 );
b = CryptDecrypt( hKey, 0, TRUE, 0, (BYTE*)szMessage, &dwLength );
// The call that FAILS!
dwLength = 8;
b = CryptDecrypt( hKey, 0, TRUE, 0, bTest, &dwLength );
DWORD dw = GetLastError();
b = CryptExportKey( hKey, NULL, PLAINTEXTKEYBLOB, 0, NULL, &dwLength);
pbKeyBlob = (BYTE*)malloc(dwLength);
b = CryptExportKey( hKey, NULL, PLAINTEXTKEYBLOB, 0, pbKeyBlob, &dwLength);
free( pbKeyBlob );
b = CryptDestroyHash( hHash );
b = CryptDestroyKey( hKey );
b = CryptReleaseContext( hCryptProv, 0 );
// VC End *********************************
Is there something I'm missing?
Thanks
Cory Baker
|
|
|
|
|
I have an application that uses a simple Webservice on my locaolhost, I have moved the webservice to the production
server and I have re-reference my application to the new server
location. I may need to move this webservice soon and would like to know if I can code the application so I can change
the server my webservice is located without having to rebuild the application.
Thanks for your help
=================================
When I was in school, all I wanted was to get out into the real world.
Now that I'm in the real world, all I want is to go back to school.
|
|
|
|
|
Hi there,
I had some questions. I was learning c# and i saw this code:
static int amountopen = (0 - 500);
Hmm.. wonder, does it means we are setting a scope from 0 to 500 for integer amountopen?
This is first time i seen.
Oh ya, another added question. How does virtual keyword comes in handy in c# programming? Any good samples and explanations on that please.
Thanks.
Regards,
Chua Wen Ching :p
|
|
|
|
|
chuawenching wrote:
static int amountopen = (0 - 500);
Hmm.. wonder, does it means we are setting a scope from 0 to 500 for integer amountopen?
Nope, it just means make amountopen = to the result of subtracting 500 from 0.
chuawenching wrote:
How does virtual keyword comes in handy in c# programming? Any good samples and explanations on that please.
Here's a link that should help: http://www.jaggersoft.com/csharp_course/16_Inheritance_files/frame.htm[^] Click on "virtual Methods".
Regards,
Alvaro
Hey! It compiles! Ship it.
|
|
|
|
|
Thanks for the reply.
amountopen = to the result of subtracting 500 from 0.
--> subtract 500 from 0 means amountopen = -500 ???
So why can't the coder code this:
amountopen = -500
rather than
amountopen = (0-500)
What is his purpose? Thanks for the virtual link?
Is that the best site to learn oop way in c#? Must the slides does not show a complete source code. I want to learn while coding? Thanks.
Regards,
Chua Wen Ching :p
|
|
|
|
|
chuawenching wrote:
So why can't the coder code this:
amountopen = -500
rather than
amountopen = (0-500)
I don't know. If you can ask him/her, hopefully you can find out. There's no obvious answer, except perhaps the developer didn't know he/she could just write -500.
chuawenching wrote:
Is that the best site to learn oop way in c#? Must the slides does not show a complete source code. I want to learn while coding?
It's the best one I could come up with on short notice. I'm sure there are others out there that do a better job. Here's one from MSDN which may serve you better: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/csref/html/vcoriCProgrammersReference.asp[^]. Depending on how much previous experience you have with other languages, a book on C# programming may also help.
Good luck!
Alvaro
Hey! It compiles! Ship it.
|
|
|
|
|
Thanks
But i feel that msdn tutorials a bit complicated. So many links here and there. And at the end i learn nothing.
Regards,
Chua Wen Ching :p
|
|
|
|
|