Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

Sajter 26 Lip 2010 15:09 1908 10
  • #1 26 Lip 2010 15:09
    Sajter
    Poziom 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ć??

    0 10
  • #2 26 Lip 2010 15:41
    McMonster
    Poziom 32  

    Dopisz na górze pliku, zaraz pod podobnymi, taką linię:

    Code:
    #include <fstream>


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

    0
  • #3 26 Lip 2010 15:50
    lukagrom
    Poziom 15  

    "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

    0
  • #4 27 Lip 2010 16:09
    Sajter
    Poziom 10  

    McMonster napisał:
    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...

    Cytat:
    "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 .

    0
  • #5 27 Lip 2010 16:13
    Dżyszla
    Poziom 42  

    Sajter napisał:
    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?

    0
  • #6 27 Lip 2010 16:27
    McMonster
    Poziom 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().

    0
  • #7 27 Lip 2010 18:18
    Sajter
    Poziom 10  

    Dżyszla napisał:
    Sajter napisał:
    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
    Cytat:
    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??

    0
  • Pomocny post
    #8 27 Lip 2010 23:27
    Thorr
    Poziom 9  

    Sajter napisał:

    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

    0
  • #9 28 Lip 2010 23:07
    Sajter
    Poziom 10  

    Dzieki thorr a jest cos podobnego z zapisem??
    Bo znów się bawić z fstreamem nie chce

    0
  • Pomocny post
    #10 29 Lip 2010 00:36
    Thorr
    Poziom 9  

    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

    0
  • #11 29 Lip 2010 12:26
    Sajter
    Poziom 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!

    0