000
10.09.2001, 20:38
Gollum
|
Hiho..
ich hab ein kleines problem.. und kA woran das liegt :) wäre cool wenn ihr mir weiterhelfen könntet.. weil ich bin langsam aber sicher am verzweifeln :) ich brauche einen buffer für nachrichten.. das soll ein FIFO stack sein... dazu verwende ich so eine pseudo linked list.. wobei die elemente direkt miteinander verbunden sind.. well.. hier mal der quellcode dazu: [EDIT:]ok. is blöd zu lesen so wieso da unten ist.. hier nochmal übersichtlicher:->hier<- [/EDIT]
class RecvBuffer{ friend class WinsockBase; private: static int iMsgCounter; //zählt die nachrichten static RecvBuffer* pHead; //zeigt immer auf das letzte objekt in der ll static RecvBuffer* pFirst; //zeigt auf das erste objekt der ll char* szMessage; //hier kommt die nachricht rein RecvBuffer* pNext; //zeigt auf das jeweils nächste objekt in der ll public: RecvBuffer(char* szEntry); //hier wird gleich von konstruktor aus die nachricht in // szMessage geschreiben, und das objekt in die ll gehängt ~RecvBuffer(); //ehm jo. hab ich noch ned eingebaut.. komtm am schluss // wenn alles gehth :) char* GetString(); //das gibt szMessage zurück char* GetNext(); //gibt die nachricht aus dem aktuell ersten objekt in der ll //zurück, und setzt dann den pFirst zeiger auf das pNext'e //objekt in der ll... }; int RecvBuffer::iMsgCounter=0; RecvBuffer* RecvBuffer::pHead; RecvBuffer* RecvBuffer::pFirst;
RecvBuffer::RecvBuffer(char* _szMessage):szMessage(_szMessage){ iMsgCounter++; printf("====== Nachricht #%.4d ======\n",iMsgCounter); if(iMsgCounter==1){ //wenn es die erste nachricht ist printf("Erste Nachricht\n"); // wird pFirst auf this gesetzt... pFirst=this; } printf("this:\t\t %d\n",this); if(iMsgCounter>1){ //wenn es ned die erste nachricht ist wird pHead->pNext=this; // pNext vom vorherigen objekt auf this gesetzt printf("pNext(vorher):\t %d\n", pHead->pNext); } pNext=NULL; //pNext wird für den anfang mla auf NULL gesetzt printf("pHead(vorher):\t %d\n", pHead); pHead=this; //pHead wird jetzt noch auf this gesetzt... printf("pFirst:\t\t %d\n",pFirst); printf("pHead(neues):\t %d\n",pHead); printf("=============================\n",iMsgCounter); }
char* RecvBuffer::GetString(){return szMessage;}
char* RecvBuffer::GetNext(){ if(iMsgCounter>0){ //Wenn noch nachrichten da sind wird das hier ausgeführt iMsgCounter--; //den nachrichtenzähler mal dekrementieren char* szResult = pFirst->GetString();//in den rückgabestring wird die nachricht von pFirst geschreiben printf("ADRESSE VON pFirst: %d",pFirst); if(iMsgCounter>0) //jetzt ist pNext das neue pFirst in der ll sofern es pFirst=pFirst->pNext; // überhaupt noch pNext gibt :) return szResult; }else //wenn keine nachrichten mehr da sind einfach "ERROR"ausgeben... return "ERROR"; }
Nur.. wenn ich jetzt was sende das in den buffer geschreiben werden soll.. zB:
Die gesendeten Nachrichten: Das ist die erste nachricht Das ist die zweite nachricht Das ist die dritte nachricht.....
Und das hier ist die ausgabe die ich oben debugmäßig eingebaut hab.... ====== Nachricht #0001 ====== Erste Nachricht this: 8072584 pHead(vorher): 0 pFirst: 8072584 pHead(neues): 8072584 ============================= ====== Nachricht #0002 ====== this: 8072608 pNext(vorher): 8072608 pHead(vorher): 8072584 pFirst: 8072584 pHead(neues): 8072608 ============================= ====== Nachricht #0003 ====== this: 8080512 pNext(vorher): 8080512 pHead(vorher): 8072608 pFirst: 8072584 pHead(neues): 8080512 =============================
und hier lass ich schließlich einmal alles anzeigen: ADRESSE VON pFirst: [b]8072584[/b]**** Empfangen: Das ist die dritte nachricht..... **** ADRESSE VON pFirst: [b]8072608[/b]**** Empfangen: Das ist die dritte nachricht..... **** ADRESSE VON pFirst: [b]8080512[/b]**** Empfangen: Das ist die dritte nachricht..... ****
WTF?? wieso steht hier überall der inhalt von der dritten nachricht drin??? vor allem passt der pFirst zeiger ja überall ://
hmm. hat jemand sich die mühe gemacht und sich das angeschaut, und weiß warum des ned so geht ?? wär echt genial von euch :)
thx & cyA
--
[url="http://www.thelordoftherings.com/cgi-bin/get-image.pl?ID=alan-lee-058 "]-N/A-[/url]
[url="http://www.microsoft.com/germany/ms/unternehmensinformationen/historie.htm "]Mean cats eat parakeets![/url]
Dieser Beitrag wurde am 10.09.2001 um 20:52 von Gollum bearbeitet.
|
|
Profil || Suche
|