|
But you have to be careful with regular expressions, since they are only testing what you think should be a valid int, not what really may be valid. For example, the regular expression you offered won't do too well on negative values.
Matt Gerrans
|
|
|
|
|
What would be better is just catching an InvalidCastException, instead of anything that may go wrong.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Thanks for your suggestion, I realise that I should only catch the specific case. However, I don't expect the failure of the conversion to be an exceptional case. I expect that the string does not conform regularly. That is why I didn't want to use a method that throws exceptions when the conversion fails.
I got an answer about Double.TryParse that returns a Boolean value and can be set to convert only integers that I'm going to use.
|
|
|
|
|
Andy MacAngus wrote:
However, I don't expect the failure of the conversion to be an exceptional case.
Exceptions don't mean you can only use them when they will rarely throw.
Andy MacAngus wrote:
Double.TryParse
Yeah, I thought there was something like that, but couldn't remember the details.
Christian Graus - Microsoft MVP - C++
|
|
|
|
|
Christian Graus wrote:
Exceptions don't mean you can only use them when they will rarely throw.
What I mean is that exceptions are expensive and I expect that in the validation code I am writing that there will be a lot of bad data and I would like the validation code to work quickly.
|
|
|
|
|
I want to know how can I obtain my own IP address when I connect to the internet via dialup modem & ISP in c#.
Enayat Masoumi
|
|
|
|
|
What do you mean by "obtain my own IP address"? When you connect to your ISP, the address is automatically assigned to you by the ISP. So what's the problem?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
|
Why do I detect a homework assignment here?
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
i will start working on a project used to Transfer specefic Data From Oracle DB to SQL Server 2005
//---Case
2 programs the first one is using Oracle9i Database
the Second one is using MSSQL server 2000
//---
I want to transfer Data From the Oracle DB to my SQL Server Database where the First application start saving that data to Oracle
//---Summery (Dump) Oracle Table => SQL Table
Any Thoughts....
agmb
|
|
|
|
|
Hi
I have a Rich Text Box where I need to highlight individual lines. I have to have word wrap disabled as I have long lines, but when I try setting a selection it scrolls to the end of the line.
Can anyone tell me how I can highlight a line of text in a Rich Text Box, either by keeping the caret at the start of the selection, or by changing the background colour of the selection?
TIA.
|
|
|
|
|
You have the right idea, just need to add a couple of steps.
First, save the current SelectionStart and SelectionLength values of the RTB before you start your color update. Then call .SuspendLayout() , do your color update just like you have been, set the SelectionStart and SelectionLength values back to what you saved, then call .ResumeLayout() . This should do what you want.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
Hmmm... maybe I didn't explain myself very well. I have a file in which I have a number of lines which are highlighted by changing their (foreground) colour - this is achieved by rtxtBox.Select(LineOffset,LineLength) and then changing rtxtBox.SelectionColor.
The user can move automatically between these lines by the use of up and down buttons - I'm currently just showing which of these lines they are on by moving the caret with rtxtBox.Select(LineOffset,0). I want to highlight the line by setting the selection to the whole line, but if I do rtxtBox.Select(LineOffset,LineLength) it scrolls to the end of the line.
It seems to me the only two solutions would be to:
a) change the background colour of the line (which appears not to be possible), or
b) move the caret back to the start of the line (which only seems to be possible by calling rtxtBox.Select(LineOffset,0), thereby removing the highlight).
Any ideas?
Ian.
|
|
|
|
|
That definately changes things. You really can't depend on the RTB's Selection highlight to work the way you need it to. You'll have to implement your won line tracking code and draw the highlight yourself. In which case, my original suggestion for changing the textcolor still stands. You just need to add code to track which line is currently selected and manage the drawing of the highlight. You've already got most of the pieces, including the buttons to move the highlight up and down.
RageInTheMachine9532
"...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome
|
|
|
|
|
...and that's what I was asking I've got the code to track which line is currently selected, I just don't know how to manage the drawing of the highlight - there doesn't seem to be any method to do it. Looking through the Studio Help yesterday I thought I saw something about inserting text with rtf tags or something, but I don't know what these tags would be and I can't find that bit of Help now anyway :-/
Ian.
|
|
|
|
|
The RichTextBox doesn't provide methods to set the text background color by default, although the underlying RichEdit control can do this.
You can, however, create the neccessary methods fairly easily using P/invoke.
Take a look at this article[^], towards the end you'll see how you can set only selected font properties for selected text (something the standard RTB cannot do as well). Along the same lines you can add a SetSelectionBackColor() to highlight the line.
Regards,
mav
|
|
|
|
|
Thanks for the pointer - I've nearly got it working, but there's one thing that doesn't seem to work and I can't figure out why.
I've got a RichTextEx class in which I'm implementing a "Highlight" method which is supposed to swap the foreground and background colours, so before setting the colours I'm using SendMessage to get the existing colours for the selection. Trouble is, crBackColor always comes back as 0 - here's a snippet of my code:
CHARFORMAT2 structure:
[ StructLayout( LayoutKind.Sequential )]
private struct sCharFormat2
{
public int cbSize;
public UInt32 dwMask;
public UInt32 dwEffects;
public Int32 yHeight;
public Int32 yOffset;
public Int32 crTextColor;
public byte bCharSet;
public byte bPitchAndFamily;
[MarshalAs(UnmanagedType.ByValArray, SizeConst=32)]
public char[] szFaceName;
public UInt16 wWeight;
public Int16 sSpacing;
public Int32 crBackColor;
public UInt32 lcid;
public UInt32 dwReserved;
public Int16 sStyle;
public UInt16 wKerning;
public byte bUnderlineType;
public byte bAnimation;
public byte bRevAuthor;
public byte bReserved1;
}
Code that uses SendMessage to fill the structure:
SuspendLayout();
Select(a_intFrom, a_intLength);
sCharFormat2 CharFormat = new sCharFormat2();
CharFormat.cbSize = Marshal.SizeOf(CharFormat);
CharFormat.dwMask = CFM_COLOR | CFM_BACKCOLOR;
CharFormat.dwEffects = CFE_AUTOCOLOR | CFE_AUTOBACKCOLOR;
IntPtr lParam = Marshal.AllocCoTaskMem(Marshal.SizeOf(CharFormat));
Marshal.StructureToPtr(CharFormat, lParam, false);
intRes = SendMessage(Handle, EM_GETCHARFORMAT, SCF_SELECTION, lParam);
CharFormat = (sCharFormat2)Marshal.PtrToStructure(lParam, typeof(sCharFormat2));
Anyone see what's wrong?
Ian.
|
|
|
|
|
Hi!
From a first look at the code it could be the CFE_AUTOBACKCOLOR flag.
Try removing it and see if it helps.
Regards,
mav
|
|
|
|
|
I've just removed the flag - no difference I'm afraid
Ian.
|
|
|
|
|
After more experimentation, it seems that the dwMask member is ignored - EM_GETCHARFORMAT always returns everything. The weird thing is that crBackColor comes back as 0 when the background is white, but if it's any other colour it's correct. Looks like it's kludgetime... :-/
Thanks to all for input
Ian.
|
|
|
|
|
Hi for all
I created an application to connect to my client to play NavyBattle.
When the application run, it's locked when the Socket is receiving the socket sended by method AcceptSocket of TcpListener. The application' s form doesn't show. I saw the taskmanager processes, and it's there.
Can someone aswer my question?
The code are below:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace TcpNavyBattle
{
/// <summary>
/// Summary description for Form1.
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Label ConnexionLabel;
private System.Windows.Forms.TextBox TxtLocation;
private bool bConnected;
private Server m_Player1;
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
Server Player1 = new Server();
m_Player1 = Player1;
//Player1.Running();
//bConnected = Player1.IsConnected();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#Code generated by Visual Sutdio
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
protected void TxtLocation_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(bConnected)
{
if(e.KeyCode == Keys.Enter && TxtLocation.Text != null)
{
ConnexionLabel.Text = "Value inserted";
m_Player1.Write(TxtLocation.Text);
}
else
{
ConnexionLabel.Text = "Connection closed or textbox is null";
}
}
else
{
MessageBox.Show("nada");
}
}
}
public class Server
{
TcpListener ServerListener;
Socket Connexion;
NetworkStream DataStream;
StreamReader Reader;
StreamWriter Writer;
string sData;
public Server()
{
IPAddress IPLocalhost = IPAddress.Parse("127.0.0.1");
//first commandment: create the listener
ServerListener = new TcpListener(IPLocalhost, 65000);
//second commandment: start it!
ServerListener.Start();
}
public void Running()
{
try
{
//third commandment: associate the Listener with the socket to receive data
while(true)
{
Connexion = ServerListener.AcceptSocket();
if(Connexion.Connected)
{
//Put 1252 in (static)GetEncoding method for windows operating system encoding
//System.Text.Encoding FormattedEncoding = System.Text.Encoding.GetEncoding(0);
DataStream = new NetworkStream(Connexion);
Reader = new StreamReader(DataStream);
Writer = new StreamWriter(DataStream);
while(DataStream != null && sData != "Close connection")
{
sData = Reader.ReadLine();
}
}
}
Reader.Close();
Writer.Close();
DataStream.Close();
Connexion.Close();
Application.Exit();
}
catch(SocketException SocketEx)
{
MessageBox.Show(SocketEx.Message);
}
}
public bool IsConnected()
{
return Connexion.Connected;
}
public void Write(string sData)
{
Writer.WriteLine(DataStream);
}
}
}
|
|
|
|
|
You need to create a seperate thread for your listening socket, otherwise your user interface is blocked due to the infinite while-loop.
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
Hi,
I am using C# to insert a date value from the DatePicker into a DateTime filed in mySQL database.. I am using the following syntax:
'" + datePicker.Value + "'
I also triend it withour the ' and with #
in the best scenario I will not get any error but the value will not be saved in the database, so if I have 10 different values of string, numeric & date then everything will be inserted successfully except the date value which will not be inserted and will not return any error message..
can anyone help please.....
Jassim Rahma
|
|
|
|
|
|
hi.
i had some problems with insertion & update of date in sql, and i solved it by using parameters to a command, but u have to be carefull because the character that shows the command that there is a parameter differs from server to server.
for example: (C#)
- to a sql server u would have something like this:
SqlCommand command = new SqlCommand("insert into mytable values (...,@date,...)");
SqlParameter parameter = new SqlParameter("@date", DateTime.Now);
command.Parameters.Add(parameter);
command.ExecuteNonQuery();
the parameter here is: "@date"
- to an oracle server the parameter characther is ":" and u would have something like this: ":date".
and if this doesn't help, u could try to use a stored procedure
best regards.
MetalSandman.
|
|
|
|