ofstream i Edit1->Text.

0

Witam Wszystkich forumowiczów.

Proszę o podpowiedz w rozwiązaniu mojego problemu.

Mam kawałem kodu jak poniżej.
Chce w pliku zapisać zawartość pola Edit_nr->Text.t_str().
Faktycznie ten kawałek kodu zapisuje do pliku tylko jakieś śmieci.
Co robię źle?

	String do_bash = "C:\\"+Edit_nr->Text+"_"+Edit_opis->Text+"\\bash\\do_bash.txt";
	String nr_opis = Edit_nr->Text.t_str();
	
	//std::string oznaczenie = Edit_nr->Text.c_str();

	if (!ForceDirectories("c:\\"+Edit_nr->Text+"_"+Edit_opis->Text+"\\bash"))
	{
		MessageDlg("Nie mogę zrobić katalogu", mtError, TMsgDlgButtons() << mbOK, NULL);
		return;
	}

	ofstream my_do_bash (+do_bash.c_str());
	if (my_do_bash.is_open())
	{
		my_do_bash << nr_opis.t_str();
		my_do_bash.close();
	}
0

W polu Edit_nr->Text pisuje cyfry

Dziwny + to łączenie zmiennych

1

Tak jak kolega wcześniej napisał. Niepotrzebnie mieszasz różne typy stringów. Osobiście jeśli używam komponentów VCL, to i używam tam stringów VCL'a. Z nimi współpracuje ta klasa http://docwiki.embarcadero.com/Libraries/Rio/en/System.Classes.TFileStream powinna rozwiązać Twój problem. Dodatkowo takie linie jak ta:

String nr_opis = Edit_nr->Text.t_str();

Są zupełnie bez sensu. Co to ma niby robić?

Tak samo zaszywasz na stałe w programie pewne rzeczy. Jeszcze zapisywanie na C:\ mogę przeboleć. Jednak na większości domyślnie skonfigurowanych systemach Windows (7-ka i późniejsze) takie coś nie powiedzie się. Dlaczego kleisz ścieżki w różnych miejscach programu? Mam na myśli te dwa miejsca:

    String do_bash = "C:\\"+Edit_nr->Text+"_"+Edit_opis->Text+"\\bash\\do_bash.txt"; \\\\\\\ tutaj tworzysz ścieżkę
    String nr_opis = Edit_nr->Text.t_str();

    //std::string oznaczenie = Edit_nr->Text.c_str();

    if (!ForceDirectories("c:\\"+Edit_nr->Text+"_"+Edit_opis->Text+"\\bash"))   \\\\\\\ tutaj ponownie tworzysz ścieżkę
    {
        MessageDlg("Nie mogę zrobić katalogu", mtError, TMsgDlgButtons() << mbOK, NULL);
        return;
    }

Takie powtórzenia w kodzie powodują, że łatwiej o pomyłki. Co jeśli zmienisz z partycji C:\ na D:? w kilku miejscach będziesz musiał zmieniać program. Pomyśl nad tym aby nie duplikować logiki oraz kodu. Możliwości masz co najmniej dwie.

0

To jest przykład, próbowałem jakoś to połączyć.

Dzięki za sugestię.

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