|
Thanks for the help! I will experiment with the Double.TryParse() after I can get the intended effect from the rest of my program.
I figured out how to stop my program from freezing and keep the do_while, (I also did it without the do_while, but my assignment is to make the program using do_while), but I still do not have the intended effect.
northT (the label that displays the total) will update when I click on it, but I need it to update every time one of the values in the text boxes change.
Here is the updated version of my code.
private: System::Void northT_Click(System::Object^ sender, System::EventArgs^ e)
{
double nTotalIn = 0.0;
double nTotalFi = 0.0;
double n1 = 0.0;
double n2 = 0.0;
double n3 = 0.0;
do
{
nTotalIn = Convert::ToDouble(northT->Text);
n1 = Convert::ToDouble(north1->Text);
n2 = Convert::ToDouble(north2->Text);
n3 = Convert::ToDouble(north3->Text);
nTotalFi = n1 + n2 + n3;
northT->Text = nTotalFi.ToString();
} while(nTotalFi != nTotalIn);
}
|
|
|
|
|
Hi guys,
I have a question ya... minus a int64 with another int64.. below is my coding :-
System::Int64^ limit1;
System::Int64^ limit2;
System::Int64^ diff;
diff = limit1-limit2;
the limit1 and limit2 values are the count of the records in a database.
but the diff-limit1-limit2; is not working.
i am new to managed c++.kindly help me...
Regards,
Thilek
|
|
|
|
|
Either of these should work:
System::Int64 limit1 = 100;
System::Int64 limit2 = 25;
System::Int64 diff = limit1 - limit2;
System::Int64^ limit1 = gcnew System::Int64(100);
System::Int64^ limit2 = gcnew System::Int64(25);
System::Int64^ diff = gcnew System::Int64(*limit1 - *limit2);
System::Int64 is a value type, so if you want to use handles to a value type
(e.g. System::Int64^) then you need to create objects on the managed heap.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Don't use handles on value types.
David Anton
http://www.tangiblesoftwaresolutions.com
Convert C++ to C#, VB, or Java
Convert Java to C#, VB, or C++
Convert VB to C#, C++, Java, or Python
Convert C# to VB, C++, Java, or Python
|
|
|
|
|
Hi, a "FileNotFoundException" raised in my code during call "Activator::GetObject()" method. details as following:
Environment:
1. VS 2005 Pro - C++/CLI
2. Windows XP SP3
There are two "windows forms applications" in my application: 1) server, 2) client.
// Server side
there are two classes in server side: 1) Form1.cpp, 2)serverRemote which inherits from MarshalByRefObject.
//serverRemote.cpp, code in briefly
public ref class serverRemote: public System::MarshalByRefObject
{
public:
System::Void update()
{
}
}
//Form1.cpp, code in briefly
public ref class Form1 : public System::Windows::Forms::Form
{
public: ObjRef^ obj;
public: TcpChannel^ channel;
public: serverRemote^ rem;
System::Void server::Form1::button1_Click(System::Object^ sender, System::EventArgs^ e) {
channel = gcnew TcpChannel(9001);
ChannelServices::RegisterChannel(channel, false);
obj = RemotingServices::Marshal(rem, "TcpService");
button1->Enabled = false;
button2->Enabled = true;
}
System::Void server::Form1::button2_Click(System::Object^ sender, System::EventArgs^ e) {
RemotingServices::Unmarshal(obj);
RemotingServices::Disconnect(rem);
ChannelServices::UnregisterChannel(channel);
delete channel;
button1->Enabled = true;
button2->Enabled = false;
}
}
//client side
public ref class Form1 : public System::Windows::Forms::Form
{
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
server::serverRemote^ rmtObj = dynamic_cast<server::serverRemote^>(Activator::GetObject(Type::GetType("server.serverRemote, serverRemote", true), "tcp://localhost:9001/TcpService"));
rmtObj->update();
}
}
Each projects are complied perfectly. Then i running it in the debug mode.
1. click button1 of server, everything fine
2. click button1 of client, "FileNotFoundException was unhandled". It is said "Could not load file or assembly 'serverRemote' or one of its dependencies. The system cannot find the file specified."
(I guess might be something wrong in the Activator::GetObject() method or Type::GetType() method call, but i couldn't fix it. )
Could anyone help me? Thanks a lot in advance!
|
|
|
|
|
zkii wrote: The system cannot find the file specified."
Could you explain more specifically what sort of help you want from us? That error messages is perfectly clear to me.
|
|
|
|
|
Thanks very much for your reply.
I mean why the system cannot find the file specified? Could you please tell me what's wrong in my code?
|
|
|
|
|
zkii wrote: Could you please tell me what's wrong in my code?
Your code does not effect how the various .NET loading mechanisms work.
zkii wrote: I mean why the system cannot find the file specified?
Because the file is not located in any of the locations where the .NET system looks for it. Or if you are using one of the registration mechanisms you may have an error in your registration implementation. All of these aspects of the .NET system are well documented. Therefore your next step should be to start reading.
|
|
|
|
|
Of course i've already known what the problem is from the description of Visual Studio debug mechanisms, but i just cannot fix it. I won't post this message if I didn't read documents or searching on google or try to solve it by myself. Anyway, thanks for your suggestion.
|
|
|
|
|
zkii wrote: but i just cannot fix it.
What do you think we can do in a forum to help you diagnose the problem? We don't have access to your system to perform the diagnosis. Secondly there is no magical incantation we can chant that will fix the problem.
If you can't solve the problem the root cause of that is you don't understand the documentation. If you did, you would use the understanding to diagnose and fix the problem. Therefore my suggestion remains the same, read the documentation.
|
|
|
|
|
Hi, I am trying to make my application read fields from a string array (by reading from a .csv file), assign each single field to a new string and then cast it double. I am however having problems setting the delimiters in C+/CLI.
The code I previously wrote for C++ (reported at the end) was working file, but I can't find anywhere how to set similar delimiters using C++/CLI.
array<String^>^ Cell= gcnew array<String^>(100);
StreamReader^ sr = gcnew StreamReader( "INPUT.csv" );
while(sr->Peek() >= 0)
{
for(int i = 0; i<100; i++)
{
String^ Value0AsString= Cell[i++];
String^ Value1AsString= Cell[i++];
String^ Value2AsString= Cell[i++];
double Value0= double:: Parse( Value0AsString);
double Value1= double:: Parse( Value1AsString);
double Value2= double:: Parse( Value2AsString);
}
}
The delimiters I would like to use are the following (code in c++):
string Cell[100];
int i = 0;
ifstream INPUT ("INPUT.csv");
while (! INPUT.eof())
{
if ((i + 1) % 3 == 0) getline(INPUT, Cell[i++]);
else getline(INPUT, Cell[i++], '\,');
}
....rest of the code
Any advice is welcome!
|
|
|
|
|
You could just your regularexpressions and not worry with parsing it yourself.
a programmer traped in a thugs body
|
|
|
|
|
You are correct, the String.Split method is what you want. See the documentation[^] for an example of how to set up your delimiters in Managed C++.
Dybs
|
|
|
|
|
Hi Dybs, thanks for the reply. However I can't find any good example on the correct syntax for the String.Split method in C++/CLI...Any suggestion is welcome!
|
|
|
|
|
The link in my previous post is to the MSDN documentation for the String.Split method. Click on the first overload of the method (String(char[])), and scroll about 2/3 to the bottom. You will see examples of how to use the function in VB, C#, and Visual C++ (same thing as C++/CLI). The example should give you what you need.
Dybs
|
|
|
|
|
Hi Dybs, many thanks for the clarification. Now I manage to split the string but still I am unable to set delimiters for StreamReader. I've looked extensively on the web but I can't see pertinent examples for C++/CLI.
I would need StreamReader (or
String ^line = reader.ReadLine(); ) to read up to the 3rd value of a CSV file and in another instance I need it to stop reading when it meets the end of the line.
Do you have any idea on how to specify these delimiters please?
I'd really appreciate your help.
|
|
|
|
|
Please read the documentation more closely. In the link I posted previously, you'll notice several overloads of String.Split. If you bother to read the descriptions of the overloads, you'll see there's one that fits your requirements quite nicely. All I'll say is you need one overload to split the string to the end of the line, and another to split the string and only get the first 3 values (or however many you want). Again, you can find the sample code in the documentation.
For future reference, the MSDN documentation is your friend. You could have figured this out on your own in 5 minutes by Googling "System.String" and looking at the functions available for the string class. If you need to know what functions are available for any .NET class, Google the fully-qualified name of the class (namespace.class) and the first couple of links will give you exactly what you need.
Dybs
|
|
|
|
|
Hi!
I'm coding a CLR/C++ DLL but i have problems with SqlDataAdapter reading data.
There's a sample code:
SqlConnection ^ coneccion =
gcnew SqlConnection("Data Source=datamaster;Initial Catalog=Molinstec_CSMARTA;Integrated Security=True");
SqlDataAdapter ^ da =
gcnew SqlDataAdapter("select current_timestamp", coneccion);
DataSet ^ ds = gcnew DataSet();
coneccion->Open();
da->Fill(ds,"data");
coneccion->Close();
DateTime ^ dateTime = (DateTime^)ds->Tables["data"]->Rows[0];
Console::WriteLine(dateTime);
return 0;
When i run it , throw a exception because ds->Tables["data"] is null. If i change "data" to 0 the same problem.
Someone see the problem?
Thanks!
|
|
|
|
|
What does ds->Tables->Count returns? Have you tried executing this query in query browser?
CNTX! wrote: "select current_timestamp"
You don't need a DataSet here. Just use ExecuteScalar and get the result.
|
|
|
|
|
Thanks for the answer!
Fist, in quickwatch ds->Tables->Count == 1.
The query "select current_timestamp" it's just and example... the query is "select * from table where id = @id".
I add the parameter and set the value...
Ds->Tables[tableName]->Rows[0] must return the first datarow of the table tableName en the dataset ds.
If i run the query directly in sql got no problem... First i think that could be an parameter problem, so i directly put "where id = 1" and don't work
|
|
|
|
|
Hi guys,
i am writing a program that get data from a sqlite database and add the records to a string array. But i not sure how to add to the string array. i search few ways on net and try out, but it didnt work. Below is my coding :
string signature_array[100];
int count =0;
SQLiteConnection ^connection = gcnew SQLiteConnection("Data Source=test.db3;Pooling=True");
connection->Open();
SQLiteCommand ^cmd = gcnew SQLiteCommand(connection);
SQLiteDataReader ^reader = cmd->ExecuteReader();
while (reader->Read())
{
signature_array[count]=reader->GetString(2);
count++;
}
reader->Close();
kindly help me.. i am using visual C++ pro 2008...
Thank you.
Regards,
Thilek
|
|
|
|
|
Thilek wrote: string signature_array[100];
This is not a C++/CLI array. In C++/CLI, strings are written like String^ . And array is created like
array<String^>^ stringArray = gcnew array<String^>(arrayLength) In your case, a generic List(String^) will be appropriate.
List<String^>^ stringList = gcnew List<String^>();
SQLiteConnection ^connection = gcnew SQLiteConnection("Data Source=test.db3;Pooling=True");
connection->Open();
SQLiteCommand ^cmd = gcnew SQLiteCommand(connection);
SQLiteDataReader ^reader = cmd->ExecuteReader();
while (reader->Read())
{
stringList->Add(reader->GetString(2));
}
reader->Close(); This will avoid maintaining a count variable explicitly. List is capable to expand and shrink whenever required.
For SQLiteConnection and SQLiteCommand , you can use stack semantics which will ensure the objects are disposed once the scope ends. I can't see you are disposing them in your code.
|
|
|
|
|
i try using this and i got the following errors :-
c:\documents and settings\thilek\desktop\sparta test\trial.cpp\Scanner.cpp(114) : error C2065: 'List' : undeclared identifier
c:\documents and settings\thilek\desktop\sparta test\trial.cpp\Scanner.cpp(114) : error C2275: 'System::String' : illegal use of this type as an expression
c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::String'
c:\documents and settings\thilek\desktop\sparta test\trial.cpp\Scanner.cpp(114) : error C2059: syntax error : '>'
c:\documents and settings\thilek\desktop\sparta test\trial.cpp\Scanner.cpp(143) : error C2065: 'stringList' : undeclared identifier
c:\documents and settings\thilek\desktop\sparta test\trial.cpp\Scanner.cpp(143) : error C2227: left of '->Add' must point to class/struct/union/generic type
type is ''unknown-type''
Scanner.cpp
.\Scanner.cpp(114) : error C2065: 'List' : undeclared identifier
.\Scanner.cpp(114) : error C2275: 'System::String' : illegal use of this type as an expression
c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : see declaration of 'System::String'
.\Scanner.cpp(114) : error C2059: syntax error : '>'
.\Scanner.cpp(143) : error C2065: 'stringList' : undeclared identifier
.\Scanner.cpp(143) : error C2227: left of '->Add' must point to class/struct/union/generic type
type is ''unknown-type''
|
|
|
|
|
Thilek wrote: 'List' : undeclared identifier
Have you added using namespace System::Collections::Generic ?
|
|
|
|
|
thanks bro.. its working
|
|
|
|