Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Borland C++ Builder 6 -funkcja open();

26 Jul 2010 15:09 2115 10
  • Level 10  
    mam problem z odczytaniem z pliku mianowicie wyskakuje mi błąd
    Code:
    undefined symbol 'open'

    Code:
    //---------------------------------------------------------------------------
    

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {

       ifstream infile;
       infile.open ("dane.txt");
       char dane[1000];
       open.read(sizeof(dane));
       open>>Memo1;
       open.close();


    }
    //---------------------------------------------------------------------------

    Wiecie jak to rozwiązać??
  • Level 32  
    Dopisz na górze pliku, zaraz pod podobnymi, taką linię:

    Code:
    #include <fstream>


    To jest biblioteka, w której znajduje się open().
  • Level 16  
    "read" ma dwa argumenty, poza tym u Ciebie zmienną do działania na pliku jest "infile" a nie "open" .
    Tutaj jest to ładnie przestawione:
    Link
    Oczywiście wymagana biblioteka - fstream.h
  • Level 10  
    McMonster wrote:
    Dopisz na górze pliku, zaraz pod podobnymi, taką linię:

    Code:
    #include <fstream>


    To jest biblioteka, w której znajduje się open().

    nie jestem tempakiem i to jest . Jeżeli nie miałbym tego to by wszystko sie posypało a nie mam problem z odczytaniem tylko z tym Open...

    Quote:
    "read" ma dwa argumenty, poza tym u Ciebie zmienną do działania na pliku jest "infile" a nie "open" .
    Tutaj jest to ładnie przestawione:

    Czyli jak ma to wyglądać?? Bo chce by program odczytał z pliku i przepisał wszystko do memo1 . Nie wiem czy dobrze poza tym to robie .
  • Level 42  
    Sajter wrote:
    nie jestem tempakiem i to jest . Jeżeli nie miałbym tego to by wszystko sie posypało a nie mam problem z odczytaniem tylko z tym Open...

    to moment - nie masz problemu z odczytem, tylko z open? nie rozumiem... i w której linijce ten bład?
  • Level 32  
    Nie stwierdziłem, że jesteś tempakiem i nie miałem w ogóle takiego zamiaru. Nie przyjrzałem się całej treści funkcji i nie założyłem, że to właśnie ten podstawowy błąd, ale się myliłem.

    Kolega lukagrom już to wyjaśnił, chodziło mu o to, że deklarujesz zmienną infile i za jej pomocą otwierasz plik, ale dalej odwołujesz się do open, które jest funkcją do otwierania pliku i nie ma nic wspólnego z już otwarty plikiem, a powinieneś do infile.

    Dodatkowo funkcja read przyjmuje dwa argumenty, pierwszy to gdzie zapisać odczytane dane, a drugi, to ile odczytać, czyli powinno być przykładowo:

    Code:
       ifstream infile;
    
       int rozmiar = 1000; //dla uproszczenia zmienna z rozmiarem wczytywanych danych
       infile.open ("dane.txt");
       char *dane = new char[rozmiar]; //wskaźnik do łańcucha znaków zamiast statycznej tablicy
       infile.read(dane, rozmiar); //"infile" zamiast "open" oraz wskaźnik do łańcucha znaków i ustalona liczba znaków do odczytania
       infile.close(); //zamykać plik powinno się jak najszybciej
       dane>>Memo1;


    Co zresztą możesz zobaczyć w podanym wcześniej linku, gdzie jest przykład użycia read().
  • Level 10  
    Dżyszla wrote:
    Sajter wrote:
    nie jestem tempakiem i to jest . Jeżeli nie miałbym tego to by wszystko sie posypało a nie mam problem z odczytaniem tylko z tym Open...

    to moment - nie masz problemu z odczytem, tylko z open? nie rozumiem... i w której linijce ten bład?

    Przeczytaj w pierwsze code w moim poscie a sie kapmiesz o co chodzi;P
    Quote:
    ifstream infile;
    int rozmiar = 1000; //dla uproszczenia zmienna z rozmiarem wczytywanych danych
    infile.open ("dane.txt");
    char *dane = new char[rozmiar]; //wskaźnik do łańcucha znaków zamiast statycznej tablicy
    infile.read(dane, rozmiar); //"infile" zamiast "open" oraz wskaźnik do łańcucha znaków i ustalona liczba znaków do odczytania
    infile.close(); //zamykać plik powinno się jak najszybciej
    dane>>Memo1;

    Rozumiem ze pod to mam podstawić swoje zmienne??
    Dasz kod jaki powinienem wpisać żeby wkońcu to zadziałało??
  • Helpful post
    Level 10  
    Sajter wrote:

    Czyli jak ma to wyglądać?? Bo chce by program odczytał z pliku i przepisał wszystko do memo1 . Nie wiem czy dobrze poza tym to robie .

    słowo kluczowe wszystko
    nie wiem po co się bawić w fstream skoro i tak chcesz przepisać wszystko
    Code:

    Memo1->Lines->LoadFromFile("dysk:\\katalog\\plik");

    bądź jeśli plik jest w tym samym katalogu
    Code:

    Memo1->Lines->LoadFromFile("plik");


    a jeśli tak strasznie chcesz sie bawić z fstream to proponuje wykorzystać
    Code:

     
       {
       ifstream infile("dysk:\\katalog\\plik");
       
       if (!infile) return;//przerwanie w przypadku braku obiektu
       //odczyt liniih aż do konca  czyli infile.eof()
       while (!infile.eof())
       {
          infile.getline(buff, sizeof(buff));
       }
       //zamykanie pliku
       infile.close();
    }


    pozdrawiam
    Thorr
  • Level 10  
    Dzieki thorr a jest cos podobnego z zapisem??
    Bo znów się bawić z fstreamem nie chce
  • Helpful post
    Level 10  
    jak zrobisz Memo1->Lines-> i analogicznie myśląc wpisujesz SaveToFile
    a najprościej w takich przypadkach użyć
    google.pl -> "c++ builder memo zapisywanie do pliku"

    pozdrawiam
    Thorr
  • Level 10  
    google.pl -> "c++ builder memo zapisywanie do pliku" no wlasnie szukałem i dupa ... Jedynei co znalazłem to niepotrzebne głupoty . Dobra dzięki temat do zamknięcia!