[vc++] TextBox, StreamWriter - jeszcze jedno małe pytanko;P

0

Otóż chcę sobie streamem zapisywać informacje z textboxa do pliku, kodzik buttona:

SaveFileDialog^ dig = gcnew SaveFileDialog();
dig-> Filter = "Text Files|*.txt|";

if(dig->ShowDialog() == Windows::Forms::DialogResult::OK() )

{
	System::IO::File::WriteAllText(dig->FileName, textBox1->Text());
}

I oto mi debuger wypluwa takie coś:
1>c:\users\ramzes\desktop\test2\glowna\glowna\Form2.h(299) : error C2064: term does not evaluate to a function taking 0 arguments

Wiecie o co kaman? ;)

Całość robię na drugiej formatce w projekcie

Hmmm i jeszcze pytanko, jeśli chcę do pliku dopisać sobie innego texboxa, to wystarczy, że skopiuję dodam drugi raz tą samą linijkę

System::IO::File::WriteAllText(dig->FileName, textBox1->Text());

w tym samym miejscu?
Oczywiście z textBox2

0

Text nie jest funkcja/metoda!

0

Może jakaś podpowiedź jak to zrobić? W borlandzie całkiem inaczej się to robiło, a na poniedziałek mam narzucony projekt na zaliczenie, tylko dlatego, że wykładowca ma umowę z Microsoftem...

0

Ale ja ślepy jestem ;| oO

"tekst nie jest funkcją, metodą" - dzięki serdeczne :D
wystarczyło usunąć nawiasy;|

0

Przepraszam za post pod postem i tak licznik wyłączony, a jak będę na 2 stronie wyników to nikt mi nie odpowie, a więc:

SaveFileDialog^ zap = gcnew SaveFileDialog();
zap->Filter = "Pliki tekstowe |*.txt";


if(zap->ShowDialog() == Windows::Forms::DialogResult::OK)

{
        System::IO::File::WriteAllText(zap->FileName, textBox1->Text);
System::IO::File::WriteAllText(zap->FileName, textBox2->Text);

}

Jak dodam to:

System::IO::File::WriteAllText(zap->FileName, textBox2->Text);

To program nadpisze mi poprzednie informacje, nie chcę pisać osobnych klas do serializacji, nie można jakoś wpisać tego w następnej linijce i później odczytać tego z powrotem do textBoxów, nie pisząc klas serializacji?

Proszę o pilną odpowiedź i z góry dziękuję...

0

nie wiem czy będzie działać, ale spróbuj
System::IO::File::WriteAllText(zap->FileName, textBox1->Text+textBox2->Text);

0

W sumie to dodaje mi i wychodzi tekst1tekst2 :)
Założenie jest takie, że mam prosty formularz, który ma zapisać wprowadzone dane do pliku, a później z pliku odczytać je do formularza...

edit:
zrobię chyba osobne klasy do serializacji, jeśli ten projekt nie będzie zrobiony na poniedziałek, to wylecę ze studiów :/
heh

edit2:

     System::IO::File::WriteAllText(zap->FileName, textBox1->Text+"\r\n"+textBox2->Text);

Wreszcie oO biblioteka MFC wykrzacza mi buractwo jakieś jak użyje samego \n ;|
Zalicze projekt i ostro wezmę się za visuala :)

Tematu proszę mi nie usuwać, prawdopodobnie będe miał jeszcze problem z odczytaniem tego czegoś z powrotem do textBoxów:D
Dzięki Shibito, naprowadziłeś mnie częściowo na patent</cpp>

0

No więc jak przewidywałem:

textBox1->Text = System::IO::File::ReadAllText(op->FileName);

Jak rozwiązać to, żeby całego pliku nie ładowało do textBoxa, ale tylko do końca lini...

0

uzyj innej metody.
po pierwsze, statyczna metoda File 'ReadAllText' jest skrotem dla tych co chca czytac caly tekst. kropka. plikow uzywa sie inaczej
po drugie, jest cala masa skrotow, ale nalezy wiedziec, co jak sie robi w dlugiej formie
3)plikow uzywa sie tak:

  • skonstruuj obiekt FileStream
  • opakuj go w StreamReader
  • streamreader udostepni Ci teraz pakiet metod, np ReadLine
  • pamietaj potem pozamykac i .dispose, albo uzyj "using(){}" zeby sie samo zdisposeowalo

3.1) jak lubisz skroty, StreamReader mozna od razu otworzyc na sciezce, reczne tworzenie FileStream nie jest potrzebne

0

Dzięki za naprowadzenie ;)
Przerabiam zapis na StreamWriter, wszystko gra, tylko nie wiem jakie argumenty dodać w:

sw->NewLine() - woła o dwa argumenty:] poszukam jeszcze na necie jak się przechodzi do następnej linijki, bo w tej chwili zapisuje mi tylko jedną:D

edit:
wszystko gra ;)

0
public: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {

			String^ str = this->textBox1->Text;
	String^ st1 = this->textBox2->Text;

			System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter(op->FileName);
sw->WriteLine(str);
sw->WriteLine(st1);

sw->Close();

Chcę zrobić zapis do poprzednio otwartego pliku za pomocą OpenDialog, bez otwierania SaveDialog i otóż:
Jak to zrobić by zapisywał do poprzedniego katalogu, a nie do głownego programu:

"op->" to nazwa OpenDialog, które ustawiłem public by dostać się do tego z funkcji buttona, ale... nazwa pliku jest ok, ale zapisuje mi w katalogu aplikacji...

0

Pomoże ktoś ?
Jak pobrać ścieżkę poprzednio otwartego pliku:(

PROGRAM SIĘ KOMPILUJE, ale... podczas próby zapisu modyfikowanego pliku, wywala błąd, że pusta ścieżka jest niedozwolona, jak zatem pobrać ścieżkę z otwartego pliku za pomocą OpenFileDialog, do StreamWritera
;(
Tylko to mi zostało, pomóżcie bo jestem zielony, a już 19:20, projekt na jutro...

public: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
OpenFileDialog^ op = gcnew OpenFileDialog();
op->Filter = "Pliki tekstowe |*.txt";

String^ path = op->FileName;

if(b1->Checked == true)
{
if(op->ShowDialog() == Windows::Forms::DialogResult::OK)

{ 

System::IO::StreamReader^ sw = gcnew System::IO::StreamReader(op->FileName);

textBox1->Text = sw->ReadLine();
textBox2->Text = sw->ReadLine();


}
}
else if (b2->Checked == true)
{

String^ st1 = this->textBox1->Text;
String^ str2 = this->textBox2->Text;
	
//System::IO::File::WriteAllText(op->, textBox1->Text+"\r\n"+textBox2->Text);
    System::IO::StreamWriter^ sw = gcnew System::IO::StreamWriter(op->FileName);
sw->WriteLine(st1);
sw->WriteLine(str2);

sw->Close();
}

0

podbijam - > HELP /.....

To taki "quick save"
chcę otworzyć plik OpenDialogiem i zapisać bez otwierania dialogu

1 użytkowników online, w tym zalogowanych: 0, gości: 1