• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zapis do pliku. Działa na jednym komputerze, na innym już nie.

Object Storage Arubacloud
0 głosów
216 wizyt
pytanie zadane 25 grudnia 2018 w C i C++ przez Karol098 Nowicjusz (140 p.)

Witam,

Co może być powodem następującego problemu.

Piszę sobie program, który ma zapisywać jakiś tekst do pliku .txt po naciśnięciu przycisku Button1 (C++ Builder).

Kod (myślę, że bez zarzutu):

//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ofstream plik;
  plik.open("plik.txt");
  plik<<"blabla";
  plik.close();
}
//---------------------------------------------------------------------------

Wciskam przycisk Button1 i... nic się nie dzieje. Plik txt nigdzie się nie zapisuje.

Ten sam program kopiuję i uruchamiam na drugim komputerze i... wszystko działa jak należy.

Przeinstalowałem środowisko na pierwszym komputerze i nic, dalej to samo.

 

1 odpowiedź

0 głosów
odpowiedź 25 grudnia 2018 przez Bosswell Nałogowiec (36,470 p.)
Może to kwestia uprawnień do folderu ? Spróbuj nadac folderowi prawa do zapisu i odczytu.
komentarz 25 grudnia 2018 przez Karol098 Nowicjusz (140 p.)
Niestety to nie to. Folder ma wszelkie prawa.
komentarz 25 grudnia 2018 przez Bosswell Nałogowiec (36,470 p.)

https://stackoverflow.com/questions/15667530/fstream-wont-create-a-file

Musisz dodać drugi argument do funkcji open, aby utworzyć plik jeśli nie istnieje. Na pierwszym systemie musiałeś ten plik wcześniej utworzyć ręcznie.

komentarz 26 grudnia 2018 przez Karol098 Nowicjusz (140 p.)
Faktycznie, ale nadal nie działa.
komentarz 26 grudnia 2018 przez j23 Mędrzec (194,920 p.)

@Bosswell, nie musi. Tworzy strumień wyjściowy, który stworzy plik, jeśli go nie ma na dysku, albo nadpisze istniejący.

 

@Karol098, może po prostu tworzy się w innym miejscu. Dodaj odpowiedni warunek z messageboxem i będziesz wiedział, czy faktycznie jest jakiś błąd przy otwieraniu strumienia.

Podobne pytania

0 głosów
1 odpowiedź 148 wizyt
pytanie zadane 1 grudnia 2016 w Java przez niezalogowany
0 głosów
2 odpowiedzi 355 wizyt
pytanie zadane 31 stycznia 2016 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 163 wizyt
pytanie zadane 3 lutego 2016 w C i C++ przez niezalogowany

92,555 zapytań

141,403 odpowiedzi

319,555 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...