Toon posts:

[C|W32] Assignment werkt niet

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een programma wat MP3 moet checken. Nu wordt de data van een MP3 in een struct gezet en bewaard gedurende het programma.

C:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
BOOL ListView_ScanMP3(int iIndex) {
    file_info * fInfo;
    ...
    MpckFileEnt * fe=(MpckFileEnt *)VectorGet(curVector, iIndex);
    ... 
    fInfo=(file_info *)HeapAlloc(GetProcessHeap(), 0, sizeof(file_info));
    if (fInfo==NULL) FatalAppExit(0, "Out Of Memory");
    
    FillMemory(fInfo, sizeof(file_info), 0);
    ... [doe iets met fInfo] ...
    (fe->FileInfo)=fInfo;
    iRes=UpdateItem((MpckDirEnt *)fe, iIndex);

    return TRUE;
}


Nu is het zo dat als ik met de debugger (VC++) op regel 12 sta, regel 11 niet uitgevoerd lijkt te zijn! fe->FileInfo blijft NULL, terwijl fInfo duidelijk een geldige waarde heeft. Als ik nu met de debugger regel 11 in de "QuickWatch" zet en op Recalculate druk, komt wel de goede waarde in fe->FileInfo te staan en werkt de rest van het programma naar behoren.

Ik denk dat dit een stack/buffer/heap overflow of iets dergelijks fouts is, maar ik weet niet waar ik het zoeken moet. Iemand een idee?

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
Is file_info.FileInfo een char* ?
Zoja, dan moet je strcpy (of een van de varianten) gebruiken om te assignen ipv = .

[ Voor 11% gewijzigd door whoami op 03-03-2004 19:39 ]

https://fgheysels.github.io/


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Wat is file_info, een struct of een typedef ? Zelfde voor MpckFileEnt ?

Is fe geldig na die VectorGet ?

Als je op regel 12 staat ( dus nog niet uitgevoerd ) is fInfo dan non-NULL?
Zo niet, dan gebeurt er iets met fInfo in het stuk dat je niet hebt gepost.

Waarom staan die haken om de toekenning aan fe->FileInfo ?


BTW whoami, FileInfo is een member van MpckFileEnt, niet van file_info. :)

[ Voor 14% gewijzigd door farlane op 03-03-2004 19:58 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:00

.oisyn

Moderator Devschuur®

Demotivational Speaker

Maar wat is je probleem nu eigenlijk? Je zegt dat die regel niet wordt uitgevoerd als je kijkt met de debugger, maar ik neem aan dat er in de eerste plaats iets fout ging waardoor jij besloot even met de debugger een kijkje te nemen. Wat was er dan?

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:40
farlane schreef op 03 maart 2004 @ 19:57:
BTW whoami, FileInfo is een member van MpckFileEnt, niet van file_info. :)
Hmm, verkeerd gekeken.

https://fgheysels.github.io/


Verwijderd

Topicstarter
C:
1
2
3
4
5
typedef struct { /* file info */
    CFILE * fp;     /* filepointer to this file     */
    char * filename;    /* filename of this file        */
....
} file_info;


MpckFileEnt is ook een typedef van een struct _MpckFileEnt.
fInfo heeft vanaf regel 6 gewoon een geldige waarde.
De haken om fe->FileInfo staan er omdat ik dacht dat het iets uit zou maken, maar dat deed het dus niet.

Het probleem was dat het sorteren niet werkte. De sorteerfunctie moet namelijk in fe->FileInfo kijken als deze niet NULL is, maar dat is hij dus altijd omdat de assignment niet werkt.

Verwijderd

Topicstarter
Schop.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 22-05 16:53
Ik kan je zonder meer info echt niet helpen. Kun je die src online zetten zodat we het ding kunnen bekijken ?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.

Pagina: 1