|
Hello
How did you display your CSV file to view the square char?? Using the notepad maybe?
James19841984 wrote: The problem is I don't know how to remove the square character because it is not a conventional ASCII character.
AFAIK it should have a code no matter what!! Try reading a known file char by char until you reach this char's position, then display its code in a messagebox or something.
Another thing, open a CSV file with an editor -eg notepad-, copy the square char -if you know that ALL squares are the same char. Sometimes the notepade jst display a square for several chars that it doesn't understand. When you copy the char, paste it into your code -ie. hardcode it-
Also use:
char Sq;
While(MyString.IndexOf(Sq) != -1)
MyString.Remove(MyString.IndexOf(Sq), 1);
Regards
|
|
|
|
|
Hi,
i also faced same problem some days back.
but i found the ans.
you can use '\r\n' for that newline character.
here is the example
string strTemp="Store Your String Here!";
strTemp.Replace("\r\n","");
hope this works.
Nitin...
|
|
|
|
|
Thanks for the replys.
I have tried "\n", environment.newline etc but none of them seem to work. The reason for this I believe is because C# doesn't recognise the character as a newline, but simply a character in the shape of a square.
When I copy and paste the symbol into a .net environment it just pastes a newline (ie, like it would I key return). The symbol will have a character code, but I can't seem to find out what it is. I believe if I have that I can remove these characters.
Any other ideas or knowledge about the character code would be much appreciated.
Regards
James
|
|
|
|
|
James19841984 wrote: The reason for this I believe is because C# doesn't recognise the character as a newline, but simply a character in the shape of a square.
C# recognises no such thing. It will be the text renerizer that displays the square. Usually a square is rendered in place of a character that has no shape defined for the font used.
C# recognises characters based solely on their code.
James19841984 wrote: When I copy and paste the symbol into a .net environment it just pastes a newline (ie, like it would I key return).
Perhaps the renderize is being forced to render a newline.
|
|
|
|
|
Hello
There is another approach, yet I don't prefer it. Try to exclude any character outside the range of the ascii code of letters, digits, and any other symbol that you allow. If the character is outside that range delete it from your CSV string. This way you'd make sure only the things you want will survive.
Another approach. Read the file using HEX editor. Find the value of the byte(s) representing the character that is bugging you -or your program -. Anyway. When you find the byte(s) value, read your file as an array of bytes and remove the "square" chars by their byte values.
I don't think there are more approaches. If this doesn't work, call NASA
Regards
|
|
|
|
|
Hey,
I'm writing a class using sockets. I am sending using the main thread and listening with a worker thread. When a message is recieved by the worker an event is raised. I would like these events to be raised on the main thread. The only solution I can come up with is to use the invoke method of a form, but as I am not using any forms I was wondering if there is another method I could use?
Any suggestions?
Many Thanks
Tom
|
|
|
|
|
Hello
theonewithtom wrote: I would like these events to be raised on the main thread
You stil can do something like that, but why?!! Why not using Asynchronous sockets?
Search MSDN for BeginAccept() method
Regards
|
|
|
|
|
Thanks, I've been having a bit of a problem with the async read method, so is it possible to do it without using this?
Many Thanks
Tom
|
|
|
|
|
Hello
Of course you can using a single thread. Actually what happens behind the scene is that the asynchronous call makes an anonymous worker thread for you that will carry the action. When that thead receives anything it will call the Callback method that you will provide as a delegate.
Take a look t this code, copied from MSDN:
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);
Socket s = new Socket(lep.Address.AddressFamily,
SocketType.Stream,
ProtocolType.Tcp);
try{
s.Bind(lep);
s.Listen(1000);
while(true){
allDone.Reset();
Console.WriteLine("Waiting for a connection...");
s.BeginAccept(new AsyncCallback(Async_Send_Receive.Listen_Callback), s);
allDone.WaitOne();
}
}
catch (Exception e){
Console.WriteLine(e.ToString());
}
All you have to do is to provide the callback method.
Regards
-- modified at 16:16 Sunday 20th August, 2006
Sorry, I just noticed you said "async" not "sync". What's exactly your problem with the above approach??
Regards
|
|
|
|
|
Maybe my question is simpler than I first thought
> When that thead receives anything it will call the Callback method that you will provide as a delegate.
Do you mean it is possible to call a delegate from a worker thread that will execute on the main thread?
Many Thanks
Tom
|
|
|
|
|
Hello
theonewithtom wrote: call a delegate from a worker thread that will execute on the main thread?
No! You don't bother yourself with multithreading. You just make a method to handle the data -called callback method- which will be excuted on the main thread. Once you want to listen call the BeginAccept() or BeginReceive -accroding to how you want to handle your sockets-, and all the listening and reading time is done on another thread invisible to you. You don't make any threads. It will be made for you and you can't access it. Everything you write will be excuted on the main thread -which if you don't handle properly may make your UI freezes-.
Regards
|
|
|
|
|
Okay, I'll go through why I think I need multithreading. My listener code is below:
<br />
private void run() {<br />
<br />
NetworkStream ns = new NetworkStream(clientSocket);<br />
BinaryFormatter bf = new BinaryFormatter();<br />
<br />
while (true) {<br />
<br />
Message m = bf.Deserialize(ns);<br />
<br />
messageRecieved(this, m);<br />
}<br />
<br />
}<br />
As far as I can tell, it is not possible to do the deserialize and use the async read methods.
Any thoughts?
Many Thanks
Tom
|
|
|
|
|
Hello
Well if the asynchronous method troubles you and you want to multithread -The way I like BTW-. Then you should use Invoke() . Have a look
delegate void MessageReceivedDel(Message m);
private void run() {
NetworkStream ns = new NetworkStream(clientSocket);
BinaryFormatter bf = new BinaryFormatter();
MessageReceivedDel messageRecieved = new MessageReceivedDel(MessageReceivedMethod);
while (true) {
Message m = bf.Deserialize(ns);
messasgeReceived(m);
}
}
private void MessageReceivedMethod(Message m)
{
}
Remember that MessageReceivedMethod is a member method of you main form class.
Regards
|
|
|
|
|
|
Hi,
Try this code. Maybe will help.
<br />
Socket m_tcpListener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);<br />
m_tcpListener.Bind(new IPEndPoint(IPAddress.Any,20000));<br />
Socket client = m_tcpListener.Accept();<br />
Thread clientThread = new Thread(new ThreadStart( (new ServeClient(client)).Start ));<br />
clientThread.Start();<br />
<br />
class ServeClient<br />
{<br />
private Socket client = null;<br />
<br />
public ServeClient(Socket client)<br />
{<br />
this.client = client;<br />
}<br />
<br />
public void Start()<br />
{<br />
}<br />
}<br />
I created the class named ServeClient in which you cand do all your work. In my example for each client a new thread is launched. If you want to limit the number of clients that connect at the same time to your server (and the number of threads) you can call the Listen method of the socket.
Hope it helps
Do your best to be the best
|
|
|
|
|
How Can I build A setup from my project That when somebody wants Install my program in the Wiondows whithout .NetFrameWork The .NetFramework Install Automatically ?? !! ?? !! ??
->(Use .NetFrameWork 1.1)<-
With Thanks
MHF
-- modified at 8:51 Sunday 20th August, 2006
MHF
|
|
|
|
|
Err, wouldn't that turn a 1MB app into a 24MB app?
But yeah, i wanna know how you do somehting like this as well, but maybe just give out a message and redirect them to the download.
|
|
|
|
|
Size Isn't Important
I want do This Automatically
With Thanks
MHF
-- modified at 9:13 Sunday 20th August, 2006
|
|
|
|
|
|
|
Hello
1- RightClick on your setup project's name in the solution explorer
2- Click on Properties
3- Click on settings
4- Press "Prerequisite" button
5- Check .Net Framework
6- Check Windows Installer -recommended but not required-
7- check "download from same location as my application
8- Done!
Regards
|
|
|
|
|
|
Okay, well i got my app working, so thanks for any previous help.
I have the app open a file and build a treeview based on its contents. I have a button for this, which is redirected to a void containing all the code on building the treeview.
I also have a menu, which i named File inside this menu is a menu item called open. Quite simple so far, you click open, that also takes you to the void where the treeview is built.
BUT, when i click on File-Open, after the first node is added, it should a a subnode but instead i get the error message 'Object referemce not set to an instance of an object'
When i use the button i get no such error message and everything works perfectly. I just don't understand it.
|
|
|
|
|
I suggest you attach a debugger and find out what is null...
|
|
|
|
|
Its just adding a node, but its exaclty the same code that the button uses.
I create an object oNode, then go:
this.treeView1.SelectedNode.Nodes.Add(oNode)
When i use the button it works, its just when i use the menu item. It makes no sense.
|
|
|
|