|
The word "big" is generally relative. I believe there are several projects in codeproject which certify enough to be called maintainable, scalable etc. Never trust examples in books because they are generally meant for beginners. Instead why don't you go thru cp articles?
|
|
|
|
|
Hi all,
I want to check the email address against SMTP domain verification. I have used the following code.but it's not getting the response from the domains gmail.com,yahoo.com,google .com. so it shows that domain is not valid.
try
{
string[] host = (textBox1.Text.Trim().Split('@'));
string hostname = host[1];
IPHostEntry IPhst = Dns.GetHostByName (hostname);
IPEndPoint endPt = new IPEndPoint(IPhst.AddressList[0], 25);
Socket s = new Socket(endPt.AddressFamily,
SocketType.Stream, ProtocolType.Tcp);
s.Connect(endPt);
MessageBox.Show("Exists");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString ());
}
Can anyone tell me the solution for this.
Thanks in advance
swethasri
|
|
|
|
|
What kind of error are you getting.
Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
Most of this sig is for Google, not ego.
|
|
|
|
|
The following is the message displayed when tried to check gamil.com,yahoo.com etc.,
"A connection attempt failed because the connected party did not respond propertly after a period of time or established connection failed because connected host failed to respond".
|
|
|
|
|
I think that those SMTP servers only accept connections from known mail servers.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
I have some legacy VB6 code which im converting over to C#, and it seems that strings were implemented very differently in old VB than in the Framework. I get vastly different results from the ported code than I do from an app written in VB and I was wondering if anyone could put their finger on the reason why?
here is the old VB code (pstrResponse is the input to the method):
For i = 1 To Len(pstrResponse)
j = Asc(Mid(pstrResponse, i, 1))
If j > 127 Then
j = j - 128
Mid(pstrResponse, i, 1) = Chr(j)
End If
Next i
Here is my ported C# (input is the input):
char[] charArray = input.ToCharArray();
int bit;
for (int i = 0; i < charArray.Length; i++)
{
bit = (int)charArray[i];
if (bit > 127)
{
bit -= 128;
charArray[i] = (char)bit;
}
}
return new string(charArray);
As you can see, simple code & easy to port but very different results. Any ideas people?
|
|
|
|
|
.NET stores string in Unicode not Ascii and a char is 2 bytes not one I think? Which would mean the -=128 could have a different value in an integer data type?
I don't really know I am just speculating.
Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
Most of this sig is for Google, not ego.
|
|
|
|
|
Ennis Ray Lynch, Jr. wrote: Which would mean the -=128 could have a different value in an integer data type
Any idea what it could be?
|
|
|
|
|
Maybe, Asc(Mid(pstrResponse, i, 1)) != (int)characters[i];
Try using the System.Text.AsciiEncoder to change the string by ascii bytes only first and see what happens?
Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
Most of this sig is for Google, not ego.
|
|
|
|
|
Thanks for the pointers. With your help ive managed to solve the problem, but strangly enough I thought id need to convert my input to ASCII using ASCIIEncoding.GetBytes . In actual fact I had to use DefaultEncoding.GetBytes to get the result I was expecting.
here's the working code now:
byte[] byteArray = Encoding.Default.GetBytes(input);
StringBuilder sb = new StringBuilder(byteArray.Length);
byte bit;
for (int i = 0; i < byteArray.Length; i++)
{
bit = (byte)byteArray[i];
if (bit > 127)
{
bit -= 128;
}
sb.Append((char)bit);
}
return sb.ToString();
Thanks again for your help.
|
|
|
|
|
Apparently this still exists in the Microsoft.VisualBasic namespace.
This is the Asc function after being run through reflector - it seems to work OK.
public static int Asc(char theChar)
{
int num;
int num2 = Convert.ToInt32(theChar);
if (num2 < 0x80)
{
return num2;
}
try
{
byte[] buffer;
Encoding fileIOEncoding = Encoding.Default;
char[] chars = new char[] { theChar };
if (fileIOEncoding.IsSingleByte)
{
buffer = new byte[1];
int num3 = fileIOEncoding.GetBytes(chars, 0, 1, buffer,
0);
return buffer[0];
}
buffer = new byte[2];
if (fileIOEncoding.GetBytes(chars, 0, 1, buffer, 0) == 1)
{
return buffer[0];
}
if (BitConverter.IsLittleEndian)
{
byte num4 = buffer[0];
buffer[0] = buffer[1];
buffer[1] = num4;
}
num = BitConverter.ToInt16(buffer, 0);
}
catch (Exception exception)
{
throw exception;
}
return num;
}
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
Yeah, I saw that but I was attempting to avoid the use of nasty VB namespaces
|
|
|
|
|
J4amieC wrote: nasty VB
If you use the code above you don't need to - it's just that function converted to C#
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
|
|
|
|
|
J4amieC wrote: As you can see, simple code & easy to port but very different results
No, I can't see; what are the results?
Provided you don't care about Unicode, you could use:
System.Text.Encoding.ASCII.GetBytes()
and
System.Text.Encoding.ASCII.GetString()
You could also access the characters in an unsafe context much like your VB code. Something like:
private unsafe static void
ASCIIize
(
string Subject
)
{
fixed ( char* subject = Subject )
{
int* length = (int*) subject - 1 ;
int index = 0 ;
while ( index < *length )
{
*(subject + index) &= (char) 0x7F ;
index++ ;
}
}
return ;
}
(Though I haven't tested this with the problematic characters.)
|
|
|
|
|
PIEBALDconsult wrote: No, I can't see; what are the results?
The results are cryptic, horrible and mostly non-printable characters which is why I didnt post them. I meant the code was easy enough to port on the face of it.
|
|
|
|
|
Hi.
I have a question on how to create myself a completly new button and use it anywhere i want in my project.
I want to have a button with three pictures. One on click (green as currently selected) one on unavaliable ( red ) and one on avaliable (blue).
For better understanding - i have a miniproject on creating an example of cinema tickets sale. A user selectes in a cinema hall (dont know how its called) a few displayed seats, which are marked blue (as avaliable). and when the operator clicks on it - it turns green and if these tickets are bought the buttons goes red and is unavaliable for further clicking...
i hope its ok explained.
so, i was saying... i could create a few buttons on hand - drag a picturebox. on click - the picture would change its picture to green one and if it was bought - another red picture would be writen. So i want to create a usercontrol with these things.
Is it even possible? or do u have any other solutions for me?
example : Link to a picture[^]
and the number of seats would be generated by user ( 3x4 or 5x1 or etc...)
Força Barça!
modified on Tuesday, November 4, 2008 8:47 AM
|
|
|
|
|
Personally, I would use GDI to draw the seats on the form, and just color/colour them accordingly from the availability and events as you mentioned above.
However, if you prefer to use buttons, you can. You need not create a new button, you can merely change the background color/colour of each button to which ever you require, and then create an event that iterates through each button on the page, stating that if they are clicked and their color/colour is X, set it to Y.
If you insist on a user control, you merely need to create a simple 25x25 pixel user control (or whatever size you want each seat), create an enum value for each state (reserved, un-reserved, etc), and then create a public property to set the "state" of that seat. When the value is changed, you also change the background color/colour of the user control to which ever you require.
There are many methods to achieve what you are after.
|
|
|
|
|
Great. Thanks
But i have another question and i dont want to open a new topic :
How to create a specific number of objects X x Y?
6 buttons in a row in 3 columns (6x3)?
And how to add a diferent action on click for different button?
Im sorry for so many questions, as i dont have so much knowladge in C# and i just started to learn properly and whats the best way to learn than through examples
Thanks again,
Matjaž
Força Barça!
|
|
|
|
|
Unfortunately I'm in a training course at the moment, so I have limited resources to my disposal. If nobody else replies by the time I get home this evening, I will send you some sample code.
[EDIT]
DaveyM69 seems to have beaten me to it.
|
|
|
|
|
you don't really need a button - just derive from Control and have an Availability property, override OnClick to set the availability and OnPaint to do the painting.
A very rough mockup to get you started:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace MyControls
{
public enum Availability
{
Available,
Unavailable,
Selected,
}
public class TriColorButton : Control
{
public event EventHandler AvailabilityChanged;
private Availability availability;
public Availability Availability
{
get { return availability; }
set
{
if (availability != value)
{
availability = value;
OnAvailabilityChanged(EventArgs.Empty);
}
}
}
protected virtual void OnAvailabilityChanged(EventArgs e)
{
Invalidate();
EventHandler handler = AvailabilityChanged;
if (handler != null)
AvailabilityChanged(this, e);
}
protected override void OnClick(EventArgs e)
{
if (availability == Availability.Available)
Availability = Availability.Selected;
else if (availability == Availability.Selected)
Availability = Availability.Available;
base.OnClick(e);
}
protected override void OnPaint(PaintEventArgs e)
{
switch (availability)
{
case Availability.Unavailable:
e.Graphics.FillRectangle(Brushes.Red, e.ClipRectangle);
break;
case Availability.Selected:
e.Graphics.FillRectangle(Brushes.Green, e.ClipRectangle);
break;
default:
e.Graphics.FillRectangle(Brushes.Blue, e.ClipRectangle);
break;
}
base.OnPaint(e);
}
}
}
[edit]forgot the event keyword! [/edit]
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Visual Basic is not used by normal people so we're not covering it here. (Uncyclopedia)
modified on Tuesday, November 4, 2008 9:59 AM
|
|
|
|
|
I tried browsing for a simplistic threading tutorial / article with no avail, a lot went into to much detail t ha is a little to complex for me right now. All I want to do is launch a form in a seperate thread as my main form is laggy because of a bunch of loops that goes on in it.
Any ideas or suggestions as to what to read to get a basic grip of threading?
|
|
|
|
|
Are the loops used for creating or updating form controls, or just doing other data processing? If not for form controls, then could you put all that work in a separate thread? It might make your main form less "laggy".
Another idea might be to call
Application.DoEvents()
at the end of each loop iteration. I've seen some people prefer to avoid this method, but I've personally used it without much trouble. This should keep your form responsive.
Brandon
|
|
|
|
|
EliottA wrote: All I want to do is launch a form in a seperate thread
You cannot do this. All GUI, including other forms, must be launched on the app's main (GUI) thread. If you try to do this on another thread, it may work one time, but not another, and you'll get strange behaviors in the forms controls and rendering issues.
You put your work on other threads and Invoke functions on the forms to modify the controls for your threaded code. You cannot directly modify controls on threads other than the one that created the control.
|
|
|
|
|
So you're saying instead of attempting to load a form through a new thread, i should put my infinite loop which reprocesses data continuously in a seperate thread? (Take my loop out of the GUI thread?)
|
|
|
|
|