CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - TFileStream - wczytwanie danych z pliku

TFileStream - wczytwanie danych z pliku

dział ogólny

TFileStream - wczytwanie danych z pliku

Nowy postprzez Darek_C++ » środa, 16 listopada 2011, 13:03

Witam ponownie,
co w tym kodzie jest źle, bo użyty w programie zwracał niesamowite anomalie jak np dodanie szczątkowych danych które były pobierane w osobnym wątku co wydawało mi się niemożliwe :)

KOD cpp:     UKRYJ  
        String temp = ExtractFileDir(Application->ExeName) + "\\Unit3.h";
        TFileStream *FStream =  new TFileStream(temp, fmOpenRead);
        FStream->Position = 0;
        char* bufor = new char[FStream->Size];
        FStream->ReadBuffer(bufor, FStream->Size);
        String dane = ((String) bufor).Trim();
        delete FStream; FStream = NULL;
        delete bufor; bufor =NULL ;

        Memo1->Text = dane;
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox

Re: TFileStream - wczytwanie danych z pliku

Nowy postprzez polymorphism » środa, 16 listopada 2011, 14:47

KOD cpp:     UKRYJ  
char* bufor = new char[FStream->Size];
...
String dane = ((String) bufor).Trim();

Jeśli zawartość bufor ma być traktowana jako c-string, musi się kończyć znakiem null, czyli zerem.

I nie:
KOD cpp:     UKRYJ  
delete bufor;

tylko:
KOD cpp:     UKRYJ  
delete[] bufor;
C++ Reference - opis wszystkich klas STL-a i funkcji C.

Za ten post autor polymorphism otrzymał podziękowanie od:
Darek_C++
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: TFileStream - wczytwanie danych z pliku

Nowy postprzez Darek_C++ » środa, 16 listopada 2011, 14:49

@Jeśli zawartość bufor ma być traktowana jako c-string, musi się kończyć znakiem null, czyli zerem.
Czyli, bo nie bardzo wiem jak to '\0'; w kodzie odzwierciedlić przy tworzeniu dynamicznym operatorem new ?

@delete[] bufor;
No właśnie o tym zapomniałem :)
Avatar użytkownika
Darek_C++
Elektrowied
Elektrowied
 
Posty: 454
Dołączył(a): piątek, 25 lipca 2008, 14:33
Podziękował : 66
Otrzymał podziękowań: 4
System operacyjny: Windows XP Pro SP2
Kompilator: Turbo Explorer C++
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości