-1

I am attempting to read a file in my application and am having a few errors pop up that I don't fully understand.

C2227: left of '->Equals' must point to class/struct/union/generic type C3867: 'System::String:ToString': non-standard syntax; use '&' to create a pointer to member

Here is the code:

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    OpenFileDialog^ open = gcnew OpenFileDialog();

    open->InitialDirectory = "c:\\";
    open->Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*";
    open->FilterIndex = 2;
    open->RestoreDirectory = true;

    if (open->ShowDialog->Equals(System::Windows::Forms::DialogResult::OK) )
    {
        textBox1->Text = open->FileName;
    }
}
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
    ifstream inFile;

    string time;
    string name;
    Shack shackPref;
    pair<int, int> av;
    string filename = textBox1->Text->ToString;

    inFile.open(filename);

    if (inFile.is_open()) {
        cout << "File has been opened" << endl;
    }
    else {
        cout << "NO FILE OPENED" << endl;
    }

    while (!inFile.eof()) {

    }

Can someone explain why open->ShowDialog does not fall under class/struct/union/generic type? How can I rearrange this to get it to be the correct input? Do I need to create a struct that holds that data and if so will '->Equals' still be able to compare it to the DialogResult?

Same question goes for trying to convert the filename to an std:string from a String^. When I try to treat Text as a member of textBox1 it says that it doesn't have the member. Why doesn't '->ToString' recognize 'Text' as a member?

Thank you in advance for your help. I am still fairly new to c++ so this has been a real brain-cruncher for me.

acraig5075
  • 10,588
  • 3
  • 31
  • 50
jakivey32
  • 9
  • 1
  • 7
  • What do you think `OpenFileDialog^ open` means? Do you maybe mean to use `*` instead of `^` throughout? Is `open->ShowDialog` a method? If so, you might want to call it: `open->ShowDialog()`. – jwm May 30 '18 at 07:50

1 Answers1

0

You're trying to use ShowDialog like a property or member, but it is a method so it needs to be called with parenthesis.

open->ShowDialog()

The same goes for ToString. It needs to be called as it's a function.

textBox1->Text.ToString();

But besides, calling ToString() on a String makes no sense. You should be able to use the answers to this question to convert the .net String to a std::string.

C++ .NET convert System::String to std::string

acraig5075
  • 10,588
  • 3
  • 31
  • 50