|
Hi,
almost all asynchronous devices including serial ports, timers, etc. use extra threads. All timers except one (Forms.Timer) tick on a separate thread, and are not suited for directly touching any Control. One either needs Control.InvokeRequired + Control.Invoke, or use Forms.Timer
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, June 10, 2011 11:31 AM
|
|
|
|
|
Hey everybody... I got a question for advanced C# programmers. I've been playing around with type constraints for template classes, and I got stuck.
I used [ and ] instead of < and > for template classes because I wanted to have HTML code for you to see better what code I got.
In the C# 3.0 specification (and I will quote directly from Microsoft's document), it's said that this will work:
class B[T] where T: IEnumerable {...}
class D[T]: B[T] where T: IEnumerable {...}
class E[T]: B[List[T]] {...}
Because (so they say):
"Since type parameters are not inherited, constraints are never inherited either. In the example below, D needs to specify the constraint on its type parameter T so that T satisfies the constraint imposed by the base class B[T]. In contrast, class E need not specify a constraint, because List[T] implements IEnumerable for any T."
Now... I put this pre into VS 2008 and the compiler won't work. My pre:
class B[T] where T : IEnumerable[T] { }
class D[T] : B[T] where T : IEnumerable[T] { }
class E[T] : B[List[T]] { }
Error:
"Error 1 The type 'System.Collections.Generic.List[T]' cannot be used as type parameter 'T' in the generic type or method 'FunFollAdmin.frmMain.B[T]'. There is no implicit reference conversion from 'System.Collections.Generic.List[T]' to 'System.Collections.Generic.IEnumerable[System.Collections.Generic.List[T]]'. D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 46 10 FunFollAdmin"
Even more......... not even this works:
B[test] test = new B[test]();
Error:
"Error 1 The type 'FunFollAdmin.frmMain.test' cannot be used as type parameter 'T' in the generic type or method 'FunFollAdmin.frmMain.B[T]'. There is no implicit reference conversion from 'FunFollAdmin.frmMain.test' to 'System.Collections.Generic.IEnumerable[FunFollAdmin.frmMain.test]'. D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 216 9 FunFollAdmin
Error 2 The type 'FunFollAdmin.frmMain.test' cannot be used as type parameter 'T' in the generic type or method 'FunFollAdmin.frmMain.B[T]'. There is no implicit reference conversion from 'FunFollAdmin.frmMain.test' to 'System.Collections.Generic.IEnumerable[FunFollAdmin.frmMain.test]'. D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 216 28 FunFollAdmin"
Even though I have implemented the class test correctly:
class test : IEnumerable[int]
{
public test () { }
#region IEnumerable[int] Members
public IEnumerator[int] GetEnumerator ()
{
throw new NotImplementedException();
}
#endregion
#region IEnumerable Members
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()
{
throw new NotImplementedException();
}
#endregion
}
|
|
|
|
|
The compiler is right. You wrote where T : IEnumerable[T] : this means that T must be an enumeration of itself!
Note that the MSDN sample uses the non-generic version of IEnumerable (where T : IEnumerable ), meaning that T can be any enumeration.
modified on Friday, February 6, 2009 10:10 AM
|
|
|
|
|
Note that the MSDN sample uses the non-generic version of IEnumerable (where T : IEnumerable[T]), meaning that T can be any enumeration.
You mean where T : IEnumerable
Ok but how do you declare it so? Because if I declare it so, it says
Error 1 Using the generic type 'System.Collections.Generic.IEnumerable<t>' requires '1' type arguments D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 48 33 FunFollAdmin</t>
I used the code directly from MSDN
interface IMyInterface<br />
{<br />
}<br />
<br />
class Dictionary[TKey, TVal]<br />
where TKey : IComparable, IEnumerable<br />
where TVal : IMyInterface<br />
{<br />
public void Add (TKey key, TVal val)<br />
{<br />
}<br />
}
Same error as above!!! I don't get it! Oh boy......... ::- (
Error 1 Using the generic type 'System.Collections.Generic.IEnumerable<t>' requires '1' type arguments D:\Order\A1.FunFoll Administrator [FFA]\2009-01-25\FunFollAdmin\frmMain.cs 48 33 FunFollAdmin</t>
|
|
|
|
|
You mean <code>where T : IEnumerable</code> Yes, I mistyped. Corrected now.
You must add using System.Collections in order to use the non-generic version of IEnumerable (or you use its full name: where T : System.Collections.IEnumerable ).
|
|
|
|
|
Ah, damn. I had using System.Collections.Generic; but not using System.Collections;
Thank you Mirko! ::- )
That fixed it.
|
|
|
|
|
You welcome
|
|
|
|
|
hi friends
i want to implement a logic .. string input will be given...it should merge only single characters..pls help
eg.. behind r m d street
o/p expected is behind rmd street
any body help me out with apt logic......
the quieter u become more u hear
|
|
|
|
|
how bout a function along the lines of the following
string MergeFunction(string value)
{
result = value;
for(int i = 0; i < value.length; i++)
{
if(value[i-1] == ' ' && value[i+1] == ' ')
{
result = result.remove(i+1, 1);
}
}
return result;
}
dont forget you also need to include some check for handling if i == 0; or i == value.length -1;
because it will throw a index out of bounds error as it is.
EDIT: oops you will need some sort of count for the number of spaces currently remove so you can subtract it from the value when using result.remove
result.remove(i+1-count, 1);
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
can u give me the entire code with my given input.... pls...
it shows out of bound error even i do as u said...
pls help me out
the quieter u become more u hear
|
|
|
|
|
Ok as its not too much code, though im not testing so let me know any errors
string MergeFunction(string s)
{
string result = s;
int count 0;
for(int i = 0; i < s.Length-1; i++)
{
if(i == 0)
{
if(s[i+1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
else
{
if(s[i-1] == ' ' && s[i+1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
}
return result;
}
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
using System;
using System.Collections;
class chapter10
{
static void Main()
{
string result = "s y t y i";
int count= 0;
for(int i = 0; i < result.Length-1; i++)
{
if(i == 0)
{
if (result[i + 1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
else
{
if (result[i - 1] == ' ' && result[i + 1] == ' ')
{
result = result.Remove(i+1-count, 1);
count++;
}
}
}
Console.WriteLine( result);
}
}</summary></summary>
this is my modified code.... but it checks only first and second char....wat should i do now.... pls specify changes alone in bold letter...
thanks u very much for ur help
the quieter u become more u hear
|
|
|
|
|
lawrenceinba wrote: string result = "s y t y i";
Should be :-
string s = "s y t y i";//you need an original instance, not just the result instance
string result = s;
lawrenceinba wrote: if (result[i + 1] == ' ')//check if next char is a space
Should be :- s[i + 1] == ' '
lawrenceinba wrote: if (result[i - 1] == ' ' && result[i + 1] == ' ')//
Should be :- s[i - 1] == ' ' && s[i + 1] == ' '
but please make it a seperate function and call it from within your main, its much better practise i.e.
string result = MergeFunction("s y t y i");
My opinion is... If someone has already posted an answer, dont post the SAME answer
|
|
|
|
|
There's a one-liner for everyting.
text = Regex.Replace(text, @"\b([^ ]) (?=[^ ]\b)", "$1");
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
input= " s y t b/d y i yt"
according to ur code it give out sytb/d yi yt
only single characters should be joined what should i do now
if it has any delimiters it should not be joined... delimiters are (!#&*;/)
thanks
the quieter u become more u hear
|
|
|
|
|
Use a positive lookbehind to match a space of the beginning of the string followed by a non-space character, and look for a space or the end of the string instead of the word boundary in the lookahead.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
ya tat's wat im expecting but how to i do it using regex
for tat i should use for loop.. isn't it..
is there any way in regex
the quieter u become more u hear
|
|
|
|
|
lawrenceinba wrote: ya tat's wat im expecting
wy ar yu takin lik dis?
lawrenceinba wrote: but how to i do it using regex
for tat i should use for loop.. isn't it..
is there any way in regex
Yes, there is. If you do what I already explained, it looks like this:
text = Regex.Replace(text, @"(?<=^| )([^ ]) (?=[^ ](?: |$))", "$1");
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
oops......i'm very sorry... i thought you could understand.....here after i'll type fully...
thanks
the quieter u become more u hear
|
|
|
|
|
|
You have to define what you expect to happen, you change it all the time. You started off with merging single characters, and now you want to separate words by inserting extra spaces also...
For example, how should the delimiters work? Should a space be added after each delimiter, and should that happen all the time or only if there is a single character after it? Does it matter if that single character will be merged with another single character? If there is a single character before a delimiter, should a space be added, and should that happen only if there is another single character to merge it with?
Also, why do you expect the last character in your example to remain a single character eventhough there is another single character before it to merge it with?
Perhaps you should explain what it is that you are actually going to use it for, instead of making up abstract examples.
Regular expressions can be used to a lot of things, but guessing is not one of them...
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
if a delimter is before or after a single character it also should be merged together.. that's.....
other things i fixed ...
pls send me links regading regular expression symbols...
the quieter u become more u hear
|
|
|
|
|
kindly send me any good link to study about patterning Regex.... what's the meaning for each characters used in that.. so and so... only i need these informations...
general Regex functions and operations i know....
thanks
the quieter u become more u hear
|
|
|
|
|
Hi Expert,
i m new in C#
this is login form.but connection adapter having null value.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace ExampleOne
{
public partial class login : Form
{
public MySqlDataAdapter da;
public DataSet adset;
public string g_login;
public login()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
}
private void btnlogin_Click(object sender, EventArgs e)
{
string g_login = this.tbUsername.Text;
string g_password = this.tbpassword.Text;
string MyConString = "server=localhost;database=password;uid=root;password=asd";
MySqlConnection connection = new MySqlConnection(MyConString);
string Strsql = "select * from tablogin where ='"+g_login ;
try
{
connection.Open();
MySqlDataAdapter DA = new MySqlDataAdapter(Strsql, connection);
MySqlCommandBuilder cmdb = new MySqlCommandBuilder(da);
DA.Fill(adset, "tablogin");
DataColumn[] key = new DataColumn[1];
key[0] = adset.Tables["tablogin"].Columns["password"];
adset.Tables["tablogin"].PrimaryKey = key;
DataRow dr = adset.Tables["tablogin"].Rows.Find(g_password);
if ((g_login == dr["userid"].ToString()) && (g_password == dr["password"].ToString()))
{
MessageBox.Show("You are logged in!","welcome",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("You entered wrong Username or Password","Warning",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
}
}
catch (Exception ex)
{
Console.WriteLine("Error Conecting to database", "window information" + ex.Message.ToString(),
MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void Close_Click(object sender, EventArgs e)
{
DialogResult dr = MessageBox.Show("Are you sure to Exit ?","finish" ,MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (dr == DialogResult.Yes)
{
Application.Exit();
}
}
}
}
|
|
|
|
|
i've got a font wich is mentioned true type.when i tried to set this font to combobox i get the error saying this is not a true type font . how can i set this font to the cmbbox.do i have any solution .intead of going to some other font .
|
|
|
|