Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

dział ogólny

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » niedziela, 17 stycznia 2010, 16:21

W plikach pomocy można sprawdzić jakich bibliotek wymagają, funkcje, metody, klasy itp.

Kod: Zaznacz cały
#include <string.h>
#include <stdio.h>
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez mko000 » niedziela, 17 stycznia 2010, 16:34


[BCC32 Error] Unit1.cpp(26): E2451 Undefined symbol 'wstring'
[BCC32 Error] Unit1.cpp(26): E2379 Statement missing ;
[BCC32 Error] Unit1.cpp(28): E2451 Undefined symbol 'locale'
[BCC32 Error] Unit1.cpp(28): E2379 Statement missing ;
[BCC32 Error] Unit1.cpp(29): E2304 Constant variable 'ctype' must be initialized
[BCC32 Error] Unit1.cpp(29): E2141 Declaration syntax error
[BCC32 Error] Unit1.cpp(43): E2451 Undefined symbol 'wstr'
[BCC32 Warning] Unit1.cpp(44): W8012 Comparing signed and unsigned values
[BCC32 Error] Unit1.cpp(46): E2451 Undefined symbol 'ct'
[BCC32 Error] Unit1.cpp(47): E2188 Expression syntax
[BCC32 Warning] Unit1.cpp(50): W8004 'wc' is assigned a value that is never used
[BCC32 Warning] Unit1.cpp(60): W8004 'iBytesWrite' is assigned a value that is never used


Po dodaniu tych bibliotek nadal nic sie nie zmienia
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » niedziela, 17 stycznia 2010, 17:01

:w :w :w

Nie wiem co ty robisz źle, ale u mnie w C++Builder 2010 to działa bez żadnych problemów.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » niedziela, 17 stycznia 2010, 19:02

Już wiem w czym tkwi błąd! Źle podałem biblioteki, które należy dołączyć. Te które podałem są akurat zbędna, ale w pliku nagłówkowym (np. Unit1.h) musisz włączyć bibliotekę:

Kod: Zaznacz cały
#include <fstream.h>

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
mko000
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Witold » niedziela, 17 stycznia 2010, 21:23

spróbuj dodać:

Kod: Zaznacz cały
#include <string>
#include <locale>

using namespace std;

Za ten post autor Witold otrzymał podziękowanie od:
mko000
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    Windows XPOpera

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez mko000 » niedziela, 17 stycznia 2010, 23:39

OK po dodaniu:
Kod: Zaznacz cały
#include <string.h>
#include <fstream.h>
#include <locale>

Program się kompiluje ale błedy jakieś są:

[BCC32 Warning] Unit1.cpp(47): W8012 Comparing signed and unsigned values
[BCC32 Warning] Unit1.cpp(63): W8004 'iBytesWrite' is assigned a value that is never used


Jutro sprawdzę to na 2010.
Avatar użytkownika
mko000
Homos antropiczny
Homos antropiczny
 
Posty: 74
Dołączył(a): sobota, 19 grudnia 2009, 00:30
Podziękował : 35
Otrzymał podziękowań: 0
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder 2010
    Windows XPChrome

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » poniedziałek, 18 stycznia 2010, 10:19


[BCC32 Warning]


Warning - znaczy: ostrzeżenie.

To nie błędy tylko ostrzeżenia.



Comparing signed and unsigned values - porównywane są wartości signed i usigned

Ostrzeżenie pojawia się dlatego, że zmienna i jest typu unsigned a zmienna iBytesRead jest typu int więc porównywane są ze sobą różne typy danych.

odnosi się do tej linii:


Kod: Zaznacz cały
for(unsigned i = 0; i < iBytesRead; ++i)


zamień na:

Kod: Zaznacz cały
for(int i = 0; i < iBytesRead; ++i)


można tez pozostawić tą linię tak jak jest, a zamienić typ zmiennej iBytesRead z int na unsigned,




'iBytesWrite' is assigned a value that is never used - 'iBytesWrite' ma przypisaną wartość, ale nigdy nie zostało użyte.

Ostrzeżenie pojawia się dlatego, że zmienna iBytesWrite zostaje wypełniona wartością, ale nigdy więcej nie jest używana, więc wydaje się być zbędna. Jest to prawdą, zmienna pozostała jeszcze z wcześniejszych eksperymentów, gdy kod miał nieco inną postać.

usuń tą linię:

Kod: Zaznacz cały
int iBytesWrite = 0;




spróbuj dodać:

Kod: Zaznacz cały
    #include <string>
    #include <locale>

    using namespace std;



W C++Builder 2010 te biblioteki są zbędne podobnie jak te, które podałem we wcześniejszym poście, wystarczy dodać tylko fstream.h, gdyż ta biblioteka zawiera już wszystkie niezbędne biblioteki.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez polymorphism » poniedziałek, 18 stycznia 2010, 11:53

Jeśli mowa o tym kodzie, popraw jeszcze tę linię:
Kod: Zaznacz cały
wstr[i] += wc;

na
Kod: Zaznacz cały
wstr += wc;





Według standardu, przy załączaniu nagłówków standardowej biblioteki C++, nie dołącza się rozszerzenia .H, podajesz tylko samą nazwę. Czyli nie:
Kod: Zaznacz cały
#include <fstream.h>
#include <string.h>

tylko
Kod: Zaznacz cały
#include <fstream>
#include <string>
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2263
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 210
System operacyjny: Windows 8.1
Windows 10
Linux Mint 19
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Witold » poniedziałek, 18 stycznia 2010, 12:32

Cyfrowy Baron napisał(a):
W C++Builder 2010 te biblioteki są zbędne podobnie jak te, które podałem we wcześniejszym poście, wystarczy dodać tylko fstream.h, gdyż ta biblioteka zawiera już wszystkie niezbędne biblioteki.


A jaki masz powód żeby dodać fstream.h ? Korzystasz z strumieni C++ ?
#include <string> jest dla wstring, #include <locale> dla locale.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    Windows XPOpera

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » poniedziałek, 18 stycznia 2010, 13:04

A jaki masz powód żeby dodać fstream.h ? Korzystasz z strumieni C++ ?


No ja akurat w tym projekcie testowałem kilka porad i używałem strumieni, dlatego wystarczyło użyć tej biblioteki, inne były zbędne, co mnie trochę zmyliło. Ponieważ prezentowany tutaj kod nie korzysta ze strumieni, to rzeczywiście lepiej jest włączyć twoje biblioteki.




Według standardu, przy załączaniu nagłówków standardowej biblioteki C++, nie dołącza się rozszerzenia .H, podajesz tylko samą nazwę. Czyli nie:

Kod: Zaznacz cały
    #include <fstream.h>
    #include <string.h>


tylko

Kod: Zaznacz cały
    #include <fstream>
    #include <string>


No niestety, tutaj trzeba załączyć #include <fstream.h>, w przeciwnym razie kod się nie kompiluje. Przy zapisie #include <fstream> wyskakują takie same błędy jak przy braku biblioteki fstream.h. Co się zaś tyczy biblioteki string.h to przy zapisie #include <string> działa prawidłowo.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Witold » poniedziałek, 18 stycznia 2010, 13:12

Cyfrowy Baron napisał(a):
No niestety, tutaj trzeba załączyć #include <fstream.h>, w przeciwnym razie kod się nie kompiluje. Przy zapisie #include <fstream> wyskakują takie same błędy jak przy braku biblioteki fstream.h. Co się zaś tyczy biblioteki string.h to przy zapisie #include <string> działa prawidłowo.


using namespace std; ?
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    Windows XPOpera

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » poniedziałek, 18 stycznia 2010, 13:23

Tak. W połączeniu z using namespace std można dodać wpis #include <fstream>.

To jednak zastanawiające, gdyż w pliku fstream.h znalazłem taki wpis:

Kod: Zaznacz cały
#if !defined(__USING_STD_NAMES__) && defined(__cplusplus)
using namespace std;
#endif /* __USING_STD_NAMES__ */


więc w zasadzie powinno działać bez using namespace std przy zapisie #include <fstream>. Tak mi się wydaje.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Witold » poniedziałek, 18 stycznia 2010, 16:20

Cyfrowy Baron napisał(a):więc w zasadzie powinno działać bez using namespace std przy zapisie #include <fstream>. Tak mi się wydaje.


W katalogu includ’ów są pliki "fstream" i "fstream.h". Zdaje się że w pliku "fstream" nie ma takiego wpisu ja wyżej.
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    Windows XPOpera

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Cyfrowy Baron » poniedziałek, 18 stycznia 2010, 17:30

Jest w katalogu boost, czyli należy do grupy bibliotek boost, dlatego zastanawia mnie zasadność używania biblioteki fstream zamiast fstream.h.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Wczytywanie plików binarnych do obiektu Memo - wg. pomysłu k

Nowy postprzez Witold » poniedziałek, 18 stycznia 2010, 20:32

Cyfrowy Baron napisał(a):Jest w katalogu boost, czyli należy do grupy bibliotek boost, dlatego zastanawia mnie zasadność używania biblioteki fstream zamiast fstream.h.


A w katalogu include\dinkumware nie ma tych plików: "fstream" , "fstream.h" ?
Avatar użytkownika
Witold
Konstrukcjonista
Konstrukcjonista
 
Posty: 223
Dołączył(a): piątek, 29 sierpnia 2008, 10:53
Podziękował : 1
Otrzymał podziękowań: 14
Kompilator: bcb6, Turbo C++ Explorer
    Windows XPOpera

Poprzednia strona

  • 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 2 gości

cron