|
Hi,
How to create playlist and play using windows media player control.
Thankyou
YPKI
|
|
|
|
|
You can do this using classes and interface present under namespace WMPLib .
50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
|
|
|
|
|
Hi I have a problem as described below :
<pre>
object[] obj1={1,"hello"};
object[] obj2={1,"hello"};
if(obj1.Equals(obj2))
{
return true;
}
else
{
return false;
}
</pre>
According to me, it should return true.
But it is returning false (I know I am wrong).
But why?????
CC26
|
|
|
|
|
Equals method will return true only if both the objects refer to same memory location. Otherwise false. Here obj1 and obj2 are referring to two different memory locations. Hence you are getting return value as false.
50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
|
|
|
|
|
Thanks for the reply danish.
What if instead of Equal I did if(obj1==obj2)?
CC26
|
|
|
|
|
That would also give the same result.
50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
|
|
|
|
|
Try this:
<br />
if (obj1.Length != obj2.Length)<br />
{<br />
return false;<br />
}<br />
else<br />
{<br />
return true;<br />
for (int i=0; i < obj1.Length; i++)<br />
{<br />
if (obj1[i] != obj2[i])<br />
{<br />
return false;<br />
break;<br />
}<br />
}<br />
<br />
}
I Love T-SQL
"Don't torture yourself,let the life to do it for you."
If my post helps you kindly save my time by voting my post.
www.aktualiteti.com
|
|
|
|
|
Uh, that would return true for any case where obj1 and obj2 are the same length.
|
|
|
|
|
A little bit wrong, maybe it should look like this:
if (obj1.Length != obj2.Length)
{
return false;
}
else
{
for (int i=0; i < obj1.Length; i++)
{
if (!object.Equals(obj1[i], obj2[i]))
{
return false;
}
}
return true;
}
|
|
|
|
|
Yes,you are right,I just couldn't find a bit free time to modify my answer.
Thanks for correction.
I Love T-SQL
"Don't torture yourself,let the life to do it for you."
If my post helps you kindly save my time by voting my post.
www.aktualiteti.com
|
|
|
|
|
CrazyCoder26 wrote: But it is returning false (I know I am wrong).
Actually you comparing memory location thats why you it return false.
consider the case :-
When you create object, the memory is created in Heap and it's heap memory reference is stored in stack.
So object as such nothing but variable containing address location, so when you compare two object, they bound to differ on memory address, so the answer
"Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow Never mind - my own stupidity is the source of every "problem" - Mixture
cheers,
Alok Gupta
VC Forum Q&A :- I/ IV
Support CRY- Child Relief and You
|
|
|
|
|
Both == and Equals perform a reference comparison rather than value comparison.
Rewrite your code like this and find out what happens:
object[] obj1={1,"hello"};
object[] obj2=obj1;
|
|
|
|
|
If you are wanting to compare the contents of the arrays, then consider the following code:
public static bool CompareArrays<T>(T[] data1, T[] data2)
{
if ((data1 == null) && (data2 == null))
{
return true;
}
if ((data1 == null) || (data2 == null))
{
return false;
}
if (data1.Length != data2.Length)
{
return false;
}
for (int i = 0; i < data1.Length; i++)
{
if (!data1[i].Equals(data2[i]))
{
return false;
}
}
return true;
}
|
|
|
|
|
|
Better post this in General Database forum.
50-50-90 rule: Anytime I have a 50-50 chance of getting something right, there's a 90% probability I'll get it wrong...!!
|
|
|
|
|
Hi;
I'm trying to create a server whose client-handler gets a tcpclient-object and needs to read data.
My problem is: when using the networkstream.read(byte[], offset, length) method, you cant really tell when the client has stopped sending a block.
I tried using while(length == buffer.length) to check if the buffer has been completely filled, meaning there is still data on the stream, but that does not include the possibility that the client has send exactly the amount of bytes the buffer can hold. Then i tried using the DataAvailable-property of the stream, but how does this work when the clients for example sends two different objects, which both happen to have the same size as my buffer? I would read the first object but there would still be data available on the stream since the second object was send right after the first one.
Could someone please point me in the right direction for receiving a variable amount of data representing a custom class / structure over the internet?
MfG Frank
Edit:
Thank you Paulo Zemek for the hint.
On the client side, just serialize the object on the network-stream:
private void sendAction(GameEvent action)<br />
{<br />
BinaryFormatter formatter;<br />
<br />
formatter = new BinaryFormatter();<br />
formatter.Serialize(this.Server.GetStream(), action);<br />
}
The server side was a little bit tricky, as I first had to create a new binder for the formatter before deserializing:
using System;<br />
using System.Reflection;<br />
using System.Runtime.Serialization;<br />
<br />
public class Binder : SerializationBinder<br />
{<br />
public override Type BindToType(string assemblyName, string typeName)<br />
{<br />
return Type.GetType(typeName + ", " + Assembly.GetExecutingAssembly().FullName);<br />
}<br />
}
The deserialization can then be done quite easy:
private void handleClient(Object tcpclient)<br />
{<br />
GameEvent action;<br />
BinaryFormatter formatter;<br />
TcpClient client;<br />
<br />
formatter = new BinaryFormatter();<br />
formatter.Binder = new Binder();<br />
client = (TcpClient) tcpclient;<br />
<br />
while (client.Connected)<br />
{<br />
try<br />
{<br />
action = (GameEvent) formatter.Deserialize(client.GetStream());<br />
this.newAction(client, action);<br />
}<br />
catch (Exception)<br />
{<br />
<br />
}<br />
}<br />
this.Clients.Remove(client);<br />
}
Thank you again for the great help.
MfG Frank
|
|
|
|
|
A "block" (object that has been serialized) needs to be clearly defined so that when a client receives an array of bytes it is capable of determining where each block in that array begins and ends. For raw bytes streams the start and stop flags should be a byte (or a sequence of bytes) that can't naturally occur inside of the serialized object; that way there's no way to have "accidental" start and stops in the stream.
|
|
|
|
|
If in one side you do:
binaryFormatter.Serialize(connectionStream);
and in the other side you do:
binaryFormatter.Deserialize(connectionStream);
The BinaryFormatter itself will know when it finished receiving the object.
You can also:
Instead of serializing directly, serialize to a MemoryStream. Then, you first send the length of the serialized data (for example, as an WriteLine) and then the data. And, on the other side, you first receive the length of the data, and then creates a buffer and read it to the end. But I really think you don't need that.
|
|
|
|
|
I'm trying something similar to this:
http://msdn.microsoft.com/en-us/library/ms838165.aspx[^]
I used that code to handle de editing:
private void grdOrders_CurrentCellChanged(object sender,
System.EventArgs e)
{
if (!inUpdateMode)
{
if (inEditMode && !grdOrders.CurrentCell.Equals(editCell))
{
inUpdateMode = true;
grdOrders.Visible = false;
DataGridCell currentCell = grdOrders.CurrentCell;
grdOrders[editCell.RowNumber, editCell.ColumnNumber] =
txtEdit.Text;
grdOrders.CurrentCell = currentCell;
grdOrders.Visible = true;
inUpdateMode = false;
txtEdit.Visible = false;
inEditMode = false;
}
editCell = grdOrders.CurrentCell;
txtEdit.Text = (string)grdOrders[editCell.RowNumber,
editCell.ColumnNumber];
Rectangle cellPos = grdOrders.GetCellBounds(editCell.RowNumber,
editCell.ColumnNumber);
txtEdit.Left = cellPos.Left - 1;
txtEdit.Top = cellPos.Top + grdOrders.Top - 1;
txtEdit.Width = cellPos.Width + 2;
txtEdit.Height = cellPos.Height + 2;
txtEdit.Visible = true;
inEditMode = true;
}
}
But I'm having a problem. I dont know what to put on Form1 Design so I'm getting the error:
txtEdit does not exist on current context.
Can you please help me ?
|
|
|
|
|
From the page you referenced:
When a cell is tapped (both inEditMode and inUpdate mode is false), the current cell is saved (editCell). Then, the hidden TextBox (txtEdit) gets the current cell contents, is repositioned to the location of the current cell, and is made visible (over the current cell). When editing is complete and another cell is selected, the event code is disabled (inUpdateMode set to true) and the new cell is saved (currentCell) while the edited cell gets updated from the TextBox control. During the update the grid is not updated (Visible set to false), and when the update is complete the TextBox is hidden again.
If you want to do things the way they did, you need to create the hidden TextBox control named txtEdit on your form.
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
I need to display information from MS SQL table, and I need to have edit, insert and delete options.
What should I use? ListView? DataGrid..? Or another ?
|
|
|
|
|
You should use DataGrid. It has edit, insert and delete function itself.
|
|
|
|
|
hisen wrote: You should use DataGrid. It has edit, insert and delete function itself.
Thanks! Should I save information with SQL Server CE or XML ?
Can you please point me to information where I can learn to do those operations?
|
|
|
|
|
I think you needn't. But it depend on your project specfic request.
|
|
|
|
|