|
It gave me an IP number but not one of my machine. Got some default IP number.
|
|
|
|
|
Ok, It worked. In my IIS setup I had IP as usnassigned. Once I assign an IP the ServerVariables property works.
Thanks.
|
|
|
|
|
|
That works too. But how about this. Is there a way to get this information in a DLL, i.e., the Request object is available in ASP. Lets say the code behind calls a C# DLL to do some stuff. Is there a way to get the IP in the DLL. I dont want to pass the number around. I could save it, but what I am looking for is if there is actually an API for it.
Thanks
|
|
|
|
|
Hi Ranjan,
Not sure, but try this
If it is not a CodeBehind but a C# Component/DLL within the Web Application,
System.Net.Dns.Resolve(System.Web.HttpContext.Current.Server.MachineName)
This or a similar variant should work. What do you say?
Deepak Kumar Vasudevan
http://deepak.portland.co.uk/
|
|
|
|
|
I think it worked. But I have to rty it on a server with multiple IPs to be sure.
Thanks
|
|
|
|
|
Hey All,
I have an MDI parent Container, I dock a tree view control to the left of that container, and bring up various child forms on the right side of that container. Im having an issue with this, I dont want the user to beable to resize or move the child forms I bring up, I want it all done through the treeview control. When I maximize the code in the form, I set the Control Box, Minimize, and Maximize properties to false, but for some odd reason it still displays the control box and other buttons in the file menu bar of the parent container. The funny thing is, it has disabled the close and minimize buttons. Another odd point to consider is that the restore button is enabled, so if the user clicks it, my form will shrink down to its original size, but after you click the restore button and only after you click the restore button, the control box goes away. Heres the code
this.SuspendLayout();
Form cForm = new Form();
cForm.MdiParent = this;
cForm.WindowState = FormWindowState.Maximized;
cForm.FormBorderStyle = FormBorderStyle.None;
cForm.MaximizeBox = false;
cForm.MinimizeBox = false;
cForm.ControlBox = false;
cForm.Show();
this.ResumeLayout();
Any Ideas would be greatly appreciated.
Thanks,
Ryan
|
|
|
|
|
Ryan@SalamanderTechnologies wrote:
cForm.FormBorderStyle = FormBorderStyle.None;
cForm.MaximizeBox = false;
cForm.MinimizeBox = false;
cForm.ControlBox = false;
Those things work perfectly well when the child form is not maximized.
The trouble is, when a child form gets maximized, then the border used is the MDIClient's border, not the child's border. As a result, minimize/maximize/control boxes are displayed regardless of what you is set for the child form.
Since the MDIClient is a private Form member, the only way I can think of to get around this is to directly manipulate the MDIClient window style, using native code : WIN32.SetWindowLong(this.Handle, GWL_STYLE, WIN32.GetWindowLong(this.Handle, GWL_STYLE) ~ (WS_MAXIMIZEBOX|WS_MINIMIZEBOX)); // may be won't compile, but you get the idea
The MDICLient window handle can be retrieved by looking up the this.Controls collection, looking for a member of type MDIClient :
int nbControls = this.Controls.Count;
for (int i=0; i<nbControls; i++)
{
Control pCtrl = this.Controls[i];
if ( pCtrl.GetType()== typeof(System.Windows.Forms.MdiClient) )
{
...
}
}
|
|
|
|
|
Thanks for the suggestion, I thought it might have been something along those lines.
Thanks again,
Ryan
|
|
|
|
|
By the way, anyone else who runs into this problem might be helped but a little work around I've found. If you set the form to minimized initially, then call the form show method, and after that call the form maximized method, you get the desired effect. You just have to deal with the little annoying effect of the form going from minimized to maximized, which isnt really that bad.
Thanks,
Ryan
|
|
|
|
|
I have managed to sort it out. Add this following code once your child form is created (and in fact anytime a child form is created/destroyed/...) :
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern long GetWindowLong(IntPtr hWnd, int style);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern void SetWindowLong(IntPtr hWnd, int style, long value);
<p> </p>
const int GWL_STYLE = -16;
const long WS_MINIMIZEBOX = 0x20000;
const long WS_MAXIMIZEBOX = 0x10000;
int nbControls = this.Controls.Count;
for (int i=0; i<nbControls; i++)
{
Control pCtrl = this.Controls[i];
if ( pCtrl.GetType()== typeof(System.Windows.Forms.MdiClient) )
{
long nStyle = GetWindowLong(pCtrl.Handle, GWL_STYLE);
nStyle ^= (WS_MINIMIZEBOX | WS_MAXIMIZEBOX);
SetWindowLong(pCtrl.Handle, GWL_STYLE, nStyle);
}
}
As I have already said, this forces the MDIClient's window style not to show either caption boxes.
|
|
|
|
|
|
1. How to check the file is good before I proceed?
ex: In C++ I check like this:
TRY { oFile = new CFile (filename, CFile::modeRead); }<br />
CATCH ( CFileException, e ) { oFile = NULL;}<br />
END_CATCH<br />
}<br />
<br />
if (oFile) <br />
{<br />
....<br />
}
How to do this in C#?
2. What's equivalent of char * in C#?
Don't and drive.
|
|
|
|
|
bool bExists = new System.IO.FileInfo(@"c:\test.txt").Exists;
long nLength = new System.IO.FileInfo(@"c:\test.txt").Length;
About char*, it's somewhat harder to answer. What's is supposed to be in managed code depends on the semantics of that char* : is it a pointer to a single char (use IntPtr, and marshal to char[] back and forth) ? is it an input string (use String in your method call) ? is it a fixed string (use StringBuilder) ? is it an output string (use ref String) ?
|
|
|
|
|
.S.Rod. wrote:
long nLength = new System.IO.FileInfo(@"c:\test.txt").Length;
This is thing works file.Length;
Is it OK?
.S.Rod. wrote:
About char*, it's somewhat harder to answer.
Wow...
In my case...Usually I do like this C++
Ex: (separator is LPCTSTR )
char* Sep = NULL;<br />
int sepLength = 0;<br />
if (sepLength = strlen (separator)) <br />
{<br />
Sep = new char [sepLength + 1];<br />
strcpy (Sep, separator);<br />
Sep[sepLength] = '\0';<br />
}
Thx Rodrigez for clarfying my newbie doubts.
Don't and drive.
|
|
|
|
|
Kant wrote:
This is thing works file.Length;
fileinfo.Length, to be accurate.
Kant wrote:
In my case...Usually I do like this C++
Ex: (separator is LPCTSTR )
char* Sep = NULL;
int sepLength = 0;
if (sepLength = strlen (separator))
{
Sep = new char [sepLength + 1];
strcpy (Sep, separator);
Sep[sepLength] = '\0';
}
I believe that's what you do with C, not with C++.
At least with C++ you can use the STL std::string, MFC CString, or whatever string class having a copy operator.
In managed code, everything is already done :
String s = separator; //
|
|
|
|
|
|
The file contents are like this:
ABC DFDFAS
- (separator)
DSFS FSDFSDJFSD DSFKDFJS
-
DSFS FSDFSDJFSD DSFKDFJS fsdfsdfasd
I want those strings to be separated by that separator to be stored in array(double linked list) like this:
ABC DFDFAS
DSFS FSDFSDJFSD DSFKDFJS
DSFS FSDFSDJFSD DSFKDFJS fsdfsdfasd
I can write it easily in VC++, but I am getting what I want with C#
string testString;<br />
string[] strArray;<br />
Int64 stringLen;<br />
<br />
stringLen = 0; <br />
<br />
FileStream file = new FileStream(filePath, FileMode.Open, <br />
FileAccess.Read);<br />
<br />
StreamReader sr;<br />
<br />
try<br />
{<br />
sr = new StreamReader(file);<br />
}<br />
catch(Exception ex)<br />
{<br />
return;<br />
}<br />
<br />
do <br />
{<br />
testString = sr.ReadLine() + "\r\n";<br />
strArray = testString.Split('-'); <br />
stringLen = quote.Length;<br />
<br />
for (int i = 0; i < quoteLen; i++) <br />
{<br />
<br />
if (strArray[i] != "")
{ <br />
<br />
if (!wordCounter.Contains(strArray[i])) <br />
{<br />
<br />
wordCounter.Add(strArray[i], 1);<br />
} <br />
else <br />
{<br />
}<br />
}<br />
<br />
}<br />
}<br />
while(sr.Peek() != -1);<br />
<br />
sr.Close();<br />
<br />
file.Close();
All I get is :
ABC
DFDFAS
DSFS
FSDFSDJFSD
....
Can you guide what I am doing wrong..
Don't and drive.
|
|
|
|
|
The problem lies in something that is not defined in this code : what is the class type for wordCounter ?
Is wordCounter a class which implements the IDictionary interface ? In this case, I think the "1" in
wordCounter.Add(strArray[i], 1); is wrong. A unique value is expected.
|
|
|
|
|
.S.Rod. wrote:
what is the class type for wordCounter ?
SortedList wordCounter = new SortedList();
Ignore my code, I started with one thing and ended up doing something else.
If the file contents is like this:
The Code Project Rocks
-
Yes It does.
-
It's Awesome.
I want all those sentences stored in the SortedList.
What's the easiest way?
Don't and drive.
|
|
|
|
|
SortedList sL = new SortedList();
sL.Add( "The Code Project Rocks", 0);
sL.Add( "Yes It does.", 0);
sL.Add( "It's Awesome", 0);
int i=0;
while ( i < sL.Count )
{
MessageBox.Show( sL.GetKey(i).ToString() );
i++;
}
|
|
|
|
|
But before I add those string to SortedList, how to strip to those strings which are separated by the separator ("-") from the file?
Is testString.Split('-') any good?
Don't and drive.
|
|
|
|
|
Kant wrote:
Is testString.Split('-') any good?
Yes. That's the simplest way to do so as long as there are no carriage returns between strings and separators. In which case, I would suggest to concatenate strings as you read the file (use StringBuilder, for performance reasons, since strings are immutable), and then call Split on the full string.
|
|
|
|
|
how to write C# Applet, display it in a web page and the requirement?
Thank in advance for your help.
where ?documentation and tuto
-=zoltx=-
|
|
|
|
|
Basically, it's possible to run a .NET assembly into a IE6-hosted web page by adding these tags :
<object id="myCtl"
classid="http://www.mycode.Microsoft.com/mycode.dll#myClass">
</object>
where mycode.dll is the assembly filename, and myClass is the entry point.
Use http://127.0.0.1/... for local assemblies (you've got to put the assembly in your \wwwroot folder, if you are using IIS).
More info here[^].
|
|
|
|