Zapisywanie zawartości Label do pliku .txt

0

Witam.
Chcę zapisać zawartość Label do pliku .txt funkcją SaveToFile ().

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    Label1 -> Caption -> SaveToFile ("c/Timer/plik.txt");
}

Wyskakuje mi "Pointer to structure required on left side of -> or ->
Gdy stworzę wskaźnik:

AnsiString Content = Label1 -> Caption;
AnsiString *ContPoint = &Content;
Label1 -> *ContPoint -> SaveToFile ("c/Timer/plik.txt");

To wyskakuje mi Member identifier expected oraz 'ContPoint' is assigned a value that is never used
Co zrobić w takiej sytuacji?

4

Poczytać jakiś kurs, bo najwyraźniej nie rozumiesz czym są wskaźniki, wartości oraz klasy.

Label1->Caption.SaveToFile("c/Timer/plik.txt");`

powinno działać. Alternatywnie:

AnsiString *ContPoint = &Label1->Caption;
ContPoint->SaveToFile("c/Timer/plik.txt");

btw: oszczędzaj spacje, mało czytelnie się robi jak stawiasz obok -> lub przed nawiasami.

0

Pierwszej metody już próbowałem wcześniej, ale wyskakiwały mi takie errory:
SaveToFile is not a member of AnsiString
2 metoda również nie działa:
Must take address of a memory location
'SaveToFile' is not a member of 'AnsiString'
'ContPoint' is assigned a value that is never used

2

W tym momencie odesłałbym do kursu angielskiego. Próbujesz wywołać metodę, która nie istnieje. Skąd wziąłeś to SaveToFile?

0

Faktycznie, masz rację, głupi błąd :P Brałem to z SaveDialog (tak myślałem). W takim razie jak zapisać zawartość Label? Metodą z SaveDialog? SaveToFile chyba jest tylko w RichEdit i Memo.

3

Użyłbym zwykłych fstreamów z C++. AnsiString ma metodę c_str().

Swoją drogą: dlaczego BCB, a nie Qt czy coś innego nowoczesnego?

0

Masz na myśli stworzenie wskaźnika typu fstream?

fstream *ContPoint = &Label1->Caption;

I potem analogicznie

ContPoint->c.str("c/Timer/plik.txt");

Używam BCB ponieważ Pan Zelent w swoich poradnikach zaczął go używać. Myślę, że jak już w miarę ogarnę BCB to przerzucę się na coś innego.

1

Ok, kolejny błąd. Kursów C++ pana Z. nie polecamy (https://4programmers.net/Forum/1226486). A BCB6 ma 14 lat, wiesz...

Co do "tworzenie wskaźnika typu fstream" - serio, weź się za kurs, ale inny.

http://en.cppreference.com/w/cpp/io/basic_ofstream

ofstream file("plik.txt");
file << Label1->Caption.c_str();
0

Ok. Zaincludowałem bibliotekę "fstream.h"
Wygląda to tak:

void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    ofstream file("c/Timer/plik.txt");
    file << Label1->Caption.c_str();
}

Odpalam program, wyłączam. Wchodzę w dysk c, lecz nie ma tam żadnego katalogu Timer.

3
  1. Nie używaj niestandardowych bibliotek. <fstream> a nie fstream.h.
    #C/Timer/plik.txt nie jest poprawną ścieżką (nie ma :).
  2. fstream nie utworzy Ci drzewa katalogów. Jak się nie uda otworzyć pliku do zapisu to się nie uda.

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