|
Neither Int32 or Int64 are going to hold a ~25 digit number.
2^32 = 4294967296
2^64 = 18446744073709551616
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Mark Salsbery wrote: 2^32 = 4294967296
2^64 = 18446744073709551616
Actually for signed integers the maximum values are one less than half of those numbers.
BTW: you should use thousand separator characters to keep such numbers somewhat readable...
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Yeah.....um....thanks for the tips Luc
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
You err are welcome.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Mark Salsbery wrote: thanks for the tips
Here's another:
If you give a man a fish he'll stink up the whole village, but give him a fishing rod, see where I'm going with this? Give him a fishing rod and he'll poke yer eye out.
|
|
|
|
|
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
One should always wear safety glasses when using hazardous equipment, such as Windows PCs.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
int MyInt;
String^ MyString = MyInt.ToString();
Guys, I need some help on C++/CLI please.
Given an Int ("MyInt") how can I generate a string called "MyString" which is made up of only the first let's say 5 digits of the Int? I guess there must be a simple attribute that I can specify in the line above but I cannot find the right sintax. Any help would be appreciated. Many thanks.
|
|
|
|
|
Hi,
no there is no optional parameter that lets you specify that you only are interested in the N
leftmost or N rightmost digits; ToString() will give all of them, you can throw away the part you
do not want using string::SubString(). Not sure it makes much sense to do so.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
One could go totally overkill and implement an IFormatProvider/ICustomFormatter
that automatically trims the string (using Convert.ToString(Intxx, IFormatProvider)).
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
hi guys,
i am writing a directory scanning program.. my program will scan the entire directory and list down the file names. i am using a listbox to show the filenames.
Currently the program will do the entire searching then will list down the file names after complete. the program should show the filenames one by one while searching the directory.
how can i do that guys..help me plz..
Below is my coding :-
wstring directory =(L"C:\\Windows\\system32");
if (ListFiles(directory, L"*", files)) {
for (vector<wstring>::iterator it = files.begin();
it != files.end();
++it) {
std::string filename = WStringToString(it->c_str());;
std::string s=filename;
String ^someString= gcnew String(s.c_str());
listBox1->Items->Add(String::Concat(someString));
}
}
listBox1->EndUpdate();
Regards,
Thilek
|
|
|
|
|
Maybe try updating the control after each item is added, something like:
listBox1->Items->Add(String::Concat(someString));
listBox1->SelectedIndex = index;
listBox1->Update();
I'm curious - why all the string conversions in there?
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
what should i replace the index with..
when i compile it its showing :-
error C2065: 'index' : undeclared identifier
Help me plz and thanks ya.
|
|
|
|
|
Oops , sorry...
int index = listBox1->Items->Add(String::Concat(someString));
listBox1->SelectedIndex = index;
listBox1->Update();
listBox1->SelectedIndex = index; is optional - without it the added items won't
automatically scroll into view.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
its scrolling down.. i notice on the scroll bar, its blinking.
but the list only visible after its finish scanning :P
Do i need to do anything to the form or any other options i need to add ??
|
|
|
|
|
hmm it worked for me.
I'm assuming you're using Windows Forms for UI, and your code is running on the UI thread...
Maybe try an Application::DoEvents(); call after (or instead of) the Update() call.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
I'm not sure what you were doing with those string conversions, but
if you don't need them, this should work:
wstring directory =(L"C:\\Windows\\system32");
if (ListFiles(directory, L"*", files))
{
for (vector<wstring>::iterator it = files.begin(); it != files.end(); ++it)
{
int index = listBox1->Items->Add(String::Concat(gcnew String(it->c_str())));
listBox1->SelectedIndex = index;
listBox1->Update();
}
}
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
well i were collecting the codes there and here, so to match them i keep converting but ur code made it look short and nice
thanks ya. but the listbox showing the list after complete scanning..
|
|
|
|
|
Here's the code I'm testing with - I can see all the items get added...
for (int i = 0; i < 1000; i++)
{
int index = listBox1->Items->Add(i.ToString());
listBox1->SelectedIndex = index;
listBox1->Update();
}
Using the Update() or the DoEvents() method yields the same results.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
below is the full coding of my form :-
#pragma once
#include "Mainmenu.h"
#include "Scanner.cpp"
using namespace std;
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
namespace trialcpp {
public ref class Autoscanner : public System::Windows::Forms::Form
{
public:
Autoscanner(void)
{
InitializeComponent();
}
protected:
~Autoscanner()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Button^ start_button;
private: System::Windows::Forms::Button^ close_button;
protected:
private:
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
this->label1 = (gcnew System::Windows::Forms::Label());
this->start_button = (gcnew System::Windows::Forms::Button());
this->close_button = (gcnew System::Windows::Forms::Button());
this->SuspendLayout();
this->label1->AutoSize = true;
this->label1->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 9.75F, System::Drawing::FontStyle::Bold, System::Drawing::GraphicsUnit::Point,
static_cast<System::Byte>(0)));
this->label1->Location = System::Drawing::Point(22, 22);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(176, 16);
this->label1->TabIndex = 0;
this->label1->Text = L"Scanning.... Please Wait";
this->start_button->Location = System::Drawing::Point(324, 231);
this->start_button->Name = L"start_button";
this->start_button->Size = System::Drawing::Size(75, 23);
this->start_button->TabIndex = 2;
this->start_button->Text = L"Start";
this->start_button->UseVisualStyleBackColor = true;
this->start_button->Click += gcnew System::EventHandler(this, &Autoscanner::start_button_Click);
this->close_button->Location = System::Drawing::Point(405, 231);
this->close_button->Name = L"close_button";
this->close_button->Size = System::Drawing::Size(75, 23);
this->close_button->TabIndex = 3;
this->close_button->Text = L"Close";
this->close_button->UseVisualStyleBackColor = true;
this->close_button->Click += gcnew System::EventHandler(this, &Autoscanner::close_button_Click);
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(515, 266);
this->Controls->Add(this->close_button);
this->Controls->Add(this->start_button);
this->Controls->Add(this->label1);
this->Name = L"Autoscanner";
this->StartPosition = System::Windows::Forms::FormStartPosition::CenterScreen;
this->Text = L"Sparta AV : Auto Scanning";
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void close_button_Click(System::Object^ sender, System::EventArgs^ e) {
Application::Exit();
}
private: System::Void start_button_Click(System::Object^ sender, System::EventArgs^ e) {
ListBox^ listBox1 = gcnew ListBox;
listBox1->Size = System::Drawing::Size( 400, 160 );
listBox1->Location = System::Drawing::Point( 50, 50 );
this->Controls->Add( listBox1 );
listBox1->MultiColumn = false;
listBox1->SelectionMode = SelectionMode::MultiExtended;
listBox1->BeginUpdate();
vector<wstring> files;
wstring directory =(L"C:\\Windows");
if (ListFiles(directory, L"*", files))
{
for (vector<wstring>::iterator it = files.begin(); it != files.end(); ++it)
{
int index = listBox1->Items->Add(String::Concat(gcnew String(it->c_str())));
listBox1->SelectedIndex = index;
listBox1->Update();
Application::DoEvents();
}
}
listBox1->EndUpdate();
#if defined(DEBUG)
System::Diagnostics::Debug::WriteLine( listBox1->SelectedItems[ 1 ] );
System::Diagnostics::Debug::WriteLine( listBox1->SelectedIndices[ 0 ] );
#endif
}
};
}
Did i miss anything in the form ya ??
|
|
|
|
|
You need to get rid of the BeginUpdate() and EndUpdate() calls.
Those are for when you DON'T want to see the listbox update until
all items have been added.
Mark
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
thanks ya.. its working now... but jus that every file is selected.. but its ok for now.. thanks a lot..
|
|
|
|
|
Thilek wrote: every file is selected
You can handle selection the way you want....I was just using a
single-selection control to test.
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
okies thanks ya... i try to add string matching function to it but the program exit with error msg :-
Managed' has exited with code -1073741819 (0xc0000005).
But it works if i scan directory will less files (about 160 files).
hm... confusing....
|
|
|
|
|
one more problem bro.. when i run the same program on my frieds laptop its n0t listing the file names and no error found... wierd
|
|
|
|