Ik ben momenteel een class aan het maken voor het inlezen van ID3 tags. Classe lijkt prima te werken, maar ik krijg de volgende error als ik een waarde wil toewijzen die ik gedeclareerd heb in een class:
Dit lijkt me toch moeten werken?
Hier de code die ik gebruik:---------------------------
id3test1.exe - Toepassingsfout
---------------------------
De instructie op 0x00401c00 verwijst naar geheugen op 0xccccccd0. De written-bewerking op het geheugen is mislukt.
Klik op OK om het programma te beëindigen.
Klik op Annuleren om fouten op te sporen in het programma
---------------------------
OK Annuleren
---------------------------
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
| #ifndef __ID3_H_ #define __ID3_H_ #include <string> #include <fstream> #include <iostream> using namespace std; //============================================================ // Structures //============================================================ // The ID3 Tag typedef struct { int iVersion; char szTitle[30]; char szArtist[30]; char szAlbum[30]; char szYear[4]; char szComment[30]; } ID3Tag; //============================================================ // Enumeration //============================================================ enum { TYPE_ID3V1 = 0, TYPE_ID3V2 }; //============================================================ // Class //============================================================ class ID3Reader { private: ID3Tag *m_sTag; int m_iType; public: ID3Reader(); bool ReadFile( const char* szFileName ); }; #endif //__ID3_H_ |
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
| #include "id3.h" ID3Reader::ID3Reader() { } bool ID3Reader::ReadFile( const char* szFileName ) { char buf[3]; string sID; ifstream fp( szFileName, ios::binary | ios::in ); if( !fp.is_open() ) { cout << "Error opening " << szFileName << ".\n"; return false; } fp.seekg( -128, ios::end ); fp .get( buf, 4 ); sID = buf; if( (sID.substr( 0, 3 )) != "TAG" ) // Check ID3v1 { if( (sID.substr( 0, 3 )) != "ID3" ) // Check ID3v2 { cout << szFileName << " does not have a valid ID3 Tag.\n"; return false; } else { cout << "ID3v2 tag found.\n"; } } else { cout << "ID3v1 tag found.\n"; m_iType = TYPE_ID3V1; // Hier zit de fout dus } fp.close(); return true; } |
Dit lijkt me toch moeten werken?
[ Voor 11% gewijzigd door AuC op 10-10-2004 21:37 ]